废话不多说,看到官网老版本支持到本月底,升级升级。。。。。。
本文章中未涉及到nacos、mysql的安装
服务端架构
agent
准备工作
1、机器准备1台4核8G。
2、安装环境centos7
3、软件环境
docker
docker kafka,kafka-map
docker zoopkepper
docker mysql-exporter
docker otel/opentelemetry-collector:0.50.0
docker elasticsearch7
skywalking 软件包下载
环境安装
docker
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-18.03.1.ce
docker version
kafka安装
1、安装zookeeper
docker pull wurstmeister/zookeeper
2、启动zookeeper
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
3、安装kafka
docker pull wurstmeister/kafka
4、启动kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
5、安装kafka-map
docker pull dushixiang/kafka-map
6、启动kafka-map
docker run -d --name kafka-map -p 8085:8080 -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin dushixiang/kafka-map:latest
7、访问kafka-map
8、配置
部署skywalking-apm
1、下载包
使用wget 命令下载或其他方式
2、skywalking解压
tar -zxvf apache-skywalking-apm-9.2.0.tar.gz
3、修改配置文件application.yml
3.1 cluster的配置
cluster:
# 配置我们是集群还是单节点。这里我们是单节点,所以不做改变。
selector: ${SW_CLUSTER:standalone}
3.2 存储配置
storage:
#配置存储选择的es,配置ip即可
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
namespace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:IP:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
3.3 kafka 启用
kafka-fetcher:
# 把- 修改为default,修改IP
selector: ${SW_KAFKA_FETCHER:-}
default:
#IP 替换kafka的IP
bootstrapServers: ${SW_KAFKA_FETCHER_SERVERS:IP:9092}
namespace: ${SW_NAMESPACE:""}
4、执行脚本增加权限
chmod 777 *.sh
5、启动服务
startup.sh
部署skywalking-ui
注意:skywalking-ui 已编译好的静态资源,后端地址配置的是localhost
下载地址
nginx安装和配置
1、nginx 安装
yum -y install nginx
2、nginx配置
server {
listen 8082;
# listen somename:8080;
server_name localhost;
# alias another.alias;
location /graphql {
proxy_method POST;
#oap为sky部署apm服务的地址
proxy_pass http://oap:12800/graphql;
}
location / {
#dist为skywalking-ui的资源
alias /usr/local/nginx/html/dist/;
try_files $uri $uri/ /dist/index.html;
}
}
3、浏览器访问
http://IP:8082
部署skywalking-agent
注意 官网选择最新版V8.13.0
1、下载skywalking-agent
2、解压客户端到/usr/local
tar -zxvf apache-skywalking-java-agent-8.13.0.tgz
3、目录结构如下 引用官网说明
+-- agent
+-- activations
apm-toolkit-log4j-1.x-activation.jar
apm-toolkit-log4j-2.x-activation.jar
apm-toolkit-logback-1.x-activation.jar
...
+-- config
agent.config
+-- plugins
apm-dubbo-plugin.jar
apm-feign-default-http-9.x.jar
apm-httpClient-4.x-plugin.jar
.....
+-- optional-plugins
apm-gson-2.x-plugin.jar
.....
+-- bootstrap-plugins
jdk-http-plugin.jar
.....
+-- logs
skywalking-agent.jar
4、kafka插件拷贝
因架构使用的kafka,所以我们根据官方提供的资料kafka 插件默认是不启用,需要从把kafka-reporter-plugin-x.y.z.jar
, 从 agent/optional-reporter-plugins
移动到 agent/plugins目录下
参考资料地址:
5、配置agent.config
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
# Kafka producer configuration
plugin.kafka.bootstrap_servers=${SW_KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
plugin.kafka.get_topic_timeout=${SW_GET_TOPIC_TIMEOUT:10}
目录
3、安装mysqld_exporter和prometheus-mysql-exporter
6、项目启动参数
目前应用名称serverName 通过启动参数传递,其他的方式还未深度研究,后续研究探讨
-
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAME=youAppService -jar yourApp.jar
监控 MySQL Server部署
架构图
上面展示的是在 MySQL 客户端层面的监控,那如果想要监控 MySQL Server 该怎么做呢,SkyWalking 发布的 9.2.0 版本升级了许多内容,其中一项就是开始支持 MySQL Server Monitoring。
SkyWalking 是如何监控 MySQL Server 程序的呢,SkyWalking 社区并没有重复造轮子,而是利用了已有的开源实现来采集 MySQL Server 的 metrics 数据,并将 metrics 发送到 SkyWalking OAP,由 MAL 引擎去分析、计算、聚合和存储,具体流程如下:
1、mysql数据库创建账号:
create user 'exporter'@'%' identified by 'exporter';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%' WITH MAX_USER_CONNECTIONS 3;
flush privileges;
2、安装 docker-compose
-
运行以下命令以下载Docker Compose的当前稳定版本
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3.授权
sudo chmod +x /usr/local/bin/docker-compose
4、检查是否安装成功
cd /docker-compose version
3、安装mysqld_exporter和prometheus-mysql-exporter
注意 mysqld_exporter的安装参考prometheus-mysql-exporter提供的docker-compose方案部署
参考地址:
https://github.com/apache/skywalking/tree/cb8845a1dd8a0efaa8a6c8e6cb3b7c378729a401/test/e2e-v2/cases/mysql/prometheus-mysql-exporter
1、创建docker-compose.yml文件
touch /opt/data/docker-compose.yml
touch /opt/data/otel-collector-config.yaml
2、配置内容docker-compose.yml
version: '3'
services:
mysqld-exporter:
image: prom/mysqld-exporter:v0.14.0
container_name: mysqld-exporter
ports:
- 9104:9104
environment:
- DATA_SOURCE_NAME=exporter:exporter@(数据库ip:3306)/
- TZ=Asia/Shanghai
otel-collector:
image: otel/opentelemetry-collector:0.50.0
container_name: otel-collector
command: [ "--config=/etc/otel-collector-config.yaml" ]
volumes:
- /opt/data/otel-collector-config.yaml:/etc/otel-collector-config.yaml
expose:
- 55678
3、配置otel-collector-config.yaml
receivers:
prometheus:
config:
scrape_configs:
- job_name: 'mysql-monitoring'
scrape_interval: 5s
static_configs:
- targets: ['mysqld-exporter:9104']
labels:
host_name: showcase #skywlking show serversName
processors:
batch:
exporters:
otlp:
endpoint: skywalking-oap服务地址:11800
tls:
insecure: true
service:
pipelines:
metrics:
receivers:
- prometheus
processors:
- batch
exporters:
- otlp
4、启动容器
docker-compose up -d
5、查看容器情况
docker pa -a
6、查看容器启动日志是否有异常
docker logs -f 容器ID
7、查看ui