• MeterSphere 监控方案


    前言:在部署MeterSphere之后,很多时候需要看下MeterSphere服务的监控信息,虽然有监控告警脚本,但还不是太直观,所以就结合 Prometheus+Exporter+Grafana 部署一套完整的MeterSphere监控方案。

    首先我们先罗列一下需要监控的容器:

    1. 服务器的信息或node节点:Node-Exporter
    2. 应用服务的监控(例如api-test,test-track):SpringBoot 自带的 Actuator
    3. MySQL: Mysql-Exporter
    4. Kafka: Kafka-Exporter
    5. 服务器上所有容器的信息:cAdvisor

    需要声明的是,此文章建立在有技术背景,并且了解 Prometheus、Exporter、Grafana 等组件有什么作用,如果需要了解具体工作原理,可以自行查阅资料。

    文章结尾有完整的 docker-compose 的 yml 文件,可以直接复制完整文件进行安装。

    一、使用 Grafana 集成 Node-Exporter 监控服务器资源信息

    MeterSphere 安装部署完整之后,自带了 Prometheus 和 Node-Exporter 组件,所以我们只需要简单的配置安装部署 Grafana,就可以进行监控了。
    Node-Exporter 可以监控服务器资源的 CPU、内存、磁盘、网络IO等信息。
    详细信息可参考:https://blog.csdn.net/qq_34556414/article/details/123443187

    1.1、确认Node-Exporter是否正常

    1. 首先,要确认 Prometheus 是否能够获取到服务器的监控数据, Prometheus 端口默认为9090,安装部署 MeterSphere 好之后,直接访问 http://192.168.xx.xx:9090 即可查看 Prometheus 页面。(如果出现访问不了,检查防火墙是否关闭,端口是否对外暴露)
    2. 查看 Targets 可以看到有9100端口的地址,Node-Exporter 默认监听端口为9100,如果状态为up,即为正常,代表可以查看到监控数据。

    image.png
    image.png
    image.png

    1.2、安装Grafana

    本文章是通过 Docker 的方式进行安装。
    注意,本次安装grafana版本为9.4.3版本,如果安装新版本,自行摸索如何操作。

    1. 在 /opt/metersphere/data/ 下面创建 grafana 文件目录。
    cd /opt/metersphere/data/
    mkdir grafana
    chmod 777 grafana
    
    • 1
    • 2
    • 3
    1. 在 /opt/metersphere 目录下,创建并编辑 docker-compose-grafana.yml,内容如下。(注意:如果是内网部署,需要在能访问互联网的机器上下载镜像,再进行上传。)
    version: "2.1"
    services:
      grafana:
        image: grafana/grafana:9.4.3
        restart: always
        container_name: grafana
        volumes:
          - ms-grafana-data:/var/lib/grafana
        ports:
          - 3000:3000
        healthcheck:
          test: ["CMD", "nc", "-zv", "localhost", "3000"]
          interval: 6s
          timeout: 5s
          retries: 50
        networks:
          - ms-network
    
    volumes:
      ms-grafana-data:
        driver_opts:
          type: none
          device: ${MS_BASE}/metersphere/data/grafana
          o: bind
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    1. 执行命令启动 Grafana
    docker-compose -f docker-compose-base.yml -f docker-compose-grafana.yml  up -d
    
    • 1
    1. Grafana 默认端口是3000,所以我们直接访问 http://192.168.xx.xx:3000 ,默认账号密码:admin/admin ,初次登录可以修改密码。

    image.png

    1. 能够访问页面,即为安装成功

    1.3、添加 Prometheus 数据源

    1. 登录 Grafana 之后,找到左下角小齿轮,然后找到 Data source,点击右上角新加数据源,选择Prometheus。

    image.png
    image.png

    1. 设置名字和 Prometheus 地址,点击 Save 保存。

    image.png
    image.png

    1.4、配置 Grafana 监控面板

    这边介绍两种方式去配置面板

    1.4.1、如果可以访问互联网的话,直接导入模板id即可。

    1. 找到 Dashboard ,点击 Import

    image.png

    1. 这里我们选择的模板为:12227,直接输入这个id,点击Load,设置模板名称,配置数据源,保存即可。

    image.png
    image.png

    1.4.2、如果访问不了互联网,可以直接导入面板的 JSON 文件。

    12227_rev1.json
    https://grafana.com/grafana/dashboards/12227

    1. 同样的操作,导入 JSON 文件

    image.png

    1. 选择数据源即可

    image.png
    以上两种方式最终得到的结果如下, 至此,Node-Exporter 监控已完成
    image.png

    二、使用 Grafana 集成 SpringBoot Actuator 监控容器应用信息

    MeterSphere V2 版本之后,默认集成了 SpringBoot Actuator 监控,所以我们只需要添加配置,开启监控即可。

    2.1 什么是 SpringBoot Actuator

    Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理 Spring Boot 应用。这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能都可以通过HTTP 和 JMX 访问。
    因为暴露内部信息的特性,Actuator 也可以和一些外部的应用监控系统整合(Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等)。这些监控系统提供了出色的仪表板,图形,分析和警报,可帮助你通过一个统一友好的界面,监视和管理你的应用程序。
    Actuator使用Micrometer与这些外部应用程序监视系统集成。这样一来,只需很少的配置即可轻松集成外部的监控系统。

    Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。Micrometer 会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。
    对比 Slf4j 之于 Java Logger 中的定位。

    2.2 如何开启 MeterSphere 中 Actuator 监控

    开启 MeterSphere 中的 Actuator 监控其实很简单,在/opt/metersphere/conf/metersphere.properties 添加一行 management.endpoints.enabled-by-default=true 配置即可。
    添加完成之后,执行 msctl restart 重启服务。
    image.png

    2.3 如何查看 Metrics 监控指标

    重启好之后,我们访问 Prometheus 地址 http://192.168.xx.xx:9090/ 查看 Targets指标信息,会发现有各个容器的监控信息,状态为 UP 即为正常。如果是 Down 的,需要检查一下自己服务器网络问题了。
    image.png
    需要注意:因为我们容器没有暴露相应的端口,所以直接在页面上是看不到具体的监控指标信息,想看到某一个容器的指标信息也很简单,这里提供两种思路:

    1. 修改某一个容器 docker-compse,添加端口映射,比如我想查看 api-test 的,直接在 docker-compose-api-test.yml 里面添加端口映射 7004:7004 ,然后重启 api-test 容器即可。
    2. 直接在 Prometheus 的 Graph 里面查看容器对应的实例名称。比如我想查看 api-test 的,那么它的实例名称为 instance:“api-test:7004”, 然后我们去 Graph 查询,就可以看到对应的指标信息了。

    image.png
    image.png

    2.4 如何通过 Grafana 大屏展示

    检查如确认开启之后,我们开始对接 Grafana。
    因为前面在监控服务器资源监控的时候已经对接了数据源,这里就不需要对接了。如何对接请参考上面的(如何添加 Prometheus 数据源)章节
    这里推荐两个模板,模板id为: 12900 和 9568 ,两个模板侧重监控的指标信息有所不同,有重合部分,可以根据需求修改。
    两个模板的区别:

    1. 12900 主要可以分析应用内的一些信息
    2. 9568 要分析应用内 JVM 相关的信息

    这里还是介绍两种方式:

    2.4.1 可以访问互联网,直接import导入:

    导入方式跟之前一样,选择 Dashboards->Import ,输入模板id,点击Load,选择数据源,添加即可。
    image.png

    2.4.2 不可以访问互联网,直接通过JSON文件导入:

    直接提供两个模板的JSON文件,可以自行导入
    12900_rev3.json
    9568_rev1.json
    https://grafana.com/grafana/dashboards/12900
    https://grafana.com/grafana/dashboards/9568
    image.png

    以上两种模板最终结果如下:
    12900 模板效果图:
    image.png

    9568 模板效果图:
    image.png

    三、使用 Grafana 集成 Mysql-Exporter 监控信息

    因为 MeterSphere 使用的是 Mysql 数据库,所以我们也可以通过 Mysql-Exporter来进行监控 MySQL 的相关信息

    3.1 什么是MySQL-Exporter?

    Mysql-Exporter 是一个用于采集 MySQL 指标的监控工具,它是开源的,可以与 Prometheus 一起使用,以便对数据库进行更全面、深入的分析和了解。
    Mysql-Exporter 使用 MySQL 的本地客户端库进行数据收集,可以轻松地提供 MySQL 服务器的实时监控。它的最新版本通过使用 Percona Toolkit 来获取 MySQL 的各种统计信息,包括状态、变量和 InnoDB引擎状态。这些信息可以提供非常有用的洞察力,帮助开发人员和管理员更好地了解数据库的性能和运行状况。

    3.1 部署 MySQL-Exporter 容器

    我们通过 docker-compose 的方式去进行部署,放在 /opt/metersphere 目录下面,脚本如下:

    version: "2.1"
    services:
      mysqlexporter:
          image: prom/mysqld-exporter
          container_name: mysqld-exporter
          restart: always
          ports:
            - "9104:9104"
          environment:
            - DATA_SOURCE_NAME=root:Password123@mysql@(192.168.xx.xx:3306)/metersphere
          volumes:
            - /etc/my.cnf:/etc/my.cnf
          command:
            --collect.auto_increment.columns
            --collect.binlog_size
            --collect.global_status
            --collect.global_variables
            --collect.info_schema.innodb_metrics
            --collect.info_schema.innodb_cmp
            --collect.info_schema.innodb_cmpmem
            --collect.info_schema.processlist
            --collect.info_schema.query_response_time
            --collect.info_schema.tables
            --collect.info_schema.tablestats
            --collect.info_schema.userstats
            --collect.perf_schema.eventswaits
            --collect.perf_schema.file_events
            --collect.perf_schema.indexiowaits
            --collect.perf_schema.tableiowaits
            --collect.perf_schema.tablelocks
            --collect.slave_status
            --config.my-cnf=/etc/my.cnf
          networks:
            - ms-network
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    在/etc/my.cnf 添加一下配置:

    [client]
    host=192.168.xx.xx
    port=3306
    user=root
    password=Password123@mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5

    环境变量配置:

    DATA_SOURCE_NAME配置MySQL的账号密码以及访问地址和需要监控的数据库信息

    监控指标参数:

    启动参数MySQL版本参数含义
    collect.auto_increment.columns5.1 +从information_schema收集auto_increment列和最大值。
    collect.binlog_size5.1+收集所有已注册的Binlog文件的当前大小
    collect.engine_innodb_status5.1+通过SHOW ENGINE INNODB STATUS收集数据
    collect.engine_tokudb_status5.6+通过SHOW ENGINE TOKUDB STATUS.收集数据
    collect.global_status5.1+通过SHOW GLOBAL STATUS 收集数据(默认开启)
    collect.global_variables5.1+通过SHOW GLOBAL VARIABLES收集数据(默认开启)
    collect.info_schema.clientstats5.5+如果被监控的MySQL使用userstat = 1运行,则此参数需要设置为1以收集客户端统计信息
    collect.info_schema.innodb_metrics5.6+从information_schema.innodb_metrics收集数据。
    collect.info_schema.innodb_tablespaces5.7+从information_schema.innodb_sys_tablespaces收集数据。
    collect.info_schema.innodb_cmp5.5+从information_schema.innodb_cmp收集InnoDB压缩表指标。
    collect.info_schema.innodb_cmpmem5.5+从information_schema.innodb_cmpmem收集InnoDB缓冲池。
    collect.info_schema.processlist5.1+从information_schema.processlist收集线程状态计数。
    collect.info_schema.processlist.min_time5.1+
    线程状态停留多长时间会被统计。(默认值:0)
    collect.info_schema.query_response_time5.5+如果query_response_time_stats为ON,则收集查询响应时间。
    collect.info_schema.replica_host5.6+从information_schema.replica_host_status收集数据。
    collect.info_schema.tables5.1+从information_schema.tables中收集数据。
    collect.info_schema.tables.databases5.1+收集表统计信息的数据库列表,或*全部为’的数据库
    collect.info_schema.tablestats5.1+如果被监控的MySQL使用userstat = 1运行,则设置为true以收集表统计信息。
    collect.info_schema.schemastats5.1+如果被监控的MySQL使用userstat = 1运行,则设置为true以收集架构统计信息
    collect.info_schema.userstats5.1+如果被监控的MySQL使用userstat = 1运行,则设置为true以收集用户统计信息。
    collect.perf_schema.eventsstatements5.6+从performance_schema.events_statements_summary_by_digest收集数据。
    collect.perf_schema.eventsstatements.digest_text_limit5.6+规范化语句文本的最大长度。(默认值:120)
    collect.perf_schema.eventsstatements.limit5.6+通过响应时间限制事件语句摘要的数量。(预设值:250)
    collect.perf_schema.eventsstatements.timelimit5.6+限制“ last_seen”事件语句的年龄(以秒为单位)。(预设值:86400)
    collect.perf_schema.eventsstatementssum5.7+从Performance_schema.events_statements_summary_by_digest汇总中收集指标。
    collect.perf_schema.eventswaits5.5+从Performance_schema.events_waits_summary_global_by_event_name收集指标。
    collect.perf_schema.file_events5.6+从Performance_schema.file_summary_by_event_name收集指标。
    collect.perf_schema.file_instances5.5+从performance_schema.file_summary_by_instance收集指标。
    collect.perf_schema.indexiowaits5.6+从performance_schema.table_io_waits_summary_by_index_usage收集指标。
    collect.perf_schema.tableiowaits5.6+从Performance_schema.table_io_waits_summary_by_table收集指标。
    collect.perf_schema.tablelocks5.6+从Performance_schema.table_lock_waits_summary_by_table收集指标。
    collect.perf_schema.replication_group_members5.7+从Performance_schema.replication_group_members收集指标。
    collect.perf_schema.replication_group_member_stats5.7 +从Performance_schema.replication_group_member_stats收集指标。
    collect.perf_schema.replication_applier_status_by_worker5.7+从performance_schema.replication_applier_status_by_worker收集指标。
    collect.slave_status5.1+从SHOW SLAVE STATUS收集(默认情况下启用)
    collect.slave_hosts5.1+从SHOW SLAVE HOSTS收集
    collect.heartbeat5.1+从心跳中收集。
    collect.heartbeat.database5.1+从中收集心跳数据的数据库。(默认值:心跳)
    collect.heartbeat.table5.1+从何处收集心跳数据的表。(默认值:心跳)

    通用启动参数:

    NameDescription
    config.my-cnf.my.cnf文件的路径。(默认值:~/.my.cnf)
    log.level日志级别 记录详细程度(默认:信息)
    exporter.lock_wait_timeout在连接上设置lock_wait_timeout以避免长时间的元数据锁定。(默认值:2秒)
    exporter.log_slow_filter添加一个log_slow_filter以避免刮擦的慢速查询日志记录。注意:Oracle MySQL不支持。
    web.listen-address监听端口 默认9104
    web.telemetry-path公开metric的路径 默认/metrics
    version打印版本信息

    启动 Mysql-Exporter 容器,默认端口为 9104

    cd /opt/metersphere
    docker-compose -f docker-compose-base.yml -f docker-compose-mysql-exporter.yml  up -d
    
    • 1
    • 2

    image.png
    直接访问 http://192.168.xx.xx:9104 即可看到监控信息
    image.png

    3.2 集成到 Prometheus

    安装好采集指标的 MySQL-Exporter 之后,需要集成到 Prometheus里面。

    1. 找到 /opt/metersphere/conf/prometheus/prometheus.yml,添加 Mysql-Exporter 的指标信息
     - job_name: 'mysql'
        static_configs:
          - targets: ['192.168.xx.xx:9104']
    
    • 1
    • 2
    • 3

    如果不了解怎么添加 Prometheus 配置请参考:https://blog.csdn.net/u013288190/article/details/116804765
    配置完成之后重启 Prometheus

    docker restart  ms-prometheus
    
    • 1
    1. 访问 Prometheus 地址,查看 Mysql-Exporter监控信息,可以看到状态为 UP 状态即为成功

    image.png

    3.3 通过 Grafana 大屏展示

    这里我们选用经典的 MySQL 展示大屏,模板id为:7362,介绍两种方式:

    3.3.1 可以访问互联网的,直接import导入

    1. 选择Dashboard->Import->输入7362 ,点击 Load->选择数据源即可

    image.png
    image.png

    1. 配置好之后,就可以看到 MySQL 的监控信息了

    image.png
    image.png
    image.pngimage.png

    3.3.1.1 配置 Exporter 的 Instance 的值

    到这里我们发现一个问题,有部分的监控指标是空的,展示不出来,这是因为这个监控模板展示的信息需要和 Node-Exporter 结合起来使用,想要解决这个问题很简单,在配置 Prometheus的时候,需要让Node-Exporter 的实例名称和 Mysql-Exporter 实例名称一致就好。
    为了清晰明了,这里我把它配置到同一个 job 里面了。
    image.png
    配置好之后重启一下 Prometheus容器

    docker restart ms-prometheus
    
    • 1

    重启好之后我们访问 Prometheus地址,可以看到两个 Exporter 的实例名称是一致的。
    image.png
    然后刷新 Grafana 监控面板,可以看到,对应的地方已经有值了。
    image.png
    image.png

    3.3.2 不可以访问互联网的,直接导入 JSON 文件

    如果不能访问互联网的,可以直接导入 JSON 文件。
    7362_rev5.json
    https://grafana.com/grafana/dashboards/7362

    1. 选择Dashboard->Import->上传JSON文件->选择对应的数据源

    image.png
    image.png

    1. 添加好之后,就可看到面板效果,如果有发现一些值没有展示出来,请参考上面配置Exporter的Instance的操作。

    四、使用 Grafana 集成 Kafka-Exporter 监控信息

    4.1 什么是 Kafka-Exporter

    Kafka-Exporter 通过 Kafka Protocol Specification 收集 Brokers, Topics 以及 Consumer Groups的相关指标。
    kafka exporter代码层借助大量开源库,所以功能强大但代码量极少,仅600+行,大致架构如下:

    image.png

    • Kingpin: go的一个命令行库,处理用户输入的参数
    • sarama(核心): go实现的kafka客户端,连接broker获取相关的指标与元数据
    • kazoo: go实现的zk客户端,连接kafka的zk集群,主要用于zk消费组的lag计算
    • promhttp:用于生成 Prometheus HTTP服务器,供prometheus pull指标
    • 其他组件:协助将 sarama 和kazoo获取的指标转换成Prometheus的数据格式

    4.2 部署 Kafka-Exporter 容器

    我们通过docker-compose的方式去进行部署,放在 /opt/metersphere 目录下面,脚本如下:

    version: "2.1"
    services:
      kafka-exporter:
          image: danielqsj/kafka-exporter
          container_name: kafka-exporter
          command: --kafka.server=192.168.xx.xx:9092
          ports:
            - 9308:9308
          restart: always
          networks:
            - ms-network
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    默认端口为9308 ,参数说明:

    –kafka.serverkafka的连接地址以及端口

    执行启动命令

    docker-compose -f docker-compose-base.yml -f docker-compose-kafka-exporter.yml  up -d
    
    • 1

    部署完成之后看下状态
    image.png

    4.3 集成到Prometheus

    1. 确认 Kafka-Exporter 启动好之后,需要集成到 Prometheus,同样的操作,找到/opt/metersphere/conf/prometheus ,在prometheus.yml中添加下面的配置
    - job_name: 'kafka'
        static_configs:
          - targets: ['192.168.xx.xx:9308']
    
    • 1
    • 2
    • 3

    添加好之后重启 Prometheus

    docker restart  ms-prometheus
    
    • 1
    1. 重启好之后访问 Prometheus地址,会看到 Kafka-Exporter状态是好的。

    image.png

    4.4 通过 Grafana 大屏展示

    这里推荐一个 Kafka的监控模板,同样的介绍两种方式应用
    模板id为:12326

    4.4.1 可以访问互联网的,直接 Import导入

    导入的方式具体可以参考上面文章写的,方法都一样,这里不在详细介绍。
    image.png
    image.png

    4.4.2 不可以访问互联网的,直接JSON文件导入

    12326_rev2.json
    https://grafana.com/grafana/dashboards/12326
    选择Dashboard->import->上传JSON文件->选择对应的数据源即可

    4.4.3 介绍一个好用的kafka的模板

    这个模板用到的数据是Spring Boot Actuator ,所以如果没有开启的话,参考上面的章节开启配置。
    监控的内容是各个容器关于 Kafka 消费的情况,可以查看到每个 Topic 的消费情况。
    模板id为: 11285
    同样的方式,可以访问互联网的话直接导入即可。
    11285_rev1.json
    https://grafana.com/grafana/dashboards/11285
    不可以的访问的话,下载json文件导入。
    模板效果
    image.png
    image.png

    五、使用 Grafana 集成 CAdvisor

    需要注意的是:这里监控的主要是所有docker容器的信息,类似与docker stats 命令查看的指标,跟上面Spring Boot Actuator 查看应用内部的信息还是有区别的。
    写在这里只是提供一种监控容器资源的方案,可以自行判断是否安装。

    5.1 CAdvisor 是什么?

    cAdvisor 是谷歌开源的一款通用的容器监控解决方案。cAdvisor 不仅可以采集机器上所有运行的容器信息,还提供了基础的查询界面和 HTTP 接口,更方便与外部系统结合。所以,cAdvisor很快成了容器指标监控最常用组件,并且 Kubernetes 也集成了 cAdvisor 作为容器监控指标的默认工具。
    简单来讲,就是生产级别可用的容器监控方案。

    5.2 部署CAdvisor

    还是通过容器的方式部署,在 /opt/metersphere/ 创建docker-compose-cadvisor.yml文件

    version: '2.1'
    services:
      cadvisor:
        image: google/cadvisor
        container_name: cadvisor
        volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:rw
          - /sys:/sys:ro
          - /var/lib/docker/:/var/lib/docker:ro
        ports:
          - 8888:8080
        restart: always
        networks:
          - ms-network
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    cadvisor 默认端口是8080,我改成了8888 ,启动容器。

    docker-compose -f docker-compose-base.yml -f docker-compose-cadvisor.yml  up -d
    
    • 1

    5.3 集成到Prometheus

    1. 确认 cadvisor 启动好之后,需要集成到 Prometheus,同样的操作,找到/opt/metersphere/conf/prometheus ,在prometheus.yml中添加下面的配置
    - job_name: 'cadvisor'
        static_configs:
          - targets: ['192.168.xx.xx:8888','192.168.xx.xx:9100']
            labels:
              instance: node
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里需要解释一下,为什么把 Node-Exporter的信息也给集成过来了,是因为后面我们在 Grafana 集成的模板需要用到 Node-Exporter中的一些值,所以这边改了相同的 Instance名称,并且把 Node-Exporter的信息也给集成过来了。
    image.png

    1. 重启 Prometheus
    docker restart  ms-prometheus
    
    • 1
    1. 查看 Prometheus 的 Targets,状态为 UP 即为正常。

    image.png

    5.4 通过 Grafana 大屏展示

    推荐一个比较常用的模板id:16314
    具体导入方式不在多讲,跟上面一样。

    1. 可以访问互联网,直接Import导入

    选择Dashboard->Import->输入16314 ,点击Load->选择数据源即可

    1. 不可以访问互联网,通过JSON文件导入

    16314_rev3.json
    https://grafana.com/grafana/dashboards/16314
    直接下载文件,导入即可。

    1. 效果如下:

    image.png
    image.png
    image.png

    六、注意事项

    1. 以上就是虚拟机、应用、MySQL,Kafka、Docker容器的监控方案,可以根据实际情况自行选择如何搭配监控。
    2. 以上方案都是通过 Docker 的方式安装,所以如果是内网用户,需要提前把对应的镜像下载下来,在通过 docker load 的方式安装部署。具体操作百度:docker save / load 命令。
    3. 本文grafana版本是9.4.3,Node-Exporter版本是 MeterSphere 自带的,其他 Exporter版本都为latest。
    4. 本文所有命令操作都在 /opt/metersphere 下面执行,因为用到MeterSphere自带的一些基础配置。
    5. 安装好对应的Exporter之后,记着要配置一下Prometheus。
    6. 为了部署更加方便,给一个更加全面的 docker-compose-monitor.yml ,其中的ip和端口信息需要自行修改。
    version: "2.1"
    services:
      grafana:
        image: grafana/grafana:9.4.3
        restart: always
        container_name: grafana
        volumes:
          - ms-grafana-data:/var/lib/grafana
        ports:
          - 3000:3000
        healthcheck:
          test: ["CMD", "nc", "-zv", "localhost", "3000"]
          interval: 6s
          timeout: 5s
          retries: 50
        networks:
          - ms-network
    
      mysqlexporter:
        image: prom/mysqld-exporter
        container_name: mysqld-exporter
        restart: always
        ports:
          - "9104:9104"
        environment:
          - DATA_SOURCE_NAME=root:Password123@mysql@(10.1.12.13:3306)/metersphere
        volumes:
          - /etc/my.cnf:/etc/my.cnf
        command:
          --collect.auto_increment.columns
          --collect.binlog_size
          --collect.global_status
          --collect.global_variables
          --collect.info_schema.innodb_metrics
          --collect.info_schema.innodb_cmp
          --collect.info_schema.innodb_cmpmem
          --collect.info_schema.processlist
          --collect.info_schema.query_response_time
          --collect.info_schema.tables
          --collect.info_schema.tablestats
          --collect.info_schema.userstats
          --collect.perf_schema.eventswaits
          --collect.perf_schema.file_events
          --collect.perf_schema.indexiowaits
          --collect.perf_schema.tableiowaits
          --collect.perf_schema.tablelocks
          --collect.slave_status
          --config.my-cnf=/etc/my.cnf
        networks:
          - ms-network
    
    
      kafka-exporter:
        image: danielqsj/kafka-exporter
        container_name: kafka-exporter
        command: --kafka.server=10.1.12.13:9092
        ports:
          - 9308:9308
        restart: always
        networks:
          - ms-network
    
      cadvisor:
        image: google/cadvisor
        container_name: cadvisor
        volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:rw
          - /sys:/sys:ro
          - /var/lib/docker/:/var/lib/docker:ro
        ports:
          - 8888:8080
        restart: always
        networks:
          - ms-network
    
    
    volumes:
      ms-grafana-data:
        driver_opts:
          type: none
          device: ${MS_BASE}/metersphere/data/grafana
          o: bind
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83

    启动命令

    docker-compose -f docker-compose-base.yml -f docker-compose-monitor.yml up -d
    
    • 1
  • 相关阅读:
    TX12 + ExpressLRS 915MHz RC控制链路配置及问题汇总
    一文讲透为Power Automate for Desktop (PAD) 实现自定义模块 - 附完整代码
    CKA真题分析-2023年度
    设置chunk自动扩展到多大
    git---更新gitignore文件,使之生效
    (附源码)计算机毕业设计SSM焦作旅游网站
    潜力无限:深入探索 gRPC 的奇妙世界
    【配电网优化】基于粒子群算法实现GARVER-6节点配电网络直流潮流计算附matlab代码
    AcWing 827. 双链表
    利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)
  • 原文地址:https://blog.csdn.net/hao65103940/article/details/133128979