• Skywalking APM监控系列(二、Mysql、Linux服务器与前端JS接入Skywalking监听)


    前言

    上篇我们介绍了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

    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,输入内容如下:

    复制代码
    receivers:
      prometheus:
        config:
         scrape_configs:
           - job_name: 'mysql-monitoring'
             scrape_interval: 5s
             static_configs:
               - targets: ['mysqld-exporter:9104'] #这里是mysqld-exporter的地址
                 labels:
                   host_name: showcase
    processors:
      batch:
    
    exporters:
      otlp:
        endpoint: SkyWalking OAP 地址:11800
        tls:
          insecure: true
    service:
      pipelines:
        metrics:
          receivers:
          - prometheus
          processors:
          - batch
          exporters:
          - otlp
    复制代码

    这里解释一下含义:

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

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

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

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

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

    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)

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

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

    通过命令解压,如下:

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

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

    vim /etc/systemd/system/node_exporter.service

    复制如下内容:

    复制代码
    [Unit]
    Description=node exporter service
    Documentation=https://prometheus.io
    After=network.target
    
    [Service]
    Type=simple
    User=root
    Group=root
    ExecStart=/home/skywalking/node_exporter-1.6.1.linux-amd64/node_exporter #这里是node_exporter的解压地址
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    复制代码

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

    systemctl daemon-reload

    开启node_exporter服务命令:

    systemctl start node_exporter

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

    这样就完成了node_exporter的安装

     

    2.修改pentelemetry-collector的配置

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

    复制代码
    receivers:
      prometheus:
        config:
          scrape_configs:
            - job_name: "vm-monitoring" # make sure to use this in the vm.yaml to filter only VM metrics
              scrape_interval: 10s
              static_configs:
                - targets: ['gateway.docker.internal:9100'] # 这里是主机服务器的采集地址
      prometheus/2:
        config:
         scrape_configs:
           - job_name: 'mysql-monitoring'
             scrape_interval: 5s
             static_configs:
               - targets: ['gateway.docker.internal:9104']  # 这里是主机mysql的采集地址
                 labels:
                   host_name: showcase
    
    processors:
      batch:
      batch/2:
    
    exporters:
      otlp:
        endpoint: gateway.docker.internal:11800 # 这里是OAP Server address
    
        tls:
          insecure: true
      otlp/2:
        endpoint: gateway.docker.internal:11800  # 这里是OAP Server address
        tls:
          insecure: true
        #insecure: true
    
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: [batch]
          exporters: [otlp]
        metrics/2:
          receivers: [prometheus/2]
          processors: [batch/2]
          exporters: [otlp/2]
    复制代码

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

    3.效果预览

     

     

     

     

    前端JS如何接入Skywalking

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

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

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

    那就需要单独引入一下.

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

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

        

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

    复制代码
     ClientMonitor.register({
         // 基础配置
         collector: GetService("skyaop"), //这里填写skywalkingapo的地址
         service: 'SPD_Web',
         serviceVersion: '@JSConfig.Version',
         pagePath: window.location.href,
         useFmp: true
     })
    复制代码

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

  • 相关阅读:
    结构体数组经典运用---选票系统
    Inksape 设置画布像素尺寸及透明背景
    npm与包
    【外汇天眼】价格波动的节奏感:优化止盈方法!
    Spring Cloud Alibaba —— 高可用流量控制组件
    2013年第四届C/C++ A组蓝桥杯省赛真题解析
    (CVPR 2019)Associatively Segmenting Instances and Semantics in Point Clouds
    无代码开发添加数据入门教程
    用Pyhon写一款简单的益智类小游戏——2048
    Redis 缓存过期淘汰策略
  • 原文地址:https://www.cnblogs.com/GuZhenYin/p/17759287.html