微服务的链路追踪和流量可视化-钉钉告警

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/sk
wget https://dlcdn.apache.org/skywalking/9.2.0/apache-skywalking-apm-9.2.0.tar.gz
tar xf apache-skywalking-apm-9.2.0.tar.gz 

apt install openjdk-11-jdk -y
java --version

指定elasticsearch为数据库及elasticsearch的集群地址


vim config/application.yml
storage:
  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
微服务的链路追踪和流量可视化-钉钉告警_第1张图片
docker 部署方法

docker pull elasticsearch:7.9.0
docker pull apache/skywalking-oap-server:8.9.1
docker pull apache/skywalking-ui:8.9.1


mkdir -p /Users/admin/Documents/data/elasticsearch/data
mkdir -p /Users/admin/Documents/data/elasticsearch/logs

docker 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-oap

docker 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-ui
docker 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/sk
wget https://dlcdn.apache.org/skywalking/java-agent/8.12.0/apache-skywalking-java-agent-8.12.0.tgz
tar 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  #服务器端ip


java -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中。
微服务的链路追踪和流量可视化-钉钉告警_第2张图片
微服务的链路追踪和流量可视化-钉钉告警_第3张图片
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?access_token=5c9935e376c711f0526528e2b5c8514f7fbc255ae
      secret: SEC12f877554b2fca465a7961e22863

重启服务
微服务的链路追踪和流量可视化-钉钉告警_第4张图片
微服务的链路追踪和流量可视化-钉钉告警_第5张图片
微服务的链路追踪和流量可视化-钉钉告警_第6张图片
微服务的链路追踪和流量可视化-钉钉告警_第7张图片

你可能感兴趣的:(微服务,架构,云原生)