SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警

一. 基于docker-compose或二进制部署skywalking

 skywalking-ui: 前端服务,端口号8080。
 skywalking-oap(Observability Analysis Platform):可观
测性分析平台,11800为gRPC数据端口,12800为http数据端口。
 es:9200为elasticsearch的数据读写端口,目前skywalking
支持的存储有elasticsearch、h2、mysql、tidb、influxdb、
postgresql等。
 agent: app服务器部署skywalking agent,用于收集app中
的访问请求。
先部署es服务,
一,调参数
root@skywalking-server:~# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
vm.max_map_count=262144
二,安装es

 root@skywalking-server:/usr/local/src# dpkg -i elasticsearch-8.5.1-amd64.deb
root@skywalking-server:~# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: es1
node.name: node1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.159.149
http.port: 9200
discovery.seed_hosts: ["192.168.159.149",]
cluster.initial_master_nodes: ["192.168.159.149",]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: false
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
http.host: 0.0.0.0
root@skywalking-server:~#systemctl start elasticsearch.service 
root@skywalking-server:~#systemctl enable elasticsearch.service

SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第1张图片
 部署skywalking:

root@skywalking-server:~#apt install openjdk-11-jdk -y
root@skywalking-server:~#tar xvf apache-skywalking-apm-9.3.0.tar.gz
root@skywalking-server:~#ln -sv /apps/apache-skywalking-apm-bin /apps/skywalking
root@skywalking-server:~#vim /apps/skywalking/config/application.yml
storage:
selector: ${SW_STORAGE:elasticsearch}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.159.149:9200}
root@skywalking-server:~# cat /etc/systemd/system/skywalking.service
 [Unit]
Description=Apache Skywalking
After=network.target
[Service]
Type=oneshot
User=root
WorkingDirectory=/apps/skywalking/bin/
ExecStart=/bin/bash /apps/skywalking/bin/startup.sh
RemainAfterExit=yes
RestartSec=5
[Install]
WantedBy=multi-user.target
root@skywalking-server:~#systemctl daemon-reload && systemctl restart skywalking && systemctl enable skywalking

SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第2张图片

二. 实现单体服务halo博客和jenkins的请求链路跟踪

 准备skywalking java agent:
 root@skywalking-agent1:~# mkdir /data && cd /data
 root@skywalking-agent1:/data# tar xvf apache-skywalking-java-agent-8.13.0.tgz
 root@skywalking-agent1:/data# vim /data/skywalking-agent/config/agent.config
agent.service_name= S W A G E N T N A M E : h a l o a g e n t . n a m e s p a c e = {SW_AGENT_NAME:halo} agent.namespace= SWAGENTNAME:haloagent.namespace={SW_AGENT_NAMESPACE:magedu} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.159.149:11800}
 root@skywalking-agent1:/data#apt install openjdk-11-jdk
 下载halo博客单体jar包:
 root@skywalking-agent1:/data# mkdir /apps && cd /apps/
 root@skywalking-agent1:/apps# wget https://dl.halo.run/release/halo-1.6.1.jar
绝对路径启动命令:
root@skywalking-agent1:/data# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.6.1.jar SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第3张图片 skywalking仪表盘简介:
service names:服务名称 Load (calls / min):每分钟访问次数 Success Rate (%):成功率 Latency (ms):验延迟时间 Apdex :应用性能指数
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第4张图片
 Apdex全称是(Application Performance Index,应用性能指数),是由Apdex联盟开放的用于评估应用性能的标准,Apdex 联盟起源于2004年,Apdex标准从用户的角度出发,提供了一个统一的测量和报告用户体验的方法,将其量化为范围为0-1的满意度评价,把最终用户的体验和应用性能作为一个完整的指标进行统一度量
 在网络中运行的任何一个应用(Web服务),它的响应时间决定了用户的满意程度,用户等待所有交互完成时间的长短直接影响了用户对应用的满意程度,
这才是对用户有真正意义的“响应时间”,Apdex把完成这样一个任务所用的时间长短称为应用的“响应性”。
 Apdex 定义了应用响应时间的最优门槛为T,另外根据应用响应时间结合T定义了三种不同的性能表现:
 Satisfied(满意)-应用响应时间小于或等于Apdex阈值,比如Apdex阈值为1s,则一个耗时0.6s或者1s的响应结果则可以认为是满意的。
 Tolerating(可容忍)-应用响应时间大于Apdex阈值,但同时小于或等于4倍的Apdex阈值,假设应用设定的Apdex阈值为1s,则4*1=4s为应用响应时
间的容忍上限。
 Frustrated(烦躁期)-应用响应时间大于4倍的Apdex阈值。
 skywalking仪表盘简介:
 普通服务–>服务–> halo|magedu|–>Overview(服务概览)
 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)的最慢响应时间
 Success Rate in Current Service (%):当前服务成功率(%):
 普通服务–>服务–> halo|magedu|–>Instance–>选择实例–>Overview(实例概览信息):
 Service Instance Load (calls / min):当前实例的每分钟请求数。
 Service Instance Success Rate (%):当前实例的请求成功率。
 Service Instance Latency (ms):当前实例的响应延时。
 Database Connection Pool:数据库连接池信息
 Thread Pool:线程池信息
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第5张图片
 普通服务–>服务–> halo|magedu|–>Endpoint(端点信息):
 Endpoints: URL
 Load (calls / min):平均请求次数(默认时间范围半小时),比如半小时内总请求次数6次,6%30=0.20
 Success Rate (%):平均成功率(默认时间范围半小时)
 Latency (ms):平均延迟时间(默认时间范围半小时)
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第6张图片
 普通服务–>服务–> halo|magedu|–>Instance–>示例–>JVM(实例JVM信息):
 JVM CPU (%):jvm占用CPU的百分比。
 JVM Memory (MB):JVM内存占用大小,单位m,包括堆内存,与堆外内存(直接内存)。
 JVM GC Time (ms):JVM垃圾回收时间,包含YGC和OGC。
 JVM GC Count:JVM垃圾回收次数,包含YGC和OGC
 JVM Thread Count:JVM线程计数统计
 JVM Thread State Count:JVM线程状态计
 JVM Class Count:JVM类计数
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第7张图片

三. 实现dubbo微服务实现链路跟踪案例

 部署注册中心(192.168.159.151):
 root@skywalking-zookeeper:~# apt install openjdk-8-jdk
root@skywalking-zookeeper:~# mkdir /apps && cd /apps
 root@skywalking-zookeeper:/apps# tar xvf apache-zookeeper-3.7.1-bin.tar.gz
 root@skywalking-zookeeper:/apps# cp /apps/apache-zookeeper-3.7.1-bin/conf/zoo_sample.cfg /apps/apache-zookeeper-3.7.1-
bin/conf/zoo.cfg
 root@skywalking-zookeeper:/apps# /apps/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
 root@skywalking-zookeeper:/apps# lsof -i:2181
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4419 root 70u IPv6 50491 0t0 TCP *:2181 (LISTEN)

 部署provider(192.168.159.150):
 root@skywalking-agent1:~# apt install openjdk-8-jdk -y
 root@skywalking-agent1:~# mkdir /data && cd /data
 root@skywalking-agent1:/data# tar xvf apache-skywalking-java-agent-8.13.0.tgz
 root@skywalking-agent1:/data# vim /data/skywalking-agent/config/agent.config
agent.service_name= S W A G E N T N A M E : d u b b o − s e r v e r 1 a g e n t . n a m e s p a c e = {SW_AGENT_NAME:dubbo-server1} agent.namespace= SWAGENTNAME:dubboserver1agent.namespace={SW_AGENT_NAMESPACE:myserver} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.159.149:11800}
 添加主机名解析,dubbo里面的zookeeper地址写在了源代码中,域名变量为ZK_SERVER1:
 root@skywalking-agent1:~# vim /etc/profile
export ZK_SERVER1=192.168.159.151
 root@skywalking-agent1:~# source /etc/profile
 root@skywalking-agent1:/data# mkdir -pv /apps/dubbo/provider
 root@skywalking-node1:/data# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/provider/dubbo-server.jar

 部署consumer(192.168.159.145):
 root@es-container:~# apt install openjdk-8-jdk -y
 root@es-container:~# mkdir /data && cd /data
 root@es-container:/data# tar xvf apache-skywalking-java-agent-8.13.0.tgz
 root@es-container:/data# vim /data/skywalking-agent/config/agent.config
20 agent.service_name= S W A G E N T N A M E : d u b b o − c o n s u m e r 1 23 a g e n t . n a m e s p a c e = {SW_AGENT_NAME:dubbo-consumer1} 23 agent.namespace= SWAGENTNAME:dubboconsumer123agent.namespace={SW_AGENT_NAMESPACE:myserver}
collector.backend_service=KaTeX parse error: Expected '}', got 'EOF' at end of input: …CKEND_SERVICES:{SW_SERVER}:11800}
 添加主机名解析,dubbo里面的zookeeper地址写在了源代码中,域名变量为ZK_SERVER1,SW也可以为agent设置环境变量:
 root@es-container:~# vim /etc/profile
export SW_SERVER=“192.168.159.149”
export ZK_SERVER1=“192.168.159.151”
root@es-container:/data# source /etc/profile
 root@es-container:/data# mkdir -pv /apps/dubbo/consumer
 root@es-container:/data# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/consumer/dubbo-
client.jar

 访问consumer:
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第8张图片
 验证skywalking数据:
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第9张图片
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第10张图片

四. 实现skywalking的钉钉告警

 skywalking 告警-指标:

   root@skywalking-server:~# cat /apps/skywalking/config/oal/core.oal
    service_resp_time #服务的响应时间
    service_sla #服务的http请求成功率SLA,比如99%等。
    service_cpm #表示每分钟的吞吐量.
    service_apdex : 应用性能指数是0.8是0.x
    service_percentile: 指定最近多少数据范围内的响应时间百分比,即p99, p95, p90, p75, p50在内的数据统计结果
    endpoint_relation_cpm #端点的每分钟的吞吐量
    endpoint_relation_resp_time #端点的响应时间
    endpoint_relation_sla #端点的http请求成功率SLA,比如99%等。
    endpoint_relation_percentile ##端点的最近多少数据范围内的响应时间百分比,即p99、p95、p90、p75、p50在内的数据统计结果

 skywalking 告警-钉钉:

 root@skywalking-server:~# vim /apps/skywalking/config/alarm-settings.yml
rules: #定义rule规则
service_cpm_rule: #唯一的规则名称,必须以_rule结尾
 #Metrics value need to be long, double or int
metrics-name: service_cpm #指标名称
op: ">" #操作符,>, >=, <, <=, ==
threshold: 1 #指标阈值
#The length of time to evaluate the metrics
period: 2 #评估指标的间隔周期
#How many times after the metrics match the condition, will trigger alarm
count: 1 #匹配成功多少次就会触发告警
#How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
#silence-period: 3
silence-period: 2 #触发告警后的静默时间
message: dubbo-provider service_cpm 大于1了 #告警信息
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking Alarm: \n %s."
}
}
webhooks:
- url: https://oapi.dingtalk.com/robot/send?access_token=3f773a20ef885659112b0d49086ca60d575562a2b1f113fbe215703366bb66f9 # 注 意 钉 钉 关 键 字

 root@skywalking-server:~# systemctl restart skywalking.service
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第11张图片
SkyWalking java单体和dubbo微服务请求链路跟踪,SkyWalking钉钉告警_第12张图片

你可能感兴趣的:(SkyWalking,skywalking,java,dubbo)