Apache SkyWalking分布式链路追踪系统安装部署
目录
1、环境及介质说明
本次部署采用单机模式,因此只需要一台机器,部署ES过程中发现ES必须部署在/root/usr/local目录下,否则无法启动。
注意:JDK版本必须为1.8,ES版本为5.X,本次采用ES为5.6.13版本。
部署服务路径:
ES-5.6.13:/opt/elasticsearch/elasticsearch-5.6.13
Apache Skywalking 5.0.0-GA:/root/apache/apache-skywalking-apm-incubating
2、部署ElasticSearch
2.1、ElasticSearch配置文件修改
文件位置:\elasticsearch-5.6.13\config\elasticsearch.yml
vim elasticsearch.yml 打开elasticsearch.yml修改为如下:
#cluster.name集群名称
cluster.name: CollectorDBCluster
#node名称
node.name: node-1
##########推荐配置,请勿修改############
network.host: 0.0.0.0
network.publish_host: 26.47.30.127
network.bind_host: 0.0.0.0
#线程池队列大小
thread_pool.bulk.queue_size: 1000
2.2、ES启动
说明:ES的启动不能使用root账号启动,需要新建用户,并修改es目录权限。详细步骤见下。
2.2.1、添加用户加入组
#1)添加一个用户:elasticsearch
useradd elasticsearch
#2)给用户elasticsearch设置密码,连续输入2次
passwd elasticsearch
#3)创建一个用户组 es
groupadd es
#4)分配 elasticsearch 到 es 组
usermod -G elasticsearch es
#5)这里注意下,如果提示用户“es”不存在,那么是因为服务器版本问题,你可以换成
usermod -G es elasticsearch ,也就是用户和用户组对调一下使用。
#6)在elasticsearch 根目录下,给定用户权限。-R表示逐级(N层目录), * 表示 任何文件
chown -R elasticsearch.es *
2.2.2、切用户启动
[email protected]:/opt/elasticsearch/elasticsearch-5.6.13/bin# ./elasticsearch
#1) 切换到elasticsearch用户
su elasticsearch
#2) 切到elasticsearch-5.6.13目录下执行命令
[email protected]:~/elasticsearch-5.6.13$ chmod +x bin/elasticsearch
#3) 切到bin目录下执行
./elasticsearch -d
若启动报错参考:https://blog.csdn.net/weixin_38447578/article/details/84293526
2.2.3、查看ES服务是否启动成功
方式1:执行以下命令
ps aux | grep elasticsearch
方式2:浏览器访问 http://192.168.98.1:9200,
看返回结果是否为以下值,build_date 时间根据实际时间显示。
http:192.168.98.1:9200
{
"name" : "node-1",
"cluster_name" : "CollectorDBCluster",
"cluster_uuid" : "0PjTNtPEQrCfb2bd0Xzysw",
"version" : {
"number" : "5.6.13",
"build_hash" : "4d5320b",
"build_date" : "2018-10-30T19:05:08.237Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
2.2.4、关闭ES服务
查看进程号,然后杀死进程。
3、部署Apache Skywalking
3.1、application.yml
文件位置:\apache-skywalking-apm-incubating\config\application.yml
注:application.yml中所有host节点的值都配置为真实的IP地址。
3.2、webapp.xml
文件位置:\apache-skywalking-apm-incubating\webapp\webapp.xml
修改访问ip:listOfServers: 192.168.98.1:10800
配置用户名和密码,访问skywalking UI界面时候登陆时候需要输入。默认用户名:admin,密码:admin。
3.3、启动Apache Skywalking
[email protected]:~/apache-skywalking-apm-incubating/bin# ./startup.sh
切到\apache-skywalking-apm-incubating的bin目录下,执行./statup.sh
UI使用8080端口,收集器使用10800端口
启动后查看8080和10800端口占用情况
netstat -nlp|grep 8080、netstat -nlp|grep 10800
web地址,IP:8080(有时机器自带tomcat,占用了8080,需要换一个端口,在webapp.xml中)
4、Skywalking探针Agent
配置文件位置:\apache-skywalking-apm-incubating\agent\config\agent.config
#1)agent.namespace名称,这里需要注意,相关联的微服务需要配置成同一个名称,否则会导致调用链断开,例如项目中有六个微服务,则统一配置成xxx-namespace。
agent.namespace=xxx-namespace
#2)微服务应用名称(该名称就是显示在skywalking界面上的)
agent.application_code=application1
#3)Skywalking收集器server的端口
collector.servers=192.168.98.1:10800
5、微服务启动方式
以以下demo为例,红色部分为探针应用于微服务中。
java -javaagent:/root/microservice/spring-cloud-department/agent/skywalking-agent.jar -jar depart-micro-0.0.1-SNAPSHOT
6、部署过程中遇到的问题
6.1、时间一致性
如果ES和Skywalking分开部署,需要保证服务器的时间完全一致,否则回导致服务调用链滞后显示。假设ES时间比Sky walking时间晚了5分钟,调用请求链在2019-12-10 10:00, ES的时间为2019-12-10 10:00,skywalking服务器为2019-12-10 10:05。UI界面上是看不到本次调用信息的,5分钟后才能看到。
6.2、网络互通性
需要保证ES服务器和Skywalking服务器之间网络是互通的,否则调用链信息无法写入ES中,可以查看探针agent的日志。
6.3、xshell连接服务器断开连接问题
如果是使用xshell登陆远程机器执行,防止xshell窗口关闭导致应用down掉,比如以下命令(根据实际情况修改skywalking-agent.jar位置,微服务jar名称)
nohup java -javaagent:/opt/soft/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -jar service-registry-0.0.1-SNAPSHOT.jar >> registry.log 2>&1 &
7、集群部署
参考官网部署方案: