ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录

一、搭建SkyWalking

1.1 版本选择

1.2 下载安装

1.3 配置启动

1.4 SkyWalking UI介绍

二、Springboot项目使用

2.1 Agent下载

2.2 Agent配置skywalking oap地址

2.3 IDEA配置Agent地址

2.4 生成的ES索引介绍

三、在kibana上查看日志

四、问题和解决

3.1 日志显示没有按照时间排序

3.2 索引模版失效


一、搭建SkyWalking

1.1 版本选择

项目的JDK版本使用的JDK8,SkyWalking 9.x版本要求JDK版本至少为11,因此选择8.*,这里选择  8.9.1

开始安装9.4版本后查看启动日志报错:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/skywalking/oap/server/starter/OAPServerStartUp has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

版本问题:kyWalking需要JDK11或JDK17。如果您使用的Java版本只识别52.0以下的类文件版本,则意味着您使用的是Java 8。您需要将Java版本升级到JDK11或JDK17来解决这个问题。下面是启动后端的步骤:确保系统上安装了JDK11或JDK17。

1.2 下载安装

在虚拟机上安装。

下载链接:https://archive.apache.org/dist/skywalking/ 下选择版

wget https://archive.apache.org/dist/skywalking/8.9.1/apache-skywalking-apm-8.9.1.tar.gz
tar -xzf apache-skywalking-apm-8.9.1.tar.gz

1.3 配置启动

修改配置端口:apache-skywalking-apm-bin/webapp/webapp.yml

默认8080,修改为8100

server:
  port: 8100

spring:
    discovery:
      client:
        simple:
          instances:
            oap-service:
              - uri: http://192.168.64.128:12800//修改为ip

修改apache-skywalking-apm-bin/config/application.yml配置:

选择elasticsearch进行存储

storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    namespace: ${SW_NAMESPACE:"hbintrade-framework"}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.64.128:9200} #注意改成ip
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:500}
    socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
    numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
    user: ${SW_ES_USER:"elastic"} # es用户名密码
    password: ${SW_ES_PASSWORD:"123456"}
    trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
    trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
    secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
    dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1} # Shard number of new indexes
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} # Replicas number of new indexes
    # Super data set has been defined in the codes, such as trace segments.The following 3 config would be improve es performance when storage super size data in es.
    superDatasetDayStep: ${SW_SUPERDATASET_STORAGE_DAY_STEP:-1} # Represent the number of days in the super size dataset record index, the default value is the same as dayStep when the value is less than 0
    superDatasetIndexShardsFactor: ${SW_STORAGE_ES_SUPER_DATASET_INDEX_SHARDS_FACTOR:5} #  This factor provides more shards for the super data set, shards number = indexShardsNumber * superDatasetIndexShardsFactor. Also, this factor effects Zipkin and Jaeger traces.
    superDatasetIndexReplicasNumber: ${SW_STORAGE_ES_SUPER_DATASET_INDEX_REPLICAS_NUMBER:0} # Represent the replicas number in the super size dataset record index, the default value is 0.
    indexTemplateOrder: ${SW_STORAGE_ES_INDEX_TEMPLATE_ORDER:0} # the order of index template
    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:5000} # Execute the async bulk record data every ${SW_STORAGE_ES_BULK_ACTIONS} requests
    # flush the bulk every 10 seconds whatever the number of requests
    # INT(flushInterval * 2/3) would be used for index refresh period.
    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:15}
    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
    resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
    profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
    oapAnalyzer: ${SW_STORAGE_ES_OAP_ANALYZER:"{\"analyzer\":{\"oap_analyzer\":{\"type\":\"stop\"}}}"} # the oap analyzer.
    oapLogAnalyzer: ${SW_STORAGE_ES_OAP_LOG_ANALYZER:"{\"analyzer\":{\"oap_log_analyzer\":{\"type\":\"standard\"}}}"} # the oap log analyzer. It could be customized by the ES analyzer configuration to support more language log formats, such as Chinese log, Japanese log and etc.
    advanced: ${SW_STORAGE_ES_ADVANCED:""}

 启动oap:

./bin/oapService.sh

查看启动日志:

apache-skywalking-apm-bin/logs/skywalking-oap-server.log

启动ui:

./bin/webappService.sh

访问:ip:8100/

1.4 SkyWalking UI介绍

Skywalking-UI 使用说明_skywalking-booster-ui-CSDN博客

二、Springboot项目使用

2.1 Agent下载

下载链接:Index of /dist/skywalking/java-agent 选择对应版本

将其放到本地,Springboot项目也在本地。

2.2 Agent配置skywalking oap地址

skywalking-agent\config\agent.config

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.64.128:11800}

2.3 IDEA配置Agent地址

启动项目后查看UI上面已经有日志了(注意筛选时间选择)

2.4 生成的ES索引介绍

  • *-log 是生成的项目日志
  • _segment 索引是用于存储跟踪数据的片段
  • _metrics-* 索引记录各种性能指标
  • *_relation_client_side 索引记录服务实例之间、端点之间的关系数据

三、在kibana上查看日志

在UI上看到日志不太方便,详细信息都要点进去查看,可以在kibana上看的更直观一些。

创建索引模式时,发现没有可选的时间戳进行时间筛选,导致日志显示也没有按照时间排序,是因为默认的索引模版timestamp字段默认是Long类型,需要转成date类型

注意:

  • 索引模式需要匹配上
  • 索引别名必须写,否则skywalking UI上日志查询会报错
  • skywalking内有内置模版,需要删除旧模版创建新模版(或者将新模版的优先级>100,这个没有测试)
  • 在Elasticsearch 7.x及更早版本中,_template端点用于管理索引模板。然而,从Elasticsearch 7.8版本开始,官方推荐使用新的索引模板API(即_index_template),因为旧版本的模板API将在未来的版本中弃用。

查询旧模版:

GET _index_template/

 创建索引模版:

PUT _index_template/log_template_name  
{
    "priority": 101,
    "index_patterns": [
        "hbintrade-framework_log-*"
    ],
    "template": {
        "mappings": {
            "properties": {
                "content": {
                    "type": "keyword",
                    "copy_to": [
                        "content_match"
                    ]
                },
                "content_match": {
                    "type": "text"
                },
                "content_type": {
                    "type": "integer",
                    "index": false
                },
                "endpoint_id": {
                    "type": "keyword"
                },
                "endpoint_name": {
                    "type": "keyword",
                    "copy_to": [
                        "endpoint_name_match"
                    ]
                },
                "endpoint_name_match": {
                    "type": "text"
                },
                "service_id": {
                    "type": "keyword"
                },
                "service_instance_id": {
                    "type": "keyword"
                },
                "span_id": {
                    "type": "integer"
                },
                "tags": {
                    "type": "keyword"
                },
                "tags_raw_data": {
                    "type": "binary"
                },
                "time_bucket": {
                    "type": "date",
                    "format": "yyyyMMddHHmmss"
                },
                "timestamp": {
                    "type": "date"
                },
                "trace_id": {
                    "type": "keyword"
                },
                "trace_segment_id": {
                    "type": "keyword"
                },
                "unique_id": {
                    "type": "keyword"
                }
            }
        },
        "aliases": {
            "hbintrade-framework_log": {

            }
        }
    }
}

删除log索引,再次生成索引后生效。

查看日志:

 因为字段较多,可以在左侧选定字段查看

四、问题和解决

3.1 日志显示没有按照时间排序

默认的索引模版timestamp字段默认是Long类型,需要转成date类型。

新建索引模版。

3.2 索引模版失效

发现新生成的索引并未使用模版,新建模版提示有两个模版匹都配到了同一个索引,优先使用另一个模版。

将另一个模版删除,新建模版。

参考:

  • SkyWalking 极简入门 | Apache SkyWalking
  • skywalking存储在es中的各个索引分别是什么作用 - CSDN文库
  • skywalking日志落到es字段timestamp不为date问题解决_skywalking timestamp-CSDN博客
  • Linux / Centos Stream 9安装 Skywalking 9.4.0 记录_skywalking-agent 9 下载-CSDN博客
  • SkyWalking 8 官方文档的中文翻译版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法笔记:Day-09(初始动态规划)

509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 …

Jenkins 构建时候提示超时错误被终止

近期在使用 Jenkins 构建项目的时候,经常性得到错误: - Building for production... Build timed out (after 3 minutes). Marking the build as aborted.当再次重构后,貌似没有问题,等候一段时间后问题又再次出现。 问题和解决…

angular实现list列表和翻页效果

说明:angular实现list列表和翻页效果 上一页 当前页面 下一页 效果图: step1: E:\projectgood\ajnine\untitled4\src\app\car\car.component.css .example-form-fields {display: flex;align-items: flex-start; }mat-list-item{background: antiquew…

基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

Ubuntu开启FTP与SSH服务

在配置开发环境时,这两个配置感觉是最有用的,开启FTP服务可以将远程linux上的文件映射到Windows上,不管是使用虚拟机还是嵌入式linux设备,特别在开发写代码的时候,映射到Windows上使用VS code打开编写比在linux上编写舒…

GitHub上传自己的项目

目录 一、安装Git插件 1)下载 2)安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user],下次可以直接用 一、安装Git插件 1)下载 下载地址&#x…

10款音视频转文字工具体验记!!!

如今互联网数据的便捷,记录不仅仅只有文字的形式,还有视频的形式!但是有时候,我们只有视频,却需要文字文档,那要怎么办呢?今天我要和大家分享一下我使用过的那些语音转文字工具的体验感受。语音…

SpringBoot在线教育系统:集成第三方服务

5系统详细实现 5.1 普通管理员管理 管理员可以对普通管理员账号信息进行添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 普通管理员管理界面 5.2 课程管理员管理 管理员可以对课程管理员进行添加修改删除操作。具体界面如图5.2所示。 图5.2 课程管理员管理界面 5.3 …

深度学习基础知识-损失函数

目录 1. 均方误差(Mean Squared Error, MSE) 2. 平均绝对误差(Mean Absolute Error, MAE) 3. Huber 损失 4. 交叉熵损失(Cross-Entropy Loss) 5. KL 散度(Kullback-Leibler Divergence&…

Web Broker(Web服务应用程序)入门教程(1)

1、介绍 Web Broker 组件(位于工具面板的“Internet”选项卡中)可以帮助您创建与特定统一资源标识符(URI)相关联的事件处理程序。当处理完成后,您可以通过编程方式构建 HTML 或 XML 文档,并将它们传输给客…

基于springboot+vue实现的养老院管理系统(源码+L文+ppt)

基于springbootvue实现的养老院管理系统(源码L文ppt)4-106 养老院系统管理是一个综合性养老在线平台,旨在综合并简化养老机构中的照护流程。该系统集成了多种功能,以支持医生、护士、家属及管理员等不同角色的需求。对于医务人员而…

dify实战案例分享-基于多模态模型的发票识别

1 什么是dify Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。它结合了后端即服务(Backend as Service, BaaS)和LLMOps的理念,使开发者能够快速搭建生产级的AI应用…

QML项目实战:自定义Switch按钮

目录 一.添加头文件 1.QtQuick.Controls 2.1 2.QtGraphicalEffects 1.12 二.自定义Switch 三.标签 四.效果 五.代码 一.添加头文件 1.QtQuick.Controls 2.1 QtQuick.Controls 提供了一组预定义的 UI 控件,这些控件可以用于构建现代、响应式的用户界面。它包…

开源框架Openlayers:就业必学,打造3D互动式地图

OpenLayers是一个开源的WebGIS库,支持多种地图类型,提供丰富的功能和API,支持多种格式,可以进行空间分析和可视化,还可以制作融合图层和定制地图。 在招聘市场中,OpenLayers的地位也是不可小觑的&#xff0…

React系列教程(2)React哲学

豆约翰习惯将掌握某一技术分为5个层次:初窥门径,小试牛刀,渐入佳境,得心应手,玩转自如 本篇属于React框架中的第1层次即初窥门径 我们认为,React 是用 JavaScript 构建快速响应的大型 Web 应用程序的首选方…

无人机声学侦测算法详解!

一、算法原理 无人机在飞行过程中,其电机工作、旋翼震动以及气流扰动等都会产生一定程度的噪声。这些噪声具有独特的声学特征,如频率范围、时域和频域特性等,可以用于无人机的检测与识别。声学侦测算法利用这些特征,通过一系列步…

【C++】继承的理解

1.继承的概念和定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段,它允许程序员在 保 持原有类特性的基础上进行扩展 ,增加功能,这样产生新的类,称派生类。继承 呈现了面向对象 程序…

车圈大厂9月利润率惨淡收尾,“金九”或变“铜九”

撰文|ANGELICA 编辑|ANGELICA 审核|烨 Lydia 声明|图片来源网络。日晞研究所原创文章,如需转载请留言申请开白。 国庆假期第一天,不少车企就迫不及待晒出假期战报。 按照以往的经验,每年9月…

蓝牙是如何诞生,如何工作,如何发展的?【无线通信小百科】

蓝牙为什么叫蓝牙?深入了解关于蓝牙的一切|无线通信小百科 在前两期文章,我们为大家介绍了无限通信技术是如何工作,如何发展;也为大家讲解了目前主流无线通信模块、SoC方案都有哪些。 无线通信工作原理、发展历程介绍https://blo…

Pytorch cuda版本选择(简洁高效版)

简而言之 Pytorch cuda版本选择 只需要低于cuda驱动版本即可,cuda版本查看是nvidia-smi, nvcc -V 是runtimeapi版本可以不用管 1.只要看cuda驱动版本 安装pytorch 选择cuda版本,只要看你电脑cuda驱动版本即可。 2.选择依据 pytorch中cuda版本只要不高于…