一、简介
SkyWalking是一款用于分布式系统跟踪和性能监控的开源工具。它可以帮助开发人员了解分布式系统中不同组件之间的调用关系和性能指标,从而进行故障排查和性能优化。
它支持多种语言和框架,包括Java、.NET、Node.js等。它通过在应用程序中插入代理或使用特定的SDK来收集跟踪数据,并将这些数据发送到SkyWalking服务器进行分析和展示。
分布式跟踪:SkyWalking可以追踪分布式系统中各个组件之间的调用链路,可以查看请求的流程和耗时情况,从而更好地定位问题。 性能监控:SkyWalking可以监控应用程序的性能指标,如请求延迟、吞吐量、错误率等,用来评估系统的健康状况,并及时发现潜在的性能问题。 图表分析:SkyWalking提供了丰富的图表分析功能,如拓扑图展示、调用链路分析、性能趋势等,便于查看系统的运行情况和瓶颈所在。 告警和报警:SkyWalking可以设置告警规则,当系统出现异常或性能指标超过预设阈值时,及时通知相关人员,以便快速响应和处理。
二、安装elasticsearch
1.安装
rpm -ivh elastic-agent-8.13.2-x86_64.rpm
2.修改配置
vim /etc/elasticsearch/elasticsearch.yml
修改如下:
去掉cluster.name注释,起个名字
cluster.name: my-es
去掉node.name注释,起个名字
#node.name: es01
看情况是否需要修改日志目录和数据库目录
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
去掉network.host注释,主机ip改成自己的
network.host: 192.168.63.230
去掉http.port注释
http.port: 9200
去掉discovery.seed_hosts注释,es本身是个集群环境,如果只有一台,那就只把自己的ip填进去
discovery.seed_hosts: ["192.168.63.230"]
下面两行认证,es8以后默认是开启的,我们给关闭,改成false
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
修改集群选举的管理节点主机列表,只有一台,就当做管理节点
cluster.initial_master_nodes: ["192.168.63.230"]
3.启动并设置开机自启
systemctl enable elasticsearch --now
三、安装skywalking
skywalking官网:Downloads | Apache SkyWalking
安装包下载地址:Apache Archive Distribution Directory
3.1手动下载后上传至服务器,或直接执行命令下载
cd /usr/local
wget https://www.apache.org/dyn/closer.cgi/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz
注:oapService为Skywalking的核心后端服务,用来接收各个服务的监控数据并解析处理存储到数据库中,webappService为Web项目,用来展示Skywalking的监控数据,图表分析等
3.2避免端口冲突,更换 SkyWalking UI界面默认8080端口
vim webapp/application.yml
serverPort: ${SW_SERVER_PORT:-8100}
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412}
3.3获取elasticsearch的ssl证书
在修改application.yml配置之前,我们需要获取到elasticsearch的ssl证书,进入elasticsearch的安装目录,可通过以下命令获取es的http.p12证书的密码
cd /usr/share/elasticsearch/bin
./elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
打印输入如下:
[root@lamp bin]# ./elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
warning: ignoring JAVA_HOME=/usr/local/java/jdk-17.0.1; using bundled JDK
z8dOSZfjRgGOzRhThMRTLQ
3.4修改Skywalking存储
vim config/application.yml
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:"http"}
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:"elastic"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"/etc/elasticsearch/certs/http.jks"}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"z8dOSZfjRgGOzRhThMRTLQ"}
注:
clusterNodes:elasticsearch地址
protocol:选http,如果是https需要给elasticsearch安装证书
user:elasticsearch账号,默认elastic
password:elasticsearch密码,默认elastic
trustStorePath:elasticsearch的http.jks所在地址
trustStorePass:上一步将http.p12证书转为http.jks格式证书获取的密码
3.5启动 SkyWalking OAP 服务
sh bin/oapService.sh
查看日志:
tail -200f logs/skywalking-oap-server.log
skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口
3.6启动 SkyWalking UI 服务
sh bin/webappService.sh
查看日志:
tail -200f logs/skywalking-webapp.log
默认是8080端口,上面更换成8100
浏览器访问:http://192.168.20.130:8100
四、使用Skywalking-agent代理java服务
1. 准备一个springboot项目的jar包
2. 下载Skywalking-agent
3.解压
tar -zxvf apache-skywalking-java-agent-9.1.0.tgz
4.修改以下agent.config配置
vim config/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}
5.启动springboot的jar包
启动命令中指定-javaagent到skywalking-agent的目录
nohup java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -DSW_SERVICE_NAME=ski -jar ski-springboot.jar >log.out 2>&1 &
日志中可以看到加载skywalking
查看控制面板