一【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 部署。
系统结构:
此处选择,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/
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消费信息
5.2 skywalking-ui 界面信息
只要有接入,就会上报了。如果没有数据,就检查下agent log , kafka topic ,es 索引等。