江宁网站制作/推广引流渠道
前言:在部署MeterSphere之后,很多时候需要看下MeterSphere服务的监控信息,虽然有监控告警脚本,但还不是太直观,所以就结合 Prometheus+Exporter+Grafana 部署一套完整的MeterSphere监控方案。
首先我们先罗列一下需要监控的容器:
- 服务器的信息或node节点:Node-Exporter
- 应用服务的监控(例如api-test,test-track):SpringBoot 自带的 Actuator
- MySQL: Mysql-Exporter
- Kafka: Kafka-Exporter
- 服务器上所有容器的信息: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是否正常
- 首先,要确认 Prometheus 是否能够获取到服务器的监控数据, Prometheus 端口默认为9090,安装部署 MeterSphere 好之后,直接访问 http://192.168.xx.xx:9090 即可查看 Prometheus 页面。(如果出现访问不了,检查防火墙是否关闭,端口是否对外暴露)
- 查看 Targets 可以看到有9100端口的地址,Node-Exporter 默认监听端口为9100,如果状态为up,即为正常,代表可以查看到监控数据。
1.2、安装Grafana
本文章是通过 Docker 的方式进行安装。
注意,本次安装grafana版本为9.4.3版本,如果安装新版本,自行摸索如何操作。
- 在 /opt/metersphere/data/ 下面创建 grafana 文件目录。
cd /opt/metersphere/data/
mkdir grafana
chmod 777 grafana
- 在 /opt/metersphere 目录下,创建并编辑 docker-compose-grafana.yml,内容如下。(注意:如果是内网部署,需要在能访问互联网的机器上下载镜像,再进行上传。)
version: "2.1"
services:grafana:image: grafana/grafana:9.4.3restart: alwayscontainer_name: grafanavolumes:- ms-grafana-data:/var/lib/grafanaports:- 3000:3000healthcheck:test: ["CMD", "nc", "-zv", "localhost", "3000"]interval: 6stimeout: 5sretries: 50networks:- ms-networkvolumes:ms-grafana-data:driver_opts:type: nonedevice: ${MS_BASE}/metersphere/data/grafanao: bind
- 执行命令启动 Grafana
docker-compose -f docker-compose-base.yml -f docker-compose-grafana.yml up -d
- Grafana 默认端口是3000,所以我们直接访问 http://192.168.xx.xx:3000 ,默认账号密码:admin/admin ,初次登录可以修改密码。
- 能够访问页面,即为安装成功
1.3、添加 Prometheus 数据源
- 登录 Grafana 之后,找到左下角小齿轮,然后找到 Data source,点击右上角新加数据源,选择Prometheus。
- 设置名字和 Prometheus 地址,点击 Save 保存。
1.4、配置 Grafana 监控面板
这边介绍两种方式去配置面板
1.4.1、如果可以访问互联网的话,直接导入模板id即可。
- 找到 Dashboard ,点击 Import
- 这里我们选择的模板为:12227,直接输入这个id,点击Load,设置模板名称,配置数据源,保存即可。
1.4.2、如果访问不了互联网,可以直接导入面板的 JSON 文件。
12227_rev1.json
https://grafana.com/grafana/dashboards/12227
- 同样的操作,导入 JSON 文件
- 选择数据源即可
以上两种方式最终得到的结果如下, 至此,Node-Exporter 监控已完成
二、使用 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 相关的信息
这里还是介绍两种方式:
2.4.1 可以访问互联网,直接import导入:
导入方式跟之前一样,选择 Dashboards->Import ,输入模板id,点击Load,选择数据源,添加即可。
2.4.2 不可以访问互联网,直接通过JSON文件导入:
直接提供两个模板的JSON文件,可以自行导入
12900_rev3.json
9568_rev1.json
https://grafana.com/grafana/dashboards/12900
https://grafana.com/grafana/dashboards/9568
以上两种模板最终结果如下:
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.1 部署 MySQL-Exporter 容器
我们通过 docker-compose 的方式去进行部署,放在 /opt/metersphere 目录下面,脚本如下:
version: "2.1"
services:mysqlexporter:image: prom/mysqld-exportercontainer_name: mysqld-exporterrestart: alwaysports:- "9104:9104"environment:- DATA_SOURCE_NAME=root:Password123@mysql@(192.168.xx.xx:3306)/meterspherevolumes:- /etc/my.cnf:/etc/my.cnfcommand:--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.cnfnetworks:- 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 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
直接访问 http://192.168.xx.xx:9104 即可看到监控信息
3.2 集成到 Prometheus
安装好采集指标的 MySQL-Exporter 之后,需要集成到 Prometheus里面。
- 找到 /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
- 访问 Prometheus 地址,查看 Mysql-Exporter监控信息,可以看到状态为 UP 状态即为成功
3.3 通过 Grafana 大屏展示
这里我们选用经典的 MySQL 展示大屏,模板id为:7362,介绍两种方式:
3.3.1 可以访问互联网的,直接import导入
- 选择Dashboard->Import->输入7362 ,点击 Load->选择数据源即可
- 配置好之后,就可以看到 MySQL 的监控信息了
3.3.1.1 配置 Exporter 的 Instance 的值
到这里我们发现一个问题,有部分的监控指标是空的,展示不出来,这是因为这个监控模板展示的信息需要和 Node-Exporter 结合起来使用,想要解决这个问题很简单,在配置 Prometheus的时候,需要让Node-Exporter 的实例名称和 Mysql-Exporter 实例名称一致就好。
为了清晰明了,这里我把它配置到同一个 job 里面了。
配置好之后重启一下 Prometheus容器
docker restart ms-prometheus
重启好之后我们访问 Prometheus地址,可以看到两个 Exporter 的实例名称是一致的。
然后刷新 Grafana 监控面板,可以看到,对应的地方已经有值了。
3.3.2 不可以访问互联网的,直接导入 JSON 文件
如果不能访问互联网的,可以直接导入 JSON 文件。
7362_rev5.json
https://grafana.com/grafana/dashboards/7362
- 选择Dashboard->Import->上传JSON文件->选择对应的数据源
- 添加好之后,就可看到面板效果,如果有发现一些值没有展示出来,请参考上面配置Exporter的Instance的操作。
四、使用 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 目录下面,脚本如下:
version: "2.1"
services:kafka-exporter:image: danielqsj/kafka-exportercontainer_name: kafka-exportercommand: --kafka.server=192.168.xx.xx:9092ports:- 9308:9308restart: alwaysnetworks:- ms-network
默认端口为9308 ,参数说明:
–kafka.server | kafka的连接地址以及端口 |
---|
执行启动命令
docker-compose -f docker-compose-base.yml -f docker-compose-kafka-exporter.yml up -d
部署完成之后看下状态
4.3 集成到Prometheus
- 确认 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
- 重启好之后访问 Prometheus地址,会看到 Kafka-Exporter状态是好的。
4.4 通过 Grafana 大屏展示
这里推荐一个 Kafka的监控模板,同样的介绍两种方式应用
模板id为:12326
4.4.1 可以访问互联网的,直接 Import导入
导入的方式具体可以参考上面文章写的,方法都一样,这里不在详细介绍。
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文件导入。
模板效果
五、使用 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/cadvisorcontainer_name: cadvisorvolumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:roports:- 8888:8080restart: alwaysnetworks:- ms-network
cadvisor 默认端口是8080,我改成了8888 ,启动容器。
docker-compose -f docker-compose-base.yml -f docker-compose-cadvisor.yml up -d
5.3 集成到Prometheus
- 确认 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的信息也给集成过来了。
- 重启 Prometheus
docker restart ms-prometheus
- 查看 Prometheus 的 Targets,状态为 UP 即为正常。
5.4 通过 Grafana 大屏展示
推荐一个比较常用的模板id:16314
具体导入方式不在多讲,跟上面一样。
- 可以访问互联网,直接Import导入
选择Dashboard->Import->输入16314 ,点击Load->选择数据源即可
- 不可以访问互联网,通过JSON文件导入
16314_rev3.json
https://grafana.com/grafana/dashboards/16314
直接下载文件,导入即可。
- 效果如下:
六、注意事项
- 以上就是虚拟机、应用、MySQL,Kafka、Docker容器的监控方案,可以根据实际情况自行选择如何搭配监控。
- 以上方案都是通过 Docker 的方式安装,所以如果是内网用户,需要提前把对应的镜像下载下来,在通过 docker load 的方式安装部署。具体操作百度:docker save / load 命令。
- 本文grafana版本是9.4.3,Node-Exporter版本是 MeterSphere 自带的,其他 Exporter版本都为latest。
- 本文所有命令操作都在 /opt/metersphere 下面执行,因为用到MeterSphere自带的一些基础配置。
- 安装好对应的Exporter之后,记着要配置一下Prometheus。
- 为了部署更加方便,给一个更加全面的 docker-compose-monitor.yml ,其中的ip和端口信息需要自行修改。
version: "2.1"
services:grafana:image: grafana/grafana:9.4.3restart: alwayscontainer_name: grafanavolumes:- ms-grafana-data:/var/lib/grafanaports:- 3000:3000healthcheck:test: ["CMD", "nc", "-zv", "localhost", "3000"]interval: 6stimeout: 5sretries: 50networks:- ms-networkmysqlexporter:image: prom/mysqld-exportercontainer_name: mysqld-exporterrestart: alwaysports:- "9104:9104"environment:- DATA_SOURCE_NAME=root:Password123@mysql@(10.1.12.13:3306)/meterspherevolumes:- /etc/my.cnf:/etc/my.cnfcommand:--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.cnfnetworks:- ms-networkkafka-exporter:image: danielqsj/kafka-exportercontainer_name: kafka-exportercommand: --kafka.server=10.1.12.13:9092ports:- 9308:9308restart: alwaysnetworks:- ms-networkcadvisor:image: google/cadvisorcontainer_name: cadvisorvolumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:roports:- 8888:8080restart: alwaysnetworks:- ms-networkvolumes:ms-grafana-data:driver_opts:type: nonedevice: ${MS_BASE}/metersphere/data/grafanao: bind
启动命令
docker-compose -f docker-compose-base.yml -f docker-compose-monitor.yml up -d
相关文章:

MeterSphere 监控方案
前言:在部署MeterSphere之后,很多时候需要看下MeterSphere服务的监控信息,虽然有监控告警脚本,但还不是太直观,所以就结合 PrometheusExporterGrafana 部署一套完整的MeterSphere监控方案。 首先我们先罗列一下需要监控…...

elementui-plus+ts+axios使用el-upload组件自定义上传
1.前言: 使用element ui有很多便捷之处,但是由于是封装的组件和自己写还是有些许的不一样,这里主要解决几个问题。 1. 如何获取子组件实例 2. 如何自定义上传方法 2.两个问题: ⛺️ 获取子组件实例 实际上vue一般通过ref获取子组…...

【STM32单片机】u8g2智能风扇设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能: 初始化后进入温度显示界面,系统初始状态为手动…...

Java中的IO流的缓冲流
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴IO流体系结构🌴缓冲流1.提高效率的原理2.缓冲流的类型3.字符缓冲流两个特有方法 🌴总结 🌴IO流体系…...

7、SpringBoot_高级配置
一、配置高级 1.临时属性设置 1.1引出问题 如果目标电脑上8080端口已经使用,再次使用该端口会出现端口占用问题 解决方式 重新更换配置文件修改端口打包通过临时属性配置新端口更换配置文件 1.2添加临时属性配置 通过临时属性修改8080端口 java -jar 项目.jar…...

cocos2dx查看版本号的方法
打开文件:项目根目录\frameworks\cocos2d-x\docs\RELEASE_NOTES.md 知道引擎版本号的意义: 1.面试中经常被问到(面试官想知道你会不会查版本号,你会查也不一定会去看,如果你去看了说明你是一个有心人,或者想深入研究下…...

某高校的毕设
最近通过某个平台接的单子,最后Kali做的测试没有公开可以私聊给教程。 下面是规划与配置 1.vlan方面:推荐一个vlan下的所有主机为一个子网网段 连接电脑和http客户端的接口配置为access接口 交换机与交换机或路由器连接的接口配置为trunk接口---也可以…...

利用uvicorn、Starlette和pipeline将一个训练好的大模型发布成一个web服务
技术名词: 1、Starlette: 它是一个轻量级、高度可用性和可扩展性的Web框架,它专门为异步应用程序设计。 Starlette基于Python 3.6的异步/协程语法,具有快速响应性能和低延迟。你可以将它理解为Java的Spring。 安装:…...

贝赛尔曲线 - Vue3实现加入购物车抛物线效果组件
贝赛尔曲线 - Vue3实现加入购物车抛物线效果组件(可连续多个动画,动态回收DOM) 前言 在前几天的一次迭代中,我遇到了这么一个需求,模仿支付宝首页应用中心的编辑功能,支持编辑首页展示的应用,…...

AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes解决方法
打开一个编译选项启用ASan的程序: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes然后程序启动失败。 原因: [cfe-dev] Question about Clang/LLVM addresssanitizer /proc/sys/vm/overcommit_memory是一个用于控制内存…...

Fortinet 2023上半年全球威胁态势研究报告:勒索软件检测成下降趋势,针对性攻击持续升温
近日,专注于推动网络与安全融合的全球网络安全领导者Fortinet(NASDAQ:FTNT),发布《2023上半年全球威胁态势研究报告》。报告显示,2023 年上半年勒索软件检出数量继续下降、高级持续性威胁(APT&a…...

MySQL ——多表连接查询
一、(左、右和全)连接概念 内连接: 假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来。A和B两张表没有主付之分,两张表是平等的。 关键字:inner join on 语句…...

前沿技术 --> 待定
一、可会可不会 1.1如何优雅的编写技术文档 网址: 如何优雅的编写技术文档? - YouTube...

Linux定时python脚本(crontab版本)
1.0 使用Linux系统命令 crontab 自带的定时命令2.0 crontab的使用 2.1 添加定时任务 crontab -e2.2 查看定时任务的完成情况 2.2.1 查看日志 tail -f /var/log/syslog | grep CRON 2.2.2 任务执行情况 grep CRON /var/log/syslog 2.3 定时任务的规则 每隔一分钟执行一次…...

修改 Ubuntu .cache 和 pip cache 默认路径
修改 Ubuntu .cache 和 pip cache 默认路径 非常不建议修改 .cache 默认路径,除非你知道修改后的影响。 执行下面命令进行修改, vi /root/.bashrc--- 追加 export XDG_CACHE_HOME/u01/.cache export PIP_CACHE_DIR/u01/.cache ---完结!...

【Java SE】Lambda表达式
目录 ♫什么是Lambda表达式 ♫Lambda表达式的语法 ♫函数式接口 ♫Lambda表达式的使用 ♫变量捕获 ♫ Lambda表达式在集合中的使用 ♪Collection的foreach(): ♪List的sort(): ♪Map的foreach() ♫什么是Lambda表达式 Lambda 表达式是 Java SE 8中一个…...

Kafka-UI
有多款kafka管理应用,目前选择的是github上star最多的UI for Apache Kafka。 关于 To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself. UI for Apache Kafka is a versatile, fast, and lightweight…...

Unity 制作登录功能02-创建和链接数据库(SQlite)
国际惯例:先看效果 1.SQlite是一种嵌入型数据库 在Unity开发游戏时使用SQLite有多种原因,以下是其中一些主要原因: 嵌入式数据库:SQLite是一个嵌入式数据库引擎,这意味着它不需要单独的服务器进程。这使得使用SQLite非…...

算法 岛屿数量-(递归回溯)
牛客网 BM57. 二维矩阵,值为1表示岛屿,0表示海洋,求海洋中岛屿数量。 解题思路: 遍历二维数组,值为1增加岛屿数量记数,同时对此位置进行单独递归遍历上下左右4个方向,将数组坐标范围内同时值为1的元素置…...

安卓恶意应用识别(番外篇)(Python并行(多线程or多进程)执行cmd)
前言 本人为了批量反编译,不得不涉及到批量执行,之前没有彻底理解有关于多线程的概念和python方法,现在只能一步一步尝试,并且实践,写本文以记录。 1. 进程与线程 1.1 什么是进程? 1.1.1 概念 进程是一…...

基于大语言模型扬长避短架构服务
秘诀: 扬泛化之长, 避时延之短...

初识网络编程
一、概述 地球村:亦称世界村,是通过电子媒介将世界紧密联系起来的形象表达,是信息网络时代的集中体现 TCP和UDP: TCP:打电话 -->连接 -->接了 -->通话 UDP:发送完即可 -->接收 计算机网络&a…...

轻松使用androidstudio交叉编译libredwg库
对于安卓或嵌入式开发者而言,交叉编译是再熟悉不过的操作了,可是对于一些刚入门或初级开发者经常会遇到这样的问题:如何交叉编译C++库来生成安卓下的so库呢? 最近有一些粉丝找到我求救,那么我最近刚好有空大致研究了下,帮他们成功编译了其中一个libredwg的C++库,这篇文章…...

【C++杂货铺】一颗具有搜索功能的二叉树
文章目录 一、二叉搜索树概念二、二叉搜索树的操作2.1 二叉搜索树的查找2.2 二叉搜索树的插入2.3 二叉搜索树的删除 三、二叉搜索树的实现3.1 BinarySearchTreeNode(结点类)3.2 BinarySearchTree(二叉搜索树类)3.2.1 框架3.2.2 in…...

uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined
项目中引用了一个UI组件库,在表单上添加了ref属性,方便提交时验证。触发提交方法时显示不存在这个方法或this.$refs为undefined。 <u--form labelPosition"left" :model"userInfo" :rules"rules" ref"loginForm&…...

蜂蜜配送销售商城小程序的作用是什么
蜂蜜是农产品中重要的一个类目,其受众之广市场需求量大,但由于非人人必需品,因此传统线下门店经营也面临着痛点,线上入驻平台也有很多限制难以打造自有品牌,无法管理销售商品及会员、营销等,缺少自营渠道&a…...

大数据Flink(八十四):SQL语法的DML:窗口聚合
文章目录 SQL语法的DML:窗口聚合 一、滚动窗口(TUMBLE)...

系统集成|第十八章(笔记)
目录 第十八章 安全管理18.1 信息安全管理18.2 信息系统安全18.3 物理安全管理18.4 人员安全管理18.5 应用该系统安全管理18.6 信息安全等级保护18.7 拓展 上篇:第十七章、变更管理 下篇:第十九章、风险管理 第十八章 安全管理 18.1 信息安全管理 信息安…...

480万商品,如何架构商品治理平台?
说在前面 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴拿高薪,完成架构的升级,进入架构师赛道,打开薪酬天花板。 最近有小伙伴拿到了一线互联网企业如京东、网易、微博、阿里、汽车之家、极兔、有赞、希音、百度、滴滴的架…...

【C++入门指南】C如何过渡到C++?祖师爷究竟对C++做了什么?
【C入门指南】C如何过渡到C?祖师爷究竟对C做了什么? 前言一、命名空间1.1 命名空间的定义1.2 命名空间使用 二、C输入、输出2.1 std命名空间的使用惯例 三、缺省参数3.1 缺省参数的定义3.2 缺省参数分类 四、函数重载4.1 函数重载概念4.2 C支持函数重载的…...