前言
本文主要讲解分布式链路追踪监控系统skywalking的安装及使用教程,从0到1,图文并茂的保姆级教程。
SkyWalking是一款用于分布式系统跟踪和性能监控的开源工具。它可以帮助开发人员了解分布式系统中不同组件之间的调用关系和性能指标,从而进行故障排查和性能优化。
它支持多种语言和框架,包括Java、.***、Node.js等。它通过在应用程序中插入代理或使用特定的SDK来收集跟踪数据,并将这些数据发送到SkyWalking服务器进行分析和展示。
- 分布式跟踪:SkyWalking可以追踪分布式系统中各个组件之间的调用链路,可以查看请求的流程和耗时情况,从而更好地定位问题。
- 性能监控:SkyWalking可以监控应用程序的性能指标,如请求延迟、吞吐量、错误率等,用来评估系统的健康状况,并及时发现潜在的性能问题。
- 图表分析:SkyWalking提供了丰富的图表分析功能,如拓扑图展示、调用链路分析、性能趋势等,便于查看系统的运行情况和瓶颈所在。
- 告警和报警:SkyWalking可以设置告警规则,当系统出现异常或性能指标超过预设阈值时,及时通知相关人员,以便快速响应和处理。
一、Skywalking安装教程
1. 安装ElasticSearch(前置条件)
Skywalking的数据存储方式默认为h2内存数据库,也支持存储到mysql,Elasticsearch,由于监控采集的数据量较大,并存在很多的数据检索需求,推荐将其存储到Elasticsearch中。
ElasticSearch官方安装教程,包括Windows,Mac,Linux,Docker安装教程,推荐使用Docker安装,简单快捷。
Skywalking的安装方式包括以下两种
- 下载源码手动编译
- 官方包
手动编译流程较为复杂,一般情况下,我们建议使用官方包。有定制化需求的可手动编译
2. 下载Skywalking安装包
进入Skywalking官网
可手动下载后上传至服务器,或直接执行命令下载:
cd /usr/local
wget https://www.apache.org/dyn/closer.cgi/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz
下载完成后解压进入安装目录:
tar -zxvf apache-skywalking-apm-9.7.0.tar.gz
cd apache-skywalking-apm-bin
ls
我们到bin目录可以看到一些启动脚本,.bat为Windows下使用,.sh为linux/Mac下使用。
我们./startup.sh即会启动Skywalking的服务,但是在启动之前我们需要修改一些配置文件。
我们vim startup.sh可以看到里面调用了oapService.sh, webappService.sh两个脚本,oapService为Skywalking的核心后端服务,用来接收各个服务的监控数据并解析处理存储到数据库中,webappService为Web项目,用来展示Skywalking的监控数据,图表分析等。
PRG="$0"
PRGDIR=`dirname "$PRG"`
OAP_EXE=oapService.sh
WEBAPP_EXE=webappService.sh
"$PRGDIR"/"$OAP_EXE"
"$PRGDIR"/"$WEBAPP_EXE"
3. 修改webapp的端口号
我们到webapp目录编辑application.yml可修改web程序的端口号。
serverPort: 8902
# ***ma seperated list of OAP addresses.
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412}
接下来我们到apache-skywalking-apm-bin/config目录下,查看:
这里包含很多配置文件,我们主要使用的有application.yml(oap核心配置文件),alarm-settings.yml(Webhook/钉钉告警配置)。
4.获取elasticsearch的ssl证书
在修改application.yml配置之前,我们需要获取到elasticsearch的ssl证书,进入elasticsearch的安装目录,可通过以下命令获取es的http.p12证书的密码
bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
通过以下命令将http.p12证书转为http.jks格式证书,将密码设置为上述获取的密码
keytool -importkeystore -srckeystore http.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore http.jks
5. 修改Skywalking存储至elasticsearch
我们打开apache-skywalking-apm-bin/config/application.yml文件
vim apache-skywalking-apm-bin/config/application.yml
找到storage将h2改为elasticsearch,并将下面配置修改为自己安装的elasticsearch的地址,账户密码,https传输需将trustStorePath配置为http.jks的文件路径,trustStorePass配置为http.jks的密码。
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
namespace: ${SW_NAMESPACE:"skywalking-index"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"https"}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
user: ${SW_ES_USER:"elastic"}
password: ${SW_ES_PASSWORD:"+srawm+3fPVeV5Y9oyB3"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"/Users/changlongmao/certs/http.jks"}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"Lw8_JAZ2QeS6tT7-oaHyZQ"}
配置完毕后即可启动。
6. 启动skywalking
mac/linux:
./apache-skywalking-apm-bin/bin/startup.sh
windows:
./apache-skywalking-apm-bin/bin/startup.bat
访问网址:http://localhost:8902/general
即可成功访问,安装成功,若启动失败可到apache-skywalking-apm-bin/logs目录下查看错误日志。
二、使用Skywalking-agent代理java服务
1. 准备一个springboot项目的jar包
这里自行准备,在网上有很多。
2. 下载Skywalking-agent
同样在Skywalking官网,滑到下方
可以自行下载,下载后解压,进入到skywalking-agent目录,找到config文件夹,打开agent.config。
3. 修改以下agent.config配置:
# 服务名称
agent.service_name=127.0.0.1::${SW_SERVICE_NAME}
。。。。
。。。。
。。。。。。
# 修改为skywalking部署的地址,11800是skywalking的oap服务的端口
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
4. 启动springboot的jar包
启动命令中指定-javaagent到skywalking-agent的目录
nohup java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -DSW_SERVICE_NAME=demo -jar demo.jar >/dev/null 2>&1 &
启动成功后可以看到日志
随意调用这个jar包的接口,或rpc请求,即可在skywalking中看到监控的数据。
三、配置钉钉机器人告警(可选)
配置Skywalking告警可参考这篇文章Skywalking告警指南。已经讲的非常详细。
笔者采用的是钉钉机器人告警,告警配置范例:
rules:
# Rule unique name, must be ended with `_rule`.
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 3000
period: 10
count: 2
silence-period: 1440
message: 服务【 {name} 】的平均响应时间在最近10分钟有2分钟超过3秒
service_sla_rule:
metrics-name: service_sla
op: "<"
threshold: 8000
period: 10
count: 2
# How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
silence-period: 1440
message: 服务【 {name} 】的成功率在最近10分钟有2分钟低于80%
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking 告警: \n %s."
}
}
webhooks:
- url:
secret:
四、使用教程
监控共分三层,服务、服务实例、端点,每个服务代表一个监控的集体,可以部署多个实例,每个实例包含多个端点,端点包含HTTP/RPC请求。每一层都监控分析,拓扑图,追踪,可逐层查看。
五、总结
本篇文章从0到1帮助读者学习Skywalking,包含安装教程,使用教程,希望对读者有所帮助,留个赞再走,谢谢老板😁。
作者:龙猫帝
原文链接:https://blog.csdn.***/chang_mao/article/details/135998660?spm=1001.2014.3001.5502
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。