经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
Skywalking APM监控系列(二、Mysql、Linux服务器与前端JS接入Skywalking监听)
来源:cnblogs  作者:GuZhenYin  时间:2023/10/13 8:57:10  对本文有异议
前言

上篇我们介绍了Skywalking的基本概念与如何接入.Net Core项目,感兴趣可以去看看:

Skywalking APM监控系列(一丶.NET5.0+接入Skywalking监听)

本篇我们主要讲解一下Skywalking如何接入mysql数据库监听与Linux服务器的监听

其实从Skywalking设计之初 应该只是单独的链路跟踪,发展到现在 已经成为了一个成熟的APM框架了.

既然是APM那我们当然需要监听到数据库情况和服务器的情况.

本篇就讲讲如何监听这些数据

 

Mysql接入Skywalking

 

mysql接入Skywalking需要两个工具:

mysqld-exporter

pentelemetry-collector

他们一个负责数据库的数据采集,一个负责将采集到的数据汇总后发送给Skywalking的OAP服务,并最终通过UI展示在界面上.

所以,我们需要先安装这两个工具,当然,他们也是支持容器化的,所以这里采用docker运行,如下:

1.部署mysqld-exporter

  1. docker run -d -p 9104:9104 --name mysqld-exporte -e DATA_SOURCE_NAME=mysql_exporter:mysql_exporter@(mysql地址:3306)/ -e TZ=Asia/Shanghai prom/mysqld-exporter:v0.14.0

这里,我们通过环境变量DATA_SOURCE_NAME,直接将数据库连接给赋予mysqld-exporter

 

2.部署pentelemetry-collector

首先我们需要创建pentelemetry-collector的yaml配置文件,创建文件otel-collector-config.yaml,输入内容如下:

  1. receivers:
  2. prometheus:
  3. config:
  4. scrape_configs:
  5. - job_name: 'mysql-monitoring'
  6. scrape_interval: 5s
  7. static_configs:
  8. - targets: ['mysqld-exporter:9104'] #这里是mysqld-exporter的地址
  9. labels:
  10. host_name: showcase
  11. processors:
  12. batch:
  13. exporters:
  14. otlp:
  15. endpoint: SkyWalking OAP 地址:11800
  16. tls:
  17. insecure: true
  18. service:
  19. pipelines:
  20. metrics:
  21. receivers:
  22. - prometheus
  23. processors:
  24. - batch
  25. exporters:
  26. - otlp

这里解释一下含义:

1)receivers 用于配置 Collector 的数据来源,这里是从 prometheus 的 mysqld_exporter 抓取数据;

2)exporters 用于配置要将接收到的数据发送到哪里,这里是发送到 SkyWalking OAP ;

3)processors 指定如何处理接收到的数据;

4)service 配置将整个 pipelines 串起来。

然后我们运行pentelemetry-collector容器,命令如下:

  1. docker run -d -p 55678:55678--name otel-collector -v /home/otel-collector-config.yaml:/etc/otel-collector-config.yaml -e TZ=Asia/Shanghai otel/opentelemetry-collector:0.86.0 --config=/etc/otel-collector-config.yaml

这里将我们刚写好的otel-collector-config.yaml文件映射至容器内,并通过这个配置运行pentelemetry-collector.

这样就完成了整个部署工作

3.效果预览

 

 

 

 

Linux服务器接入Skywalking

Linux服务器接入Skywalking也需要两个工具:

node_exporter

pentelemetry-collector

他们一个负责数据库的数据采集,一个负责将采集到的数据汇总后发送给Skywalking的OAP服务,并最终通过UI展示在界面上.

所以,我们需要先安装这两个工具,虽然node_exporter支持容器化运行,但是需要额外配置一些其他的东西,所以我们采取直接运行在linux主机上.(官网的最佳实践也是建议直接跑在服务器中)

1.我们需要先安装node_exporter,下载地址如下:

Release 1.6.1 / 2023-06-17 · prometheus/node_exporter (github.com)

各位根据需要,自行下载,(需小技巧上网)

然后我们将下好的压缩包复制到服务器上

通过命令解压,如下:

  1. tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz

然后,我们需要创建一个系统服务,让node_exporter能够开机自启并通过系统管控,执行命令如下:

  1. vim /etc/systemd/system/node_exporter.service

复制如下内容:

  1. [Unit]
  2. Description=node exporter service
  3. Documentation=https://prometheus.io
  4. After=network.target
  5. [Service]
  6. Type=simple
  7. User=root
  8. Group=root
  9. ExecStart=/home/skywalking/node_exporter-1.6.1.linux-amd64/node_exporter #这里是node_exporter的解压地址
  10. Restart=on-failure
  11. [Install]
  12. WantedBy=multi-user.target

执行命令刷新系统服务命令:

  1. systemctl daemon-reload

开启node_exporter服务命令:

  1. systemctl start node_exporter

这里服务默认监听9100端口,请勿占用,如需变更,可以自行百度...

这样就完成了node_exporter的安装

 

2.修改pentelemetry-collector的配置

我们直接修改otel-collector-config.yaml如下:

  1. receivers:
  2. prometheus:
  3. config:
  4. scrape_configs:
  5. - job_name: "vm-monitoring" # make sure to use this in the vm.yaml to filter only VM metrics
  6. scrape_interval: 10s
  7. static_configs:
  8. - targets: ['gateway.docker.internal:9100'] # 这里是主机服务器的采集地址
  9. prometheus/2:
  10. config:
  11. scrape_configs:
  12. - job_name: 'mysql-monitoring'
  13. scrape_interval: 5s
  14. static_configs:
  15. - targets: ['gateway.docker.internal:9104'] # 这里是主机mysql的采集地址
  16. labels:
  17. host_name: showcase
  18. processors:
  19. batch:
  20. batch/2:
  21. exporters:
  22. otlp:
  23. endpoint: gateway.docker.internal:11800 # 这里是OAP Server address
  24. tls:
  25. insecure: true
  26. otlp/2:
  27. endpoint: gateway.docker.internal:11800 # 这里是OAP Server address
  28. tls:
  29. insecure: true
  30. #insecure: true
  31. service:
  32. pipelines:
  33. metrics:
  34. receivers: [prometheus]
  35. processors: [batch]
  36. exporters: [otlp]
  37. metrics/2:
  38. receivers: [prometheus/2]
  39. processors: [batch/2]
  40. exporters: [otlp/2]

改好配置后,我们重启上面的pentelemetry-collector服务即可

3.效果预览

 

 

 

 

前端JS如何接入Skywalking

Skywalking同时是可以支持监听整个前端的错误信息与运行情况的

相对来说也比较简单引入skywalking-client-js 这个包就可以了.

不过也要提一下,比如我们的前端可能托管在MVC.是通过视图来实现的前端,而不是各种前端脚手架.

那就需要单独引入一下.

我们通过npm引入skywalking-client-js 这个包

然后添加前端JS引用代码如下

  1. <script src="~/scripts/skywalking-client-js/lib/index.js"></script>

直接在_Layout母版页编写JS代码如下:

  1. ClientMonitor.register({
  2. // 基础配置
  3. collector: GetService("skyaop"), //这里填写skywalkingapo的地址
  4. service: 'SPD_Web',
  5. serviceVersion: '@JSConfig.Version',
  6. pagePath: window.location.href,
  7. useFmp: true
  8. })

这样,我们所有引用了母版页的前端界面 就都纳入到监听下了.

原文链接:https://www.cnblogs.com/GuZhenYin/p/17759287.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号