skywalking 8.7.0 kafka docker/rancher部署

一【skywlking介绍】
官网:https://skywalking.apache.org/
github
SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based architectures.
SkyWalking:一种APM(应用程序性能监视器)系统,专门为微服务、云本机和基于容器的体系结构设计。
现在也是主流开源的apm,很多公司都拿他进行二开,集成链路追踪。
二【部署】
此处仅介绍skywalking 8.7.0 + kafka 消息订阅 +es7 存储 + rancher 部署。
系统结构:
skywalking 8.7.0 kafka docker/rancher部署
此处选择,java-agent 配置kafka插件,日志收集往kafka做消息订阅处理,再从kafka写入到es7,skywalking服务端再从es7获取数据,skywalking-ui展示数据。
2.1 docker 部署方式
镜像介绍:
wurstmeister/kafka --kafka服务端
wurstmeister/zookeeper --zookeeper服务端
sheepkiller/kafka-manager --kafka管理后台
apache/skywalking-oap-server:8.7.0-es7 --skywalking服务端
apache/skywalking-ui:8.8.1 --skywalking-ui 此处选择 8.8.1版本,原因是8.7.0 的有bug,访问界面会出现404。 所以直接使用高版本的8.8.1 的ui
elasticsearch:7.9.3. --es选择7以上的版本
三【kafka部署】
具体可以查看此文档:docker部署kafka
3.1 拉取最新镜像,部署服务端

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

3.2 编写docker-compose.yml

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    depends_on: [ zookeeper ]
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.1
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /data/kafka/docker.sock:/var/run/docker.sock

3.3 服务镜像打包&启动

docker-compose build
docker-compose up -d

3.4 部署kafka管理后台

docker run -itd --name=kafka-manager -p 9000:9000 -e ZK_HOSTS="192.168.1.1:2181" sheepkiller/kafka-manager

3.5 kafka mananger的详细使用
根据文档,创建一个kafka集群。
四【skywalking部署】
4.1 es7部署
部署个简单的单机的es7

docker run -d --name elastic -p 9200:9200 -p 9300:9300  -e "discovery.type=single-node" elasticsearch:7.9.3

4.2 部署skywalking-oap-server
kafka 收集器配置,官网查看
Kafka Fetcher

启动参数详解

      - env:
        - name: SW_KAFKA_FETCHER  ##kafka收集器,是否开启,default 为开启
          value: default
        - name: SW_KAFKA_FETCHER_ENABLE_METER_SYSTEM ##启用kafka仪表系统
          value: "true"
        - name: SW_KAFKA_FETCHER_PARTITIONS_FACTOR ##kafka节点数,此处为单节点
          value: "1"
        - name: SW_KAFKA_FETCHER_SERVERS  ##kafka服务端地址
          value: 192.168.1.1:9092
        - name: SW_NAMESPACE  ##topic默认的空间名称,需要与agent匹配上
          value: test
        - name: SW_STORAGE  ##存储数据库,es7
          value: elasticsearch7
        - name: SW_STORAGE_ES_CLUSTER_NODES #es7地址
          value: 192.168.1.1:9200
        - name: TZ ##配置时区
          value: Asia/Shanghai

docker 部署启动时,加上以上参数 -e

docker run -d --name=skywalking-oap-server \
  --restart=always \
  -p 11800:11800 -p 12800:12800 \
  -e "SW_KAFKA_FETCHER=default" \
  -e "SW_KAFKA_FETCHER_ENABLE_METER_SYSTEM=true" \
  -e "SW_KAFKA_FETCHER_PARTITIONS_FACTOR=1" \
  -e "SW_KAFKA_FETCHER_SERVERS=192.168.1.1:9092" \
  -e "SW_NAMESPACE=test" \
  -e "SW_STORAGE=elasticsearch7" \
  -e "SW_STORAGE_ES_CLUSTER_NODES=192.168.1.1:9200" \
  -e "TZ=Asia/Shanghai" \
  apache/skywalking-oap-server:8.7.0-es7

k8s 部署 yaml 文件

      containers:
      - env:
        - name: SW_KAFKA_FETCHER  ##kafka收集器,是否开启,default 为默认开启
          value: default
        - name: SW_KAFKA_FETCHER_ENABLE_METER_SYSTEM ##启用kafka仪表系统
          value: "true"
        - name: SW_KAFKA_FETCHER_PARTITIONS_FACTOR ##kafka节点数
          value: "1"
        - name: SW_KAFKA_FETCHER_SERVERS  ##kafka服务端地址
          value: 192.168.1.1:9092
        - name: SW_NAMESPACE  ##topic默认的空间名称,需要与agent匹配上
          value: test
        - name: SW_STORAGE  ##存储数据库,es7
          value: elasticsearch7
        - name: SW_STORAGE_ES_CLUSTER_NODES #es7地址
          value: 192.168.1.1:9200
        - name: TZ ##配置时区
          value: Asia/Shanghai
        image: apache/skywalking-oap-server:8.7.0-es7
        imagePullPolicy: Always
        name: skywaling-oap-server
        ports:
        - containerPort: 11800
          name: grpc
          protocol: TCP
        - containerPort: 12800
          name: rest
          protocol: TCP

4.3 部署 skywalking-ui
参数详解:
-e SW_OAP_ADDRESS=http://192.168.30.1.1:12800 ##skywalkig-oap-server 服务端地址

docker run --restart=always -e TZ=Asia/Shanghai --name skywalking-ui -d -p 30119:8080 -e SW_OAP_ADDRESS=http://192.168.30.1.1:12800  apache/skywalking-ui:8.8.1

4.4 skywalking-agent
如何配置skywalking-agent
根据版本,下载对应的版本,此处为8.7.0-es7 下载时,请对应上es的版本,版本不一致会导致agent无法上报。
下载地址:https://archive.apache.org/dist/skywalking/8.7.0/
skywalking 8.7.0 kafka docker/rancher部署
apache-skywalking-apm-es7-8.7.0.tar.gz
下载解压,并将目录里的agent封装至java基础镜像包
本处是集成至dockerfile启动的基础镜像包
4.4.2 agent 优化
(1)调整kafka插件,将optional-reporter-plugins/kafka-reporter-plugin-8.7.0.jar 移动至 plugins/

cp agent/optional-reporter-plugins/kafka-reporter-plugin-8.7.0.jar   plugins/

(2)过滤接口插件,将系统不需要监控接口过滤,减少skywalking上报,界面展示。
将optional-plugins/apm-trace-ignore-plugin-8.7.0.jar 移动至 plugins/

cp agentoptional-plugins/apm-trace-ignore-plugin-8.7.0.jar   plugins/

在agent/config/下,新增文件 apm-trace-ignore-plugin.config,此处过滤的为健康检查接口

trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/actuator/**}

4.4.3 java启动脚本里,添加javaagent
启动参数
-javaagent:/data/agent/skywalking-agent.jar #探针agent 地址
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.30.1.1:11800 #skywalking收集器地址
-DSW_KAFKA_BOOTSTRAP_SERVERS=192.168.30.1.1:9092 #kafka地址
-DSW_KAFKA_NAMESPACE=test #kafka 空间名,与前文的skywalking-oap-server 一致
-DSW_AGENT_NAME=springname #java服务名

-javaagent:/data/agent/skywalking-agent.jar -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.30.1.1:11800 -DSW_KAFKA_BOOTSTRAP_SERVERS=192.168.30.1.1:9092  -DSW_KAFKA_NAMESPACE=test -DSW_AGENT_NAME=springname

五【界面展示】
5.1 kafka skywalking topic消费信息
skywalking 8.7.0 kafka docker/rancher部署
5.2 skywalking-ui 界面信息
skywalking 8.7.0 kafka docker/rancher部署
只要有接入,就会上报了。如果没有数据,就检查下agent log , kafka topic ,es 索引等。

上一篇:基于kubernetes实现链路监控


下一篇:C# .NET Framework 3.5 下 Task 与 Semaphore 的简单例子