Skywalking简介
实现从请求跟踪、指标收集和日志记录的完整信息记录。
多语言自动探针,支持JAVA、Go、Python、PHP、NodeJS、LUA、Rust等客户端
内置服务网络可观察性,支持从Isito+envoy Service Mesh收集和分析数据
模块化架构、存储、集群管理、使用插件集合都可以进行自由选择
支持告警
优秀的可视化结果
官网
https://github.com/apache/skywalking
部署链路追踪:
version: '3.3'
services:
es7:
image: elasticsearch:7.10.1
container_name: es7
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node #单机模式
- bootstrap.memory_lock=true #锁定物理内存地址
- "ES_JAVA_OPTS=-Xms1048m -Xmx1048m" #堆内存大小
- TZ=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /data/elasticsearch/data:/usr/share/elasticsearch/data
skywalking-oap:
image: apache/skywalking-oap-server:8.6.0-es7
container_name: skywalking-oap
volumes:
- ./core.al:/skywalking/config/oal/core.al # 类似prometheus的promql查询语句,监控指标来此文件查
- ./alarm-settings.yml:/skywalking/config/alarm-settings.yml # 告警配置
restart: always
depends_on:
- es7
links:
- es7
ports:
- 11800:11800
- 12800:12800
environment:
TZ: Asia/Shanghai
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: es7:9200
skywalking-ui:
image: apache/skywalking-ui:8.6.0
container_name: skywalking-ui
restart: always
depends_on:
- skywalking-oap
links:
- skywalking-oap
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
SW_OAP_ADDRESS: skywalking-oap:12800
chmod -R 777 /data/elasticsearch/data
添加报警配置
注意:确认 SkyWalking 版本和告警插件版本:要使用告警功能,您需要安装 SkyWalking 版本大于等于 8.6,并且安装告警插件版本大于等于 1.3.0。
配置alarm-settings.yml
# DingTalk Robot Webhook URL
SW_ALARM_DINGTALK_ROBOT_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxx
# WeChat Work Robot Webhook URL
SW_ALARM_WECHAT_WORK_ROBOT_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxx
#启用告警通知
# Enable alarm notification
SW_ALARM_NOTIFICATION_ENABLED=true
# Alarm notification interval (in seconds)
SW_ALARM_NOTIFICATION_INTERVAL=300
自定义告警规则
如果您需要自定义告警规则,则需要编辑
alarm-settings.yml
文件并添加自定义的规则。具体来说,您需要按照 YAML 格式定义每个规则及其参数,例如:在下述示例中,我们定义了一个名为
service_cpm
的告警规则metricNames:指标名称
threshold: 指标阀值
period: 指标采集的简隔周期,单位为分钟
count: 出现一次则报警
sendRecoveryAlarm:恢复后再次发送通知
silence-period: 触发告警后的静默时间,单位为分钟
message: 发送的消息
需要注意的是,当您自定义告警规则时,需要确保规则的名称不与默认规则冲突,并且规则的参数符合 SkyWalking 定义的数据类型和范围。同时,建议谨慎测试自定义规则的正确性和可靠性,在生产环境中使用前进行充分测试。
cat alarm-settings.yml
rules:
# 匹配请求数超过1则报警
service_cpm_rule: 唯一的规则名称(自定义),必须以rule结尾。
metricNames: cpuUsagePercent # 指标名称从core.al文件获取
op: ">"
threshold: 1
period: 1
count: 1
sendRecoveryAlarm: true
silence-period: 2
message: 这里是告警信息,当前指标server_npm请求值大于1.
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "apache skywaking alrm: \n %s"
}
}
webhooks:
-url: https://oapi.dingtalk.com/robot/send?access_token=xxxx
架构规划:
skywalking-ui: 前端服务,端口号8080
skywalking-oap: 可观测性分析平台,11800为grpc数据端口,12800为http数据端口
es7: 9200为elasticsearch数据读写端口,skywalking支持的存储有elasticsearch、h2、mysql、tidb、influxdb、postgresql等
java应用示例
java命令运行halo博客并实现链路追踪
软件环境
从1.4.3起,版本要求为11以上的版 本。1.4.3以下需要1.8以上的版本。
1、准备skwalking-java-agent
https://skywalking.apache.org/downloads/
mkdir -p /data/skywalking/java-agent
cd /data/skywalking/java-agent
wget -c https://dlcdn.apache.org/skywalking/java-agent/8.13.0/apache-skywalking-java-agent-8.13.0.tgz --no-check-certificate
tar xf apache-skywalking-java-agent-8.13.0.tgz
vim config/agent.config
... # 代码名称,这里定义为halo
20 agent.service_name=${SW_AGENT_NAME:halo}
21
22 # The agent namespace 项目名称,这里定义为halo
23 agent.namespace=${SW_AGENT_NAMESPACE:halo}
... # 指向skywalking的IP和端口
101 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:10.0.7.2:11800}
2、安装jdk
tar xf jdk-11.0.14_linux-x64_bin.tar.gz -C /usr/local/jdk
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version
3、halo app下载
mkdir /data/app
cd /data/app
wget -c https://dl.halo.run/release/halo-1.4.17.jar --no-check-certificate
4、启动应用
一个启应对应一个agent。go有go的agent,java有java的agent
# 相对路径
java -javaagent:./skywalking-agent.jar -jar /data/app/halo-1.4.17.jar
绝对路径
java -javaagent:/data/skywalking/java-agent/skywalking-agent/skywalking-agent.jar -jar /data/app/halo-1.4.17.jar
5、halo博客访问注册
进之博客网站后编写文章产生访问信息
EasySwoole 中集成 SkyWalking 的具体步骤
https://skywalking.apache.org/docs/skywalking-php/v0.3.0/en/setup/service-agent/php-agent/readme/
skywalking仪表盘简介
global: 显示服务的全局统计详情
服务(Service)-表示对请求提供相同行为的一系列或一组工作负载(服务名称),在使用agent或sdk的时候 ,可以自定义服务的名字,如果不定义的话,skywalking会使用你在平台(列如istio)上定义的名字
服务实例-上述的一组工作负载中的每一个工作负载称为一个实例(一个服务运行的节点)一个服务实例可以是一个kubernetes中的pod或者一个虚拟机甚至是物理机
端口:对于特定服务所接收的请求路径,如http的uri路径和grpc服务的类+方法签名,如/api/v1