在使用MeterSphere平台时,需要查看 MeterSphere 服务的监控详情(监控告警脚本已无法满足且不太直观),所以本文结合了 Prometheus+Exporter+Grafana 介绍了一套完整的 MeterSphere 监控方案。如需了解 Prometheus、Exporter、Grafana 等组件工作原理,可以自行查阅资料,这里不做赘述。MeterSpher 服务中需要监控的容器以及监控方式简单介绍如下:
服务器或node节点监控:可使用 Prometheus 的 Node-Exporter 完成监控;
api-test,test-track 等应用服务的监控:可使用 SpringBoot 自带的 Actuator 进行监控;
MySQL数据库服务监控:可使用 Prometheus 的 mysql-exporter 完成监控;
Kafka服务监控:可使用 Prometheus的 kafka-exporter 完成监控;
服务器上所有容器状态监控:可使用 cAdvisor 进行监控。
另外文章结尾有完整的 docker-compose 的 yml 文件,可以直接复制完整文件进行安装。以下我们会逐一介绍 MeterSphere 各个服务组件的监控实施说明。
一、使用 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 确认
首先,要确认 Prometheus 是否能够获取到服务器的监控数据, Prometheus 端口默认为9090,安装部署 MeterSphere 好之后,直接访问 http://192.168.xx.xx:9090 即可查看Prometheus 页面。(如果出现访问不了,检查防火墙是否关闭,端口是否对外暴露)
查看Targets 可以看到有9100端口的地址,Node-Exporter 默认监听端口为9100,如果状态为up,即为正常,代表可以查看到监控数据。
1.2、安装 Grafana
本文通过 docker 的方式进行安装。
注意,本次安装的 Grafana 为 v9.4.3,如果安装新版本,可自行摸索如何操作。
1.在 /opt/metersphere/data/ 下面创建 grafana 文件目录。
cd /opt/metersphere/data/
mkdir grafana
chmod 777 grafana
2. 在 /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
3. 执行命令启动 Grafana
docker-compose -f docker-compose-base.yml -f docker-compose-grafana.yml up -d
4. Grafana 默认端口是 3000,所以我们直接访问 http://192.168.xx.xx:3000 ,默认账号密码:admin/admin ,初次登录可以修改密码。能够登录成功访问页面则代表安装成功。
1.3、添加 Prometheus 数据源
1.登录 Grafana 之后,找到左下角小齿轮,然后找到 Data source,点击右上角新加数据源,选择 Prometheus。
2.设置名字和 Prometheus 地址,点击 Save 保存。
1.4、配置 Grafana 监控面板
这边介绍通过互联网和本地导入两种方式完成监控面板配置。
1.4.1、如果可以访问互联网的话,直接导入模板 id 即可
1.找到 Dashboard ,点击 import ,这里我们选择的模板为:12227,直接在 Import via grafana.com 中输入 id=12227 ,点击 Load,设置模板名称,配置数据源,保存即可。
1.4.2、如果访问不了互联网,可以直接导入面板的json文件
模板下载地址:https://grafana.com/grafana/dashboards/12227
下载模版后通过 Upload dashboard JSON file 上传,同样选择数据源完成 Import 即可。
1.5 最终监控数据展示结果
二、使用 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 重启服务。
2.3、 如何查看 Metrics 监控指标
重启好之后,我们访问 Prometheus 地址 http://192.168.xx.xx:9090/ 查看Targets指标信息,会发现有各个容器的监控信息,状态为 up 即为正常。如果是 down 的,可以检查确认下当前服务器的网络情况了。 注意:因为我们容器没有暴露相应的端口,所以直接在页面上是看不到具体的监控指标信息,想看到某一个容器的指标信息也很简单,这里提供两种思路:
修改某一个容器 docker-compse,添加端口映射,比如我想查看 api-test 的,直接在 docker-compose-api-test.yml 里面添加端口映射 7004:7004 ,然后重启api-test容器即可。
直接在 prometheus 的 graph 里面查看容器对应的实例名称。比如我想查看 api-test 的,那么它的实例名称为 instance:"api-test:7004" , 然后我们去 graph 查询,就可以看到对应的指标信息了。
2.4、 如何通过 Grafana 大屏展示监控指标
检查确认之后,我们开始对接 Grafana。上述在监控服务器资源时已经对接了数据源,这里则无需对接。如何对接请参考上面的(如何添加 Prometheus 数据源)章节,同样这里推荐两个模板,模板 id 分别为:12900 和 9568 ,两个模板侧重监控的指标信息有所不同,有重合部分,可以根据需求修改。其中 12900 主要可以分析应用内的一些信息,而 9568 可分析应用内 JVM 相关的信息,根据实际情况选择即可。模版导入方式参见 1.4 章节描述。其中模版地址如下:
下载地址:
https://grafana.com/grafana/dashboards/12900
https://grafana.com/grafana/dashboards/9568
2.5、 最终监控数据展示结果
12900 模版监控效果如下图所示:
9568 模版监控效果如下图所示:
三、使用 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.2、 部署 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
在 /etc/my.cnf 添加如下配置:
[client]
host=192.168.xx.xx
port=3306
user=root
password=Password123@mysql
环境变量配置如下:
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 |
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 | 从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 | 如果被监控的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
直接访问 http://192.168.xx.xx:9104 即可看到监控信息:
3.3、 集成到 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
步骤2:访问Prometheus地址,查看mysql-exporter监控信息,可以看到状态为up状态即为成功。
3.4、 通过 Grafana 大屏展示
这里我们选用经典的 MySQL 展示大屏,模板 id 为:7362,可通过1.4章节介绍的方式分别导入,其中模版 json 文件下载地址为:https://grafana.com/grafana/dashboards/7362
3.5、 最终监控数据展示结果
3.6、 配置 exporter 的 instance 的值
到这里我们发现一个问题,有部分的监控指标是空的,展示不出来,这是因为这个监控模板展示的信息需要和 node-exporter 结合起来使用,想要解决这个问题很简单,在配置Prometheus 的时候,需要让 node-exporter 的实例名称和 mysql-exporter 实例名称一致就好。为了清晰明了,这里我把它配置到同一个job里面了。
配置好之后重启一下 Prometheus 容器: docker restart ms-prometheus.
重启好之后我们访问 Prometheus 地址,可以看到两个 Exporter 的实例名称是一致的。
然后刷新 Grafana 监控面板,可以看到,对应的地方会更新监控数据。
四、使用 Grafana 集成 Kafka-Exporter 监控信息
4.1、 什么是 Kafka-Exporter
Kafka exporter 通过 Kafka Protocol Specification 收集 Brokers, Topics 以及 Consumer Groups的相关指标。
kafka exporter 代码层借助大量开源库,所以功能强大但代码量极少,仅600+行,大致架构如下:
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 目录下面,脚本如下:
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
部署完成之后看下状态:
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
2.重启好之后访问Prometheus地址,会看到Kafka-Exporter状态是好的。
4.4、 通过 Grafana 大屏展示
这里推荐一个 Kafka 的监控模板,推荐的模板id为:12326,按照1.4章节介绍的方式导入,其中下载地址:https://grafana.com/grafana/dashboards/12326
4.5、 最终监控数据展示结果
4.6、 补充一个好用的 Kafka 模版
这个模板用到的数据是 Spring Boot Actuator ,所以如果没有开启的话,参考上面的章节开启配置。监控的内容是各个容器关于 Kafka 消费的情况,可以查看到每个 topic 的消费情况,其中模板 id 为: 11285。
同样的方式,可以访问互联网的话直接导入即可,不可以的访问的话,下载json文件导入。
下载地址:https://grafana.com/grafana/dashboards/11285
模版效果如下所示:
五、使用 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 的信息也给集成过来了。
2.重启 Prometheus:docker restart ms-prometheus
3.查看 Prometheus 的 targets,状态为 up 即为正常。
5.4、 通过 Grafana 大屏展示
推荐一个比较常用的模板 id:16314,下载地址:https://grafana.com/grafana/dashboards/16314。具体导入方式参见1.4章节。
5.5、 最终监控数据展示结果
六、注意事项
以上就是 MeterSphere 服务器 Node节点、应用、MySQL,Kafka、Docker 容器的监控方案,可以根据实际情况自行选择如何搭配监控;
以上方案都是通过 docker 的方式安装,所以如果是内网用户,需要提前把对应的镜像下载下来,在通过 docker load 的方式安装部署。具体操作百度:docker save / load 命令;
本文 Grafana 版本是 v9.4.3,Node-Exporter 版本是 MeterSphere 自带的,其他 Exporter 版本都为 latest;
本文所有命令操作都在 /opt/metersphere 下面执行,因为用到 MeterSphere 自带的一些基础配置。
附件:完整的安装 YML 文件
为了部署更加方便,给一个更加全面的 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