skywalking简介
文章目录
- skywalking简介
- 前言
- 一、安装 二进制安装
- Skywalking:告警功能
前言
目前skywalking主要是做链路追踪和微服务流量可视化。skywalking不作为实例是否在线的参考。判断服务实例是否在线,请参考微服务服务注册中心信息。skywalking主要由三部分构成:客户端的探针(agent),服务端backend,以及服务端UI。其中,客户端的探针收集数据,默认使用grpc协议发送给服务端,然后服务端根据收到的数据绘制UI展示给用户。
工作方式:被监控的应用启动时指定agent参数,参数中带上skywalking agent的jar包。该jar包会动态植入监控代码。这些监控代码会发送数据到服务端backend,backend在服务启动时打开,默认监听11800端口接收客户端上报的数据。同时,服务端启动时,也会同步打开8080端口,此端口给用户提供UI。
一、安装 二进制安装
1、先安装 数据库
es数据库安装、
docker run --name es --restart \
always -d -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
-v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" elasticsearch:7.17.0
2、安装 skywalking
mkdir /opt/sk && cd /opt/sk
wget https://dlcdn.apache.org/skywalking/9.2.0/apache-skywalking-apm-9.2.0.tar.gz
tar xf apache-skywalking-apm-9.2.0.tar.gz
apt install openjdk-11-jdk -y
java --version
指定elasticsearch为数据库及elasticsearch的集群地址
vim config/application.yml
storage:
selector: ${SW_STORAGE:elasticsearch}
# 启动
/opt/sk/apache-skywalking-apm-bin/bin/startup.sh
# 如果 es 在其他节点:
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
namespace: ${SW_NAMESPACE:""}
## 单机ES
## clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.31.41:9200}
## ES集群多个ip用逗号,分割
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.31.41:9200,192.168.31.42:9200,192.168.31.43:9200}
其他几个重要参数
#存储最多7天的内容,过期数据将会清理。因此请根据实际需求进行调整
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7}
# 每10秒刷新数据到收集器中
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
# 提供2个并发请求,如果系统业务量大,日志产生的非常快,请根据实况调整
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}
访问localhost:8080,如果8080端口被占用了怎么办?**进入webapp文件夹下的webaap.yml,修改port即可。启动之后,如图所示
验证
http://192.168.10.148:8080/general
docker 部署方法
docker pull elasticsearch:7.9.0
docker pull apache/skywalking-oap-server:8.9.1
docker pull apache/skywalking-ui:8.9.1
mkdir -p /Users/admin/Documents/data/elasticsearch/data
mkdir -p /Users/admin/Documents/data/elasticsearch/logs
docker run -d --name=es7 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /Users/admin/Documents/data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /Users/admin/Documents/data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.9.0
启动 skywalking-oap
docker run --name oap --restart=always -d \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link es7:es7 \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=es7:9200 \
apache/skywalking-oap-server:8.9.0
-e TZ=Asia/Shanghai:指定时区。
--link es7:es7:关联es7容器,通过容器名字来解决ip会发生变更的问题。
-e SW_STORAGE=elasticsearch:设置环境变量,指定存储方式。
-e SW_STORAGE_ES_CLUSTER_NODES=es7:9200:设置环境变量,指定ES的地址
安装skywalking-ui
docker run -d --name skywalking-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=oap:12800 \
apache/skywalking-ui:8.9.0
客户端agent接入
cd /opt/sk
wget https://dlcdn.apache.org/skywalking/java-agent/8.12.0/apache-skywalking-java-agent-8.12.0.tgz
tar xf apache-skywalking-java-agent-8.12.0.tgz
# java启动命令添加参数
-javaagent:/data/apm/skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=服务名称 \
-Dskywalking.collector.backend_service=192.168.1.1:11800 #服务器端ip
java -javaagent:/usr/local/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=test \
-Dskywalking.collector.backend_service=192.168.10.238:11800 \
-jar test.jar
Skywalking:告警功能
演示的skywalking告警示例,
1、http 协议的web接口访问量进行监控,并且访问量达到一定的数量时进行钉钉发群消息告警。
所有的告警规则,都在alarm-settings.yml中。
vim config/alarm-settings.yml
默认情况下告警默认值。它包括以下规则:
rules:
# Rule unique name, must be ended with `_rule`.
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 2000
period: 1
count: 1
silence-period: 5
message: 实例:{name} 过去 1分钟内服务平均响应时间超过 2 秒
service_instance_resp_time_rule:
metrics-name: service_instance_resp_time
op: ">"
threshold: 2000
period: 1
count: 1
silence-period: 2
message: 最近1分钟内端点关系{name}平均响应时间超过 2 秒
unhealthy_event_rule:
metrics-name: Unhealthy
threshold: 5000
op: ">"
period: 1
count: 1
message: 实例:{name}已不正常运行5秒
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking 告警: \n %s."
}
}
webhooks:
- url: https://oapi.dingtalk.com/robot/send?access_token=5c9935e376c711f0526528e2b5c8514f7fbc255ae
secret: SEC12f877554b2fca465a7961e22863
重启服务