极客时间运维进阶训练营第八周作业

一、基于docker-compose部署skywalking

[root@es-1 ~]# mkdir -pv /data/elasticsearch/            #创建elasticsearch数据目录(mysql性能不足以满足大量读写,一般使用es)
mkdir: created directory ‘/data/elasticsearch/’
[root@es-1 ~]# ls -ld /data/elasticsearch
drwxr-xr-x 2 root root 4096 Dec 17 21:13 /data/elasticsearch
[root@es-1 ~]#  chown 1000.1000 -R /data/elasticsearch        #更改 /data/elasticsearch 目录属性
[root@es-1 ~]# ls -ld /data/elasticsearch            #elasticsearch里启动es进程使用的用户,UID、GID是1000
drwxr-xr-x 2 1000 1000 4096 Dec 17 21:13 /data/elasticsearch
[root@es-1 ~]#  mkdir /data/skywalking-9.3-docker-composefile -pv
mkdir: created directory ‘/data/skywalking-9.3-docker-composefile’

[root@es-1 ~]# cd /data/skywalking-9.3-docker-composefile/
[root@es-1 skywalking-9.3-docker-composefile]# vim docker-compose.yml        #编写docker-compose文件
version: "3"

services:
  elasticsearch:
    image: elasticsearch:8.4.2
    container_name: elasticsearch
    ports:
      - "9200:9200"
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"] #心跳检测,成功之后不再执⾏后⾯的退出
      interval: 60s    #心跳检测间隔周期
      timeout: 10s
      retries: 3
      start_period: 60s   #首次检测延迟时间
    environment:
      discovery.type: single-node   #单节点模式
      ingest.geoip.downloader.enabled: "false"
      bootstrap.memory_lock: "false"    #内存锁定,内存足够大时可以开启
      ES_JAVA_OPTS: "-Xms512m -Xmx512m"
      TZ: "Asia/Shanghai"
      xpack.security.enabled: "false"  #单机模式
    ulimits:
      memlock:
        soft: -1
        hard: -1

  skywalking-oap:
    image: apache/skywalking-oap-server:9.3.0
    container_name: skywalking-oap
    depends_on:
      elasticsearch:
        condition: service_healthy
    links:
      - elasticsearch
    environment:
      SW_HEALTH_CHECKER: default
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      JAVA_OPTS: "-Xms2048m -Xmx2048m"
      TZ: Asia/Shanghai
      SW_TELEMETRY: prometheus
    healthcheck:
      test: ["CMD-SHELL", "/skywalking/bin/swctl ch"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    restart: on-failure
    ports:
      - "11800:11800"
      - "12800:12800"

  skywalking-ui:
    image: apache/skywalking-ui:9.3.0
    depends_on:
      skywalking-oap:
        condition: service_healthy
    links:
      - skywalking-oap
    ports:
      - "8080:8080"
    environment:
      SW_OAP_ADDRESS: http://skywalking-oap:12800
      SW_HEALTH_CHECKER: default
      TZ: Asia/Shanghai
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost:8080 || exit 1"]  #心跳检测,成功之后不再执行后面的退出
      interval: 60s   #心跳检测间隔周期
      timeout: 10s
      retries: 3
      start_period: 60s   #首次检测延迟时间

[root@es-1 skywalking-9.3-docker-composefile]# docker-compose up -d   

在这里插入图片描述
验证skywalking web界⾯:
http://124.70.72.16:8080/
在这里插入图片描述
验证elasticsearch数据:
http://124.70.72.16:9200/
在这里插入图片描述

二、实现单体服务halo博客和jenkins的请求链路跟踪

1、halo博客:

准备skywalking java agent :            #追踪jave程序,需要部署java语言客户端(追踪不通种客户端需要不同语言的客户端)
[root@es-1 day08]# tar -xvf apache-skywalking-java-agent-8.13.0.tgz -C /data/    #解压java agent
[root@es-1 day08]# cd /data/skywalking-agent/
[root@es-1 skywalking-agent]# ls
activations  bootstrap-plugins  config  LICENSE  licenses  logs  NOTICE  optional-plugins  optional-reporter-plugins  plugins  skywalking-agent.jar
[root@es-1 skywalking-agent]# vim config/agent.config        #修改java agent 配置文件
20 agent.service_name=${SW_AGENT_NAME:HY-halo-SWtest01}        #给自己需要追踪的应用起个名字,方便在skywalking中区分和查找
23 agent.namespace=${SW_AGENT_NAMESPACE:HY-01}                        #在skywalking中用ns进行应用隔离,可写可不写
101 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.0.2:11800}        #skywalking地址

安装java11:
[root@es-1 skywalking-agent]# yum -y install java-11
[root@es-1 skywalking-agent]# java -version
openjdk version "11.0.17" 2022-10-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.17.0.8-2.el7_9) (build 11.0.17+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.17.0.8-2.el7_9) (build 11.0.17+8-LTS, mixed mode, sharing)
[root@es-1 skywalking-agent]#

下载halo博客单体jar包:
[root@es-1 apps]# wget https://dl.halo.run/release/halo-1.6.1.jar        #下载kalo博客软件包
[root@es-1 skywalking-agent]# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.6.1.jar
                    #绝对路径启动命令(相对路径启动命令:java -javaagent:./skywalking-agent.jar -jar /apps/halo-1.6.1.jar)

安装过程中:
在这里插入图片描述
看到这些字样就装好了
在这里插入图片描述
页面访问halo博客:124.70.72.16:8090
在这里插入图片描述
编写测试博客,发布:
在这里插入图片描述
到skywalking中查看数据:
Service Names:配置文件中编写的app名称|分区ns名
在这里插入图片描述
总览数据:
在这里插入图片描述
trace:追踪信息。可以看到各个节点用时及异常节点,方便排错
在这里插入图片描述
2、tomcat运行Jenkins实现链路跟踪

[root@es-1 day08]# tar -xvf apache-tomcat-8.5.84.tar.gz
[root@es-1 webapps]# rm -rf /root/jeek/day08/apache-tomcat-8.5.84/webapps/*        #删除原先的内容
[root@es-1 webapps]# cp /root/jeek/day08/jenkins.war  .                
                            #将jenkins的war包放到/root/jeek/day08/apache-tomcat-8.5.84/webapps/目录下
[root@es-1 webapps]# ls
jenkins.war
[root@es-1 apache-tomcat-8.5.84]# vim /data/skywalking-agent/config/agent.config
20 agent.service_name=${SW_AGENT_NAME:HY-tomcat-jenkins-SWtest02}        #给自己需要追踪的应用起个名字,方便在skywalking中区分和查找
23 agent.namespace=${SW_AGENT_NAMESPACE:HY-02}                        #在skywalking中用ns进行应用隔离,可写可不写
101 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.0.2:11800}        #skywalking地址

[root@es-1 skywalking-agent]# vim /apps/apache-tomcat-8.5.84/bin/catalina.sh        #修改tomcat配置文件,配置tomcat加载skywalking
添加一行:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS

tomcat要使用8080端口,将skywalking端口改成8081
在这里插入图片描述
启动tomcat:

[root@es-1 apache-tomcat-8.5.84]# ./bin/catalina.sh run            #运行

在这里插入图片描述
访问tomcat页面(现在是jenkins页面):http://124.70.72.16:8080/
在这里插入图片描述
登陆skywalking页面http://124.70.72.16:8081
在这里插入图片描述
在这里插入图片描述

三、实现dubbo微服务实现链路跟踪案例

部署注册中心:
[root@es-1 day08]# tar -xvf apache-zookeeper-3.7.1-bin.tar.gz
[root@es-1 day08]# cd apache-zookeeper-3.7.1-bin/conf/
[root@es-1 conf]# ls
configuration.xsl  log4j.properties  zoo_sample.cfg
[root@es-1 conf]# cp zoo_sample.cfg zoo.cfg            #将配置文件模板拷贝成正式的配置文件,zk会读取zoo.cfg而不读取zoo_sample.cfg;可以不用修改
[root@es-1 apache-zookeeper-3.7.1-bin]# ./bin/zkServer.sh start        #启动zk

在这里插入图片描述

部署provider生产者(server端)(本案例中使用java-11也可以成功启动)
[root@es-1 day08]# cd /data/skywalking-agent/
[root@es-1 skywalking-agent]# vim config/agent.config
20 agent.service_name=${SW_AGENT_NAME:HY-dubbo-server03}        #给自己需要追踪的应用起个名字,方便在skywalking中区分和查找
23 agent.namespace=${SW_AGENT_NAMESPACE:HY-03}                        #在skywalking中用ns进行应用隔离,可写可不写
101 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.0.2:11800}        #skywalking地址

[root@es-1 skywalking-agent]# vim /etc/profile        #添加主机名解析,dubbo里面的zk地址写在了源码中,变量为ZK_SERVER1
新加一行:
export ZK_SERVER1=192.168.0.2
[root@es-1 skywalking-agent]# source /etc/profile        #重新加载
[root@es-1 skywalking-agent]# mkdir -pv /apps/dubbo/provider
mkdir: created directory ‘/apps/dubbo’
mkdir: created directory ‘/apps/dubbo/provider’
[root@es-1 skywalking-agent]#
[root@es-1 skywalking-agent]# cp /root/jeek/day08/dubbo-server.jar /apps/dubbo/provider/    #拷包到相应目录
[root@es-1 skywalking-agent]# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/provider/dubbo-server.jar            #启动provider生产者(server端)

在这里插入图片描述
在这里插入图片描述

部署consumer(消费者,client端):
安装java环境和shywalking java agent,方法同上
[root@es-1 day08]# vim /data/skywalking-agent/config/agent.config
20 agent.service_name=${SW_AGENT_NAME:HY-dubbo-client04}        #给自己需要追踪的应用起个名字,方便在skywalking中区分和查找
23 agent.namespace=${SW_AGENT_NAMESPACE:HY-04}                        #在skywalking中用ns进行应用隔离,可写可不写
101 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.0.2:11800}        #skywalking地址

[root@es-1 day08]# vim /etc/profile
export ZK_SERVER1=192.168.0.2
export SW_SERVER="192.168.0.2"
[root@es-1 day08]# source /etc/profile
[root@es-1 day08]# mkdir -pv /apps/dubbo/consumer
mkdir: created directory ‘/apps/dubbo/consumer’
[root@es-1 day08]# cp dubbo-client.jar /apps/dubbo/consumer/
[root@es-1 day08]# java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/consumer/dubbo-client.jar			##启动consumer消费者(client端)

四、实现skywalking的钉钉告警

建一个钉钉群----群设置-----智能群助手-----添加机器人—自定义(通过webhook接入自定义服务)----自定义关键字(SkyWalking)—提取出生成的webhook
在这里插入图片描述

[root@es-1 data]# vim 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: 1 #评估指标的间隔周期
    # 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: 0 #触发告警后的静默时间
    message: "服务被访问次数大于1了" #告警信息

dingtalkHooks:
  textTemplate: |-
    {
      "msgtype": "text",
      "text": {
        "content": "Apache SkyWalking Alarm: \n %s."
      }
    }
  webhooks:
    - url: https://oapi.dingtalk.com/robot/send?access_token=7e636de8e4f4ec42cea12a2b9c56f223443f0d373e490a7f2cbbf5c71d2ebd93 #注意钉钉关键字

[root@es-1 data]# docker cp alarm-settings.yml 3cb70c9fe714:/skywalking/config/        #将写好的配置文件拷贝到skywalking-oap容器中
[root@es-1 data]# docker restart 3cb70c9fe714            #重启skywalking-oap容器

页面访问几次服务。
钉钉群查看告警:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值