MeterSphere 监控方案

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

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

  1. MySQL: mysql-exporter
  2. KAFKA: kafka-exporter
  3. 部署服务器的信息或node节点:node-exporter
  4. 其他应用服务的监控:SpringBoot 自带的 Actuator
  5. 监控面板:grafana:9.4.3 版本

需要声明的是,此文章建立在有技术背景,并且了解 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,即为正常,代表可以查看到监控数据。

MeterSphere 监控方案_第1张图片
image.png
MeterSphere 监控方案_第2张图片

1.2、安装Grafana

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

  1. 在 /opt/metersphere/data/ 下面创建 grafana 文件目录。
cd /opt/metersphere/data/
mkdir grafana
chmod 777 grafana
  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. 执行命令启动 grafana
docker-compose -f docker-compose-base.yml -f docker-compose-grafana.yml  up -d
  1. grafana 默认端口是3000,所以我们直接访问 http://192.168.xx.xx:3000 ,默认账号密码:admin/admin ,初次登录可以修改密码。

MeterSphere 监控方案_第3张图片

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

1.3、添加 Prometheus 数据源

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

MeterSphere 监控方案_第4张图片
MeterSphere 监控方案_第5张图片

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

MeterSphere 监控方案_第6张图片
MeterSphere 监控方案_第7张图片

1.4、配置 Grafana 监控面板

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

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

  1. 找到 Dashboard ,点击 import

MeterSphere 监控方案_第8张图片

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

MeterSphere 监控方案_第9张图片
MeterSphere 监控方案_第10张图片

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

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

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

MeterSphere 监控方案_第11张图片

  1. 选择数据源即可

MeterSphere 监控方案_第12张图片
以上两种方式最终得到的结果如下, 至此,Node-exporter 监控已完成
MeterSphere 监控方案_第13张图片

二、使用 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 重启服务。
MeterSphere 监控方案_第14张图片

2.3 如何查看 Metrics 监控指标

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

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

MeterSphere 监控方案_第16张图片
MeterSphere 监控方案_第17张图片

2.4 如何通过 Grafana 大屏展示

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

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

这里还是介绍两种方式:

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

导入方式跟之前一样,选择 Dashboards->Import ,输入模板id,点击load,选择数据源,添加即可。
MeterSphere 监控方案_第18张图片

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

直接提供两个模板的json文件,可以自行导入
12900_rev3.json
9568_rev1.json
https://grafana.com/grafana/dashboards/12900
https://grafana.com/grafana/dashboards/9568
MeterSphere 监控方案_第19张图片

以上两种模板最终结果如下:
12900 模板效果图:
MeterSphere 监控方案_第20张图片

9568 模板效果图:
MeterSphere 监控方案_第21张图片

三、使用 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

环境变量配置:

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

监控指标参数:

启动参数 MySQL版本 参数含义
collect.auto_increment.columns 5.1 + 从information_schema收集auto_increment列和最大值。
collect.binlog_size 5.1+ 收集所有已注册的Binlog文件的当前大小
collect.engine_innodb_status 5.1+ 通过SHOW ENGINE INNODB STATUS收集数据
collect.engine_tokudb_status 5.6+ 通过SHOW ENGINE TOKUDB STATUS.收集数据
collect.global_status 5.1+ 通过SHOW GLOBAL STATUS 收集数据(默认开启)
collect.global_variables 5.1+ 通过SHOW GLOBAL VARIABLES收集数据(默认开启)
collect.info_schema.clientstats 5.5+ 如果被监控的MySQL使用userstat = 1运行,则此参数需要设置为1以收集客户端统计信息
collect.info_schema.innodb_metrics 5.6+ 从information_schema.innodb_metrics收集数据。
collect.info_schema.innodb_tablespaces 5.7+ 从information_schema.innodb_sys_tablespaces收集数据。
collect.info_schema.innodb_cmp 5.5+ 从information_schema.innodb_cmp收集InnoDB压缩表指标。
collect.info_schema.innodb_cmpmem 5.5+ 从information_schema.innodb_cmpmem收集InnoDB缓冲池。
collect.info_schema.processlist 5.1+ 从information_schema.processlist收集线程状态计数。
collect.info_schema.processlist.min_time 5.1+
线程状态停留多长时间会被统计。(默认值:0)
collect.info_schema.query_response_time 5.5+ 如果query_response_time_stats为ON,则收集查询响应时间。
collect.info_schema.replica_host 5.6+ 从information_schema.replica_host_status收集数据。
collect.info_schema.tables 5.1+ 从information_schema.tables中收集数据。
collect.info_schema.tables.databases 5.1+ 收集表统计信息的数据库列表,或*全部为’的数据库
collect.info_schema.tablestats 5.1+ 如果被监控的MySQL使用userstat = 1运行,则设置为true以收集表统计信息。
collect.info_schema.schemastats 5.1+ 如果被监控的MySQL使用userstat = 1运行,则设置为true以收集架构统计信息
collect.info_schema.userstats 5.1+ 如果被监控的MySQL使用userstat = 1运行,则设置为true以收集用户统计信息。
collect.perf_schema.eventsstatements 5.6+ 从performance_schema.events_statements_summary_by_digest收集数据。
collect.perf_schema.eventsstatements.digest_text_limit 5.6+ 规范化语句文本的最大长度。(默认值:120)
collect.perf_schema.eventsstatements.limit 5.6+ 通过响应时间限制事件语句摘要的数量。(预设值:250)
collect.perf_schema.eventsstatements.timelimit 5.6+ 限制“ last_seen”事件语句的年龄(以秒为单位)。(预设值:86400)
collect.perf_schema.eventsstatementssum 5.7+ 从Performance_schema.events_statements_summary_by_digest汇总中收集指标。
collect.perf_schema.eventswaits 5.5+ 从Performance_schema.events_waits_summary_global_by_event_name收集指标。
collect.perf_schema.file_events 5.6+ 从Performance_schema.file_summary_by_event_name收集指标。
collect.perf_schema.file_instances 5.5+ 从performance_schema.file_summary_by_instance收集指标。
collect.perf_schema.indexiowaits 5.6+ 从performance_schema.table_io_waits_summary_by_index_usage收集指标。
collect.perf_schema.tableiowaits 5.6+ 从Performance_schema.table_io_waits_summary_by_table收集指标。
collect.perf_schema.tablelocks 5.6+ 从Performance_schema.table_lock_waits_summary_by_table收集指标。
collect.perf_schema.replication_group_members 5.7+ 从Performance_schema.replication_group_members收集指标。
collect.perf_schema.replication_group_member_stats 5.7 + 从Performance_schema.replication_group_member_stats收集指标。
collect.perf_schema.replication_applier_status_by_worker 5.7+ 从performance_schema.replication_applier_status_by_worker收集指标。
collect.slave_status 5.1+ 从SHOW SLAVE STATUS收集(默认情况下启用)
collect.slave_hosts 5.1+ 从SHOW SLAVE HOSTS收集
collect.heartbeat 5.1+ 从心跳中收集。
collect.heartbeat.database 5.1+ 从中收集心跳数据的数据库。(默认值:心跳)
collect.heartbeat.table 5.1+ 从何处收集心跳数据的表。(默认值:心跳)

通用启动参数:

Name Description
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

MeterSphere 监控方案_第22张图片
直接访问 http://192.168.xx.xx:9104 即可看到监控信息
MeterSphere 监控方案_第23张图片

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']

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

docker restart  ms-prometheus
  1. 访问prometheus地址,查看mysql-exporter监控信息,可以看到状态为up状态即为成功

image.png

3.3 通过 Grafana 大屏展示

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

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

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

MeterSphere 监控方案_第24张图片
MeterSphere 监控方案_第25张图片

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

MeterSphere 监控方案_第26张图片
MeterSphere 监控方案_第27张图片
MeterSphere 监控方案_第28张图片MeterSphere 监控方案_第29张图片

3.3.1.1 配置 exporter 的 instance 的值

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

docker restart ms-prometheus

重启好之后我们访问prometheus地址,可以看到两个exporter的实例名称是一致的。
image.png
然后刷新grafana 监控面板,可以看到,对应的地方已经有值了。
MeterSphere 监控方案_第30张图片
MeterSphere 监控方案_第31张图片

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

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

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

MeterSphere 监控方案_第32张图片
MeterSphere 监控方案_第33张图片

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

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

4.1 什么是 KAFKA-Exporter

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

MeterSphere 监控方案_第34张图片

  • 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

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

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

执行启动命令

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

部署完成之后看下状态
MeterSphere 监控方案_第35张图片

4.3 集成到Prometheus

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

添加好之后重启prometheus

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

image.png

4.4 通过 Grafana 大屏展示

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

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

导入的方式具体可以参考上面文章写的,方法都一样,这里不在详细介绍。
MeterSphere 监控方案_第36张图片
MeterSphere 监控方案_第37张图片

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文件导入。
模板效果
MeterSphere 监控方案_第38张图片
MeterSphere 监控方案_第39张图片

五、使用 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

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

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

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

这里需要解释一下,为什么把node-exporter的信息也给集成过来了,是因为后面我们在grafana集成的模板需要用到node-exporter中的一些值,所以这边改了相同的instance名称,并且把node-exporter的信息也给集成过来了。
MeterSphere 监控方案_第40张图片

  1. 重启prometheus
docker restart  ms-prometheus
  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. 效果如下:

MeterSphere 监控方案_第41张图片
MeterSphere 监控方案_第42张图片
MeterSphere 监控方案_第43张图片

六、注意事项

  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. 为了部署更加方便,给一个更加全面的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

启动命令

docker-compose -f docker-compose-base.yml -f docker-compose-monitor.yml up -d

你可能感兴趣的:(metersphere,prometheus,grafana)