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:
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
二. 实现单体服务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仪表盘简介:
service names:服务名称 Load (calls / min):每分钟访问次数 Success Rate (%):成功率 Latency (ms):验延迟时间 Apdex :应用性能指数
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:线程池信息
普通服务–>服务–> halo|magedu|–>Endpoint(端点信息):
Endpoints: URL
Load (calls / min):平均请求次数(默认时间范围半小时),比如半小时内总请求次数6次,6%30=0.20
Success Rate (%):平均成功率(默认时间范围半小时)
Latency (ms):平均延迟时间(默认时间范围半小时)
普通服务–>服务–> 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类计数
三. 实现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:dubbo−server1agent.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:dubbo−consumer123agent.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数据:
四. 实现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钉钉告警相关推荐
- 微服务全链路跟踪:jaeger集成istio,并兼容uber-trace-id与b3
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...
- Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】
SpringCloud学习目录点击跳转对应的文章 Java之 Spring Cloud 微服务搭建(第一个阶段)[一][SpringBoot项目实现商品服务器端是调用] Java之 Spring Cl ...
- java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...
原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...
- 内网场景 Dubbo 微服务接入观测云
简介¶ 有的项目,用户群体是公司内部人员,或者集团公司人员.为了安全,这些项目部署在自建机房,员工通过内网或者 VPN 访问.针对这种场景,观测云提供了离线部署的方案,即通过一台可以连外网的主机上部署 ...
- 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解
微服务架构 与 Dubbo 微服务框架.SpringCloud 微服务框架 详解 什么是微服务架构? 微服务架构就是将单体的应用程序分成多个应用程序,这一个应用程序就组成一个服务,这多个应用程序就组成 ...
- 敏捷水手——单体法到微服务之旅
\ 本文要点 \\ 探究持续四年多的渐进式改革是什么样子:\\t 探索为什么在变革软件和组织设计时要遵循康威定律:\\t 看看如何将领导力应用到不同的团队.领域和层级:\\t 举例说明变革管理如何依赖 ...
- 微服务组件记事本:Skywalking的ES索引 · 收藏篇
(2021年倒计时33天) 书接上文,在上回书中,我们说到了<微服务组件记事本:Skywalking执行效果 · 多图篇>,文章比较详细的展示了Skywalking中的各种数据和图表展示, ...
- Java开发必读--初识微服务一定要阅读这篇文章
原文转自一线互联网资深架构师,微服务布道师小马哥的原创文章,始发与小马哥公众号. 微服务是什么? 微服务是一种细粒度(Fine-Grain)的SOA 或许在座的高朋了解过其概念.个人认为,与其说微服务 ...
- Java微服务开发指南-Java环境下的微服务
本文涉及的内容,能让你学到什么? 本书适用于开发微服务的Java开发人员和架构师.我们在开始介绍微服务架构前,先讲述一些抽象的基本概念.不幸的是,使用新技术并不能神奇地解决分布式系统问题.但是我们通过 ...
最新文章
- 【rnnoise源码分析】rnn_train中的训练模型
- 21、Java Swing JOptionPane:对话框组件
- SQL获取上个月第一天和最后一天的时间写法
- ubuntu - 14.04,如何操作Gnome的任务栏?
- call_once/once_flag的使用
- 为什么有些女孩在发现渣男的真面目以后,还喜欢他们?
- 计算机文档我的文档丢失,恢复我的电脑窗口中共享文档与我的文档不见了的方法...
- 通信(1)---LTE 整体架构
- 基于JAVA+SpringMVC+Mybatis+MYSQL的体育器材管理系统
- Oracle出现ora-01045的解决方法-可用
- iOS开发UITableViewCell右边的原生图标设置
- 通过软件调整显示器的扩展、复制、显示器输入源
- 微软使用“钞能力”: 687 亿美元收购动视暴雪!
- 小米5splus安装鸿蒙OS,小米5Splus 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
- Charles4.62破解版本下载
- 微软拼音输入法如何打开添加表情与颜文字?
- RHadoop实验 – 统计邮箱出现次数
- 在计算机网络中 工作在物理层上的设备,简述工作在物理层,数据链路层和网络层上的设备分别有哪些...
- 解决的问题记录(持续更新)
- YOLO v3 详解