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" />