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/skwget https://dlcdn.apache.org/skywalking/9.2.0/apache-skywalking-apm-9.2.0.tar.gztar xf apache-skywalking-apm-9.2.0.tar.gz apt install openjdk-11-jdk -yjava --version
指定elasticsearch为数据库及elasticsearch的集群地址
vim config/application.ymlstorage: 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.0docker pull apache/skywalking-oap-server:8.9.1docker pull apache/skywalking-ui:8.9.1mkdir -p /Users/admin/Documents/data/elasticsearch/datamkdir -p /Users/admin/Documents/data/elasticsearch/logsdocker 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-oapdocker 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-uidocker 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/skwget https://dlcdn.apache.org/skywalking/java-agent/8.12.0/apache-skywalking-java-agent-8.12.0.tgztar 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 #服务器端ipjava -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" />