Prometheus实战篇:Prometheus监控mongodb

news/2024/5/18 22:21:56 标签: prometheus, mongodb, 数据库

mongodb_0">Prometheus实战篇:Prometheus监控mongodb

准备环境

mongodb_4">docker-compose安装mongodb

docker-compose.yaml

version: '3'
services:
   mongo:
 	image: mongo:4.2.5
 	container_name: mongo
 	 restart: always
 	 volumes:
 	 	- /data/mongo/db: /data/db
 	 port:
 	 - 27017:27017
 	 command: [--auth]
 	 enviroment:
 	 	MONGO_INITDB_ROOT_USERNAME: root
 	 	MONGO_INITDB_ROOT_PASSWORD: 123456
docker-compose up -d

监控mongoDB

创建监控用户

登录MongoDB创建监控用户,权限为"readAnyDatabase",如果是cluster环境,需要有"clusterMonitor"

登录MongoDB(docker安装的mongo)

docker exec -it mongo mongo admin

创建监控用户

> db.auth('root','123456')
1
>db.createUser({ user: 'exporter',pwd : 'password',roles:[{role: 'readAnyDatabase',db : admin},{role: 'clusterMonitor',db : admin}]})
#测试 使用上面创建的用户信息进行连接
> db.auth('exporter','password')
1
#表示成功
> exit

docker安装exporter

docker直接运行

docker run -d  -p 9216:9216 -p 17001:17001 --restart=always  --name mongodb-exporter bitnami/mongodb_exporter :latest --collect-all --compatible-mode --mongodb.uri=mongodb://exporter:password@localhost:27017/admin?ssl=false

docker-compose方式

为了方便省事,我mongodb使用管理员账号,生产不建议使用

cat >docker-compose.yml << EOF
version: '3.3'
services:
 mongodb_exproter:
 	image: bitnami/mongodb_exporter:latest
 	container_name: mongodb_exproter
 	restart: always
 	environment:
 		MONGODB_URI: "mongodb://exporter:password@localhost:27017/admin?ssl=false"
 	command:
 		- '--collect-all'
 		- '--compatible-mode'
 	port:
 	 - "9216:9216"
EOF

启动

docker-compose up -d

检查

查看正在运行的容器
docker ps

或者:

查看mongodb_exporter容器的运行日志
docker logs -f mongodb_exporter

参数解释

Environment variable描述
collect-alllocalhost:15672rabbitmq管理插件的url(必须以http(2)开头)
compatible-modeguestrabbitmq管理插件的用户名

metrics地址

安装好Exporter后会暴露一个/metrics结尾的服务

名称地址
mongodb_exporterhttp://localhost:9216/metrics

Prometheus配置

配置Prometheus去采集(拉取)nginx_exporter的监控样本数据

cd /data/docker-prometheus

# 在scrapc_configs(搜刮配置):下面增加如下配置:
cat >prometheus/prometheus.yml <<FOF
 - job_name: 'mongodb_exporter'
   static_configs:
   - targets: ['localhost:9216']
   	 labels:
   	 	instance: test服务器 
EOF

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

image.png

mongodb_148">常用的mongodb监控指标

mongodb_ss_connections{conn_type="available"} 可用的连接数

mongodb_ss_mem_virtual
mongodb_ss_mem_residenl


#关于server status
mongodb_up	服务器是否在线
mongodb_ss_ok{cl_id="",cl_role="current",rs_state="0"}	服务器是否正常运行,取值为1,0.标签中记录了Cluster,ReplicaSet
mongodb_ss_uptime	服务器的运行时长,单位为秒
mongdb_ss_connections{conn_type="current"}	客户端连接数

# 关于主机
mongodb_sys_cpu_num_cpus	主机的CPU核数

# 关于 collection
mongodb_collstats_storageStats_count{database="xx",collection="xx"}	collection 全部文档的数量
mongodb_collstats_storageStats_size	collection全部文档的体积,单位bytes
mongodb_collstats_storageStats_storageSize	collection全部文档占用的磁盘空间,默认会压缩
delta(mongodb_collstats_latencyStats_reads_ops[1m])	collection读操作的数量(每分钟)
delta(mongodb_collstats_latencyStats_reads_latency[1m])	collection读操作的延迟(每分钟),单位为微秒
mongodb_collstats_latencyStats_write_ops
mongodb_collstats_latencyStats_write_latency

触发器配置

由于之前的触发器是全部写在了一个yml里面就是alert.yam,这样随着后面配置的触发器越来越多最终会变得难以维护.这里我们让它去读rules目录下所有的yml文件即可

Prometheus配置

rule_files:
	- "alert.yml"
	- "rules/*.yml"

配置mongdb触发器

因为是单机所以未配置集群的触发器

cat >prometheus/rules/mongodb.yml <<FOF
groups:
- name: PerconaMongodbExporter
	rules:
    - alert: MongodbDown
      expr: 'mongodb_up == 0'
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: "MongoDB Down,容器:$labels.instance"
          description: "MongoDB 容器 is down,当前值{{ $value }}"
    - alert: MongodbNumberCursorsOpen
      expr: 'mongodb_ss_metrics_cursor_open{csr_type="total"}' > 10
      for: 2m
      labels:
        severity: warning
      annotations:
          summary: "MongoDB 数字游标打开告警 容器:{{$labels.instance }}"
          description: "MongoDB为客户端打开的游标过多>10k,当前值为:{{ $value }}"
    - alert: MongdbCursorsTimeouts
      expr: 'increase(mongodb_ss_metrics_cursor_timedOut[1m]) > 100'
      for: 2m
      labels:
        severity: warning
      annotations:
          summary: "MongDB 游标超时,容器:{{$labels.instance }}"
          description: "太多游标超时,当前值为:{{ $value }}"
    - alert: MongodbVirtualMemoryUsage
      expr: '(sum(mongodb_ssmem_virtual BY (instance) / sum(mongodb_ss_mem_resident) BY (instance)) > 3'
      for: 2m
      labels:
        severity: warning
      annotations:
          summary: "MongoDB虚拟内存使用告警,容器:{{$labels.instance }}"
          description: "虚拟内存使用过高,当前值为:{{ $value }}"
   
EOF

一定记住这里需要仔细校对yaml语法,最好是能去在线验证yaml语法的网站上看看.yaml语法还是比较严格的一点缩进错误都不能有

检查配置

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

重新加载配置

curl -x POST http://localhost:9090/-/reload

检查

http://localhost:9090/alerts?search=

或:

http://localhost:9090/rules

image.png

dashboard

这里需要从github上去下载对应的dashboard

https://github.com/percona/grafana-dashboards/blob/main/dashboards/MongoDB/MongoDB_Instances_Overview.json

选择导入刚刚从github上下载的json文件即可

image.png

可以发现最终的仪表盘上有这一块连接数是空的

image.png

只需要在插件中将polystat的插件下载即可,具体在设置中然后搜索这个插件下载即可.

image.png


http://www.niftyadmin.cn/n/5312880.html

相关文章

商城小程序(7.加入购物车)

目录 一、配置vuex二、创建购物车的store模块三、在商品详情页中使用store模块四、实现购加入购物车功能五、动态统计购物车中商品的总数量六、持久化存储购物车的商品七、优化商品详情页的total侦听器八、动态为tabBar页面设置数据徽标九、将设置tabBar徽标的代码抽离为mixins…

【大模型】大型模型飞跃升级—文档图像识别领域迎来技术巨变

写在前面 2023年12月31日&#xff0c;第十九届中国图象图形学学会青年科学家会议在广州举行&#xff0c;由中国图象图形学学会主办。 该会议的目标是促进青年科学家之间的交流与合作&#xff0c;以提升我国在图像图形领域的科研水平和创新能力。 由中国图象图形学学会和上海合合…

React 类组件和函数组件

组件component 一.概念 Element VS Component (元素与组件) //不成文的约定:元素小写&#xff0c;组件大写 const divReact.createElement(div,...) 这是一个React元素(小写) const Div()>React.createElement(div,...) 这是一个React组件(大写) 什么是组件? 能跟其他…

无线信号强度测试板/射频产品量产测试神器

目录 一、测试板特点 二、应用场景 三、芯片特点 四、测试板接口图 …

stable diffusion WebUI基础-安装

电脑配置要求 N卡显存6G起(建议直接上12G)内存建议16G,8G也可固态盘500G以上CPU i5即可魔法上网虚拟环境安装python 我非常不建议直接在自己的电脑里直接装python,因为现在很多项目的环境比较乱,对于stable diffusion 尽可能有一个干净的python 环境最好,所以我推荐使用mi…

报道 | 2024年2月-2024年4月国际运筹优化会议汇总

2023年2月-2024年4月召开会议汇总&#xff1a; International Conference on Algorithms and Discrete Applied Mathematics (CALDAM 2024) Location: Chhattisgarh, India Important Dates: Conference: February 15 - 17, 2024 Details: https://events.iitbhilai.ac.in/…

linux 设备模型之类

我们在本章中要考察最后的设备模型概念是类.一个类是一个设备的高级视图, 它抽象出 低级的实现细节. 驱动可以见到一个 SCSI 磁盘或者一个 ATA 磁盘, 在类的级别, 它们都 是磁盘. 类允许用户空间基于它们做什么来使用设备, 而不是它们如何被连接或者它们如 何工作. 几乎所有的类…

在 PyCharm 中使用 Copilot

GitHub Copilot 由 OpenAI Codex 提供支持&#xff0c;可帮助用户在编辑器中实时工作。 它使用强大的 GPT-3 模型版本&#xff0c;该模型在大量开源代码上进行训练。 此外&#xff0c;GitHub Copilot 可在不同的 IDE&#xff08;集成开发环境&#xff09;上使用&#xff0c;包…