1、实战案例
1.1单体jar包监控
1.1.1Halo环境准备
注意:Halo需要jdk11以上的版本
bash
apt install -y java-11-openjdk
mkdir /apps/halo -p && cd /apps/halo
curl -L https://github.com/halo-dev/halo/releases/download/v1.5.4/halo-1.5.4.jar --output halo.jar
cd /apps
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
vi /apps/skywalking-agent/config/agent.config
1.1.2配置SkyWalking agent
bash
vim /apps/skywalking-agent/config/agent.config
# The group name is optional only.
# 在UI显示,服务的名字
agent.service_name=${SW_AGENT_NAME:Halo}
# The agent namespace
# 不显示,一般是所属项目
agent.namespace=${SW_AGENT_NAMESPACE:Weng}
# Backend service addresses.
# skywalk server 地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:172.17.1.60:11800}
#启动服务
java -javaagent:/apps/skywalking-agent/skywalking-agent.jar -jar /apps/halo/halo.jar
#如果是容器启动如下:
java -javaagent:/apps/skywalking-agent/skywalking-agent.jar \
-DSW_AGENT_NAMESPACE=Weng \
-DSW_AGENT_NAME=Halo \
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=172.17.1.60:11800 \
-jar /apps/halo/halo.jar
1.1.3配置halo环境
1.1.4 在SkyWalking平台上测试是否采集到数据
1.2UI界面参数的解释
指标名称 | 指标参数值 |
---|---|
Success Rate in Current Service (%) | 当前服务成功率(%) |
Service Apdex(数字) | 当前服务的评分 |
Successful Rate(数字) | 请求成功率 |
Service Load (calls / min) 数字 | 分钟请求数 |
Service Avg Response Times(ms) | 平均响应延时,单位ms |
Service Apdex(折线图) | 一段时间内Apdex评分 |
Service Response Time Percentile (ms)折线图 | 服务响应时间百分比 |
Service Load (calls / min) 折线图 | 分钟请求数 |
Success Rate (%)折线图 | 分钟请求成功百分比 |
Message Queue Consuming Count(折线图) | 消息队列消耗计数 |
Message Queue Avg Consuming Latency (ms)折线图 | 消息队列平均消耗延迟(毫秒) |
Service Instances Load (calls / min) | 节点请求次数 |
Slow Service Instance (ms) | 每个服务实例(物理机、云主机、pod)的最大延时 |
Service Instance Success Rate (%) | 每个服务实例的请求成功率 |
Endpoint Load in Current Service (calls / min) | 每个端点(URL)的请求次数 |
Slow Endpoints in Current Service (ms) | 当前端点(URL)的最慢响应时间 |
1.2.1服务实例概览信息
- Service Instance Load (calls / min):当前实例的每分钟请求数。
- Service Instance Success Rate (%):当前实例的请求成功率。
- Service Instance Latency (ms):当前实例的响应延时。
- Database Connection Pool:数据库连接池信息
- Thread Pool:线程池信息
1.2.2服务端点信息
- Endpoints: URL
- Load (calls / min):平均请求次数(默认时间范围半小时),比如半小时内总请求次数6次,6%30=0.20
- Success Rate (%):平均成功率(默认时间范围半小时)
- Latency (ms):平均延迟时间(默认时间范围半小时)
1.2.3服务拓扑图
1.2.4服务请求追踪信息
这里就以java服务为例了,其他服务照此配置,到官网下载指定语言的agent,然后修改下参数即可
1.3 配置告警信息
bash
root@sk:~# cat /apps/apache-skywalking-apm-bin/config/alarm-settings.yml
rules:
service_cpm_rule:
metrics-name: service_cpm
op: ">"
threshold: 1
period: 2
count: 1
silence-period: 2
message: 服务 {name} 访问次数大于1
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking Alarm: \n %s."
}
}
webhooks:
- url: https://oapi.dingtalk.com/robot/send?access_token=1fefd439818d0d46f6259ba1f1f99683832fec7190d1623d4d1d3bec5c1bbfc5
#重启服务
root@sk:~# pkill java
root@sk:~# systemctl restart skywalking.service
但是钉钉没有收到告警信息,然后手动执行钉钉告警是可以的,然后自动告警就莫名行了
bash
root@sk:~# curl -X POST "https://oapi.dingtalk.com/robot/send?access_token=1fefd439818d0d46f6259ba1f1f99683832fec7190d1623d4d1d3bec5c1bbfc5" \
-H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking Alarm: \n %s."
}
}'