当前位置: 首页 > news >正文

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: 8100spring: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} #注意改成ipprotocol: ${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 indexesindexReplicasNumber: ${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 0superDatasetIndexShardsFactor: ${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 templatebulkActions: ${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 requestsresultWindowMaxSize: ${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 官方文档的中文翻译版

http://www.mrgr.cn/news/65922.html

相关文章:

  • gRPC-拦截器
  • labview学习总结
  • arkUI:文本框、文本域的创建和常见用法(TextInput 、TextArea)
  • B2109 统计数字字符个数
  • 【设计模式系列】组合模式(十二)
  • 开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略
  • 数据结构————链表
  • MODBUS-TCP全解:有这一篇就够了
  • IP SSL证书
  • 2024年CISSP认证考试通关秘籍:备考方法与实战经验分享
  • idea java 项目右键new file时 为什么是 kotlin class 不是普通class
  • CDGP|数据资产入表:解锁数据价值,驱动数据要素流通的关键引擎
  • Memento 备忘录模式
  • 路径规划 | ROS中多个路径规划算法可视化与性能对比分析
  • 【Vue 全家桶】5、Vuex(更新中)
  • docker构建次数过多导致硬盘爆满,清除
  • 【windows命令详解】Windows系统信息查询终极指南:全面掌握`systeminfo`命令!
  • 深入解析:Percona Server 8.0.39 for CentOS 7 安装与优化全指南
  • springBoot集成shiro+权限刷新
  • SpringCloud-Nacos配置管理
  • Python 使用 OpenCV 进行全景拼接
  • 获取SKU详细信息API:揭秘商品背后的故事
  • 基于Springboot+安卓的健康饮食APP (含源码数据库)
  • 健康休息,注重休息
  • TreeMap 源码分析
  • 各种网络协议