MongoDB 可观测性最佳实践

MongoDB 介绍

MongoDB 是一个高性能、开源的 NoSQL 数据库,它采用灵活的文档数据模型,非常适合处理大规模的分布式数据。MongoDB 的文档存储方式使得数据结构可以随需求变化而变化,提供了极高的灵活性。它支持丰富的查询语言,允许执行复杂的数据操作,同时具备自动分片和副本集等特性,确保了数据的高可用性和水平扩展性。MongoDB 的易用性、高性能和可扩展性使其成为现代应用程序,特别是需要处理大量非结构化或半结构化数据的应用程序的理想选择。

对 MongoDB 进行监控是确保数据库系统健康、优化性能和预防故障的关键措施。监控可以帮助管理员实时了解数据库的运行状态,包括性能指标、资源使用情况和潜在的安全威胁。通过监控,可以及时发现并解决性能瓶颈,如慢查询或高内存使用,从而提高应用程序的响应速度和用户体验。此外,监控还能帮助预测和预防系统故障,比如通过监控磁盘空间来避免潜在的数据丢失。总的来说,监控 MongoDB 对于维护数据库的稳定性、安全性和高效性至关重要。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」 选择对应安装方式,当前采用 Linux 主机部署 DataKit。

开启 MongoDB 采集器

进入 DataKit 安装目录下的 conf.d/db 目录,复制 mongodb.conf.sample 并命名为 mongodb.conf。示例如下:

[[inputs.mongodb]]## Gathering intervalinterval = "10s"## Specify one single Mongodb server. These server related fields will be ignored when the 'servers' field is not empty.## connection_format is a string in the standard connection format (mongodb://) or SRV connection format (mongodb+srv://).connection_format = "mongodb://"## The host and port. host_port = "127.0.0.1:27017"## Usernameusername = "datakit"## Passwordpassword = "<PASS>"## The authentication database to use.# default_db = "admin"## A query string that specifies connection specific options as <name>=<value> pairs.# query_string = "authSource=admin&authMechanism=SCRAM-SHA-256"## A list of Mongodb servers URL## Note: must escape special characters in password before connect to Mongodb server, otherwise parse will failed.## Form: "mongodb://[user ":" pass "@"] host [ ":" port]"## Some examples:## mongodb://user:pswd@localhost:27017/?authMechanism=SCRAM-SHA-256&authSource=admin## mongodb://user:pswd@127.0.0.1:27017,## mongodb://10.10.3.33:18832,# servers = ["mongodb://127.0.0.1:27017"]## When true, collect replica set statsgather_replica_set_stats = false## When true, collect cluster stats## Note that the query that counts jumbo chunks triggers a COLLSCAN, which may have an impact on performance.gather_cluster_stats = false## When true, collect per database statsgather_per_db_stats = true## When true, collect per collection statsgather_per_col_stats = true## List of db where collections stats are collected, If empty, all dbs are concerned.col_stats_dbs = []## When true, collect top command stats.gather_top_stat = true## Set true to enable electionelection = true## TLS connection config# ca_certs = ["/etc/ssl/certs/mongod.cert.pem"]# cert = "/etc/ssl/certs/mongo.cert.pem"# cert_key = "/etc/ssl/certs/mongo.key.pem"# insecure_skip_verify = true# server_name = ""## Mongodb log files and Grok Pipeline files configuration# [inputs.mongodb.log]# files = ["/var/log/mongodb/mongod.log"]# pipeline = "mongod.p"## Customer tags, if set will be seen with every metric.# [inputs.mongodb.tags]# "key1" = "value1"# "key2" = "value2"# ...

重启 DataKit。

# Linux/Mac 可能需加上 sudo
datakit service -R # restart

关键指标

指标名称描述
uptime_nsMongoDB实例的总运行时间
cpu_usage系统CPU的使用率
mem_used_percent系统内存的使用率
disk_used_percent系统磁盘的使用率
net_out_bytes从MongoDB实例发送出去的网络字节数
net_in_bytes进入MongoDB实例的网络字节数
connections_current当前与数据库服务器的活跃连接数
connections_total_created每秒新创建的连接数
queries_per_sec每秒执行的查询次数
inserts_per_sec每秒执行的插入操作次数
updates_per_sec每秒执行的更新操作次数
deletes_per_sec每秒执行的删除操作次数
percent_cache_used缓存的使用率
percent_cache_dirty脏缓存的使用率
cursor_total_count当前打开的游标数量
cursor_timed_out_count因超时而关闭的游标数量
cursor_totalMongoDB维护的游标总数
cursor_pinned_count固定的游标数量
aggregate_command_total聚合命令执行的总次数
aggregate_command_failed聚合命令失败的次数
assert_msg消息断言发生的次数
assert_user用户断言发生的次数
ttl_deletes_per_sec每秒因TTL索引而删除的文档数量
ttl_passes_per_sec每秒后台TTL线程进行删除的次数
document_inserted插入的文档总数
document_deleted删除的文档总数
document_returned返回的文档总数
document_updated更新的文档总数
insert_command_totalinsert 命令执行的总次数
delete_command_totaldelete 命令执行的总次数
update_command_totalupdate 命令执行的总次数
find_command_totalfind 命令执行的总次数
insert_command_failedinsert 命令失败的次数
find_command_failedfind 命令失败的次数
update_command_failedupdate 命令失败的次数
delete_command_faileddelete 命令失败的次数
repl_stateReplica Set成员的状态
repl_queries, repl_deletes, repl_inserts, repl_updatesReplica Set的查询、删除、插入、更新操作
repl_lag主从复制的滞后时间

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “MongoDB”, 选择 “MongoDB 监控视图”,点击 “确定” 即可添加视图。

监控器(告警)

主从写操作延迟超过30ms告警

Mongodb的连接数过高

Mongodb聚合命令失败率过多

总结

通过观测云平台对 MongoDB 进行统一监控,我们能够实时追踪关键性能指标,如活跃读写连接数、聚合命令的执行与失败次数、以及断言情况。这些指标对于优化数据库性能、识别性能瓶颈、及时排查故障至关重要。它们帮助我们提升缓存策略,确保数据一致性,进行有效的容量规划,并为业务分析提供支持。这样的监控不仅增强了用户体验,也显著提高了系统的可靠性和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36154.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.angular 服务

服务是在controller里面引入的服务&#xff1a; 最好是内部服务在前面&#xff0c;自定义服务在后面 内部服务 $scope $scope.$watch(‘属性名’, function(newVal, oldVal) {}, true) true是深度监听,对象函数等$scope.$apply 触发页面更新,里面传入回调函数,比如说之前那个…

HarmonyOS NEXT开发进阶(十二):build-profile.json5 文件解析

文章目录 一、前言二、Hvigor脚本文件三、任务与任务依赖图四、多模块管理4.1 静态配置模块 五、分模块编译六、配置多目标产物七、配置APP多目标构建产物八、定义 product 中包含的 target九、拓展阅读 一、前言 编译构建工具DevEco Hvigor&#xff08;以下简称Hvigor&#x…

【强化学习基石】Deepseek V3技术报告中的GRPO算法是什么?

1. Deepseek V3技术报告中的GRPO算法是什么? GRPO(Generalized Relative Policy Optimization)是一种在强化学习领域用于策略优化的算法。它主要是在策略梯度方法的基础上进行改进,目的是更有效地优化策略网络,从而提高智能体在环境中的表现。 GRPO 的核心思想是通过相对…

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多&#xff0c;部分解决方法并不能完全契合我遇到的问题&#xff0c;因此我选择以自己偏好的方式&#xff0c;对 VSCode 进行完整的配置&#xff0c;并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

Billu_b0x靶机攻略

1&#xff0c;安装好靶机并打开&#xff0c;打开kali进行扫描得到靶机ip为192.168.50.138 2&#xff0c;访问靶机以及扫描出的目录 3&#xff0c;访问test.php发现file参数为空&#xff0c;尝试拼接其他路径来访问&#xff0c;发现可以file传参&#xff0c;利用插件进行post传参…

如何搭建一个安全经济适用的TRS交易平台?

TRS&#xff08;总收益互换&#xff09;一种多方参与的投资方式&#xff0c;也是绝对收益互换&#xff08;total return swap&#xff09;的一种形式。 它是一种衍生合约&#xff0c;是一种金融衍生品的合约&#xff0c;是指交易双方在协议期间将参照资产的总收益转移给信用保…

LeetCode 解题思路 16(Hot 100)

解题思路&#xff1a; 初始化辅助节点&#xff1a; dummy&#xff1a;哑节点。pre&#xff1a;当前链表的前一个节点。start&#xff1a;当前链表的第一个节点。end&#xff1a;当前链表的最后一个节点。nextStart&#xff1a;end.next&#xff0c;下组链表的第一个节点&…

数据结构——串、数组和广义表

串、数组和广义表 1. 串 1.1 串的定义 串(string)是由零个或多个字符组成的有限序列。一般记为 S a 1 a 2 . . . a n ( n ≥ 0 ) Sa_1a_2...a_n(n\geq0) Sa1​a2​...an​(n≥0) 其中&#xff0c;S是串名&#xff0c;单引号括起来的字符序列是串的值&#xff0c; a i a_i a…

LeetCode BFS层序遍历树

中等 103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输入&#…

深度学习大模型补充知识点

文章目录 VIT用途处理方法与CNN区别 多模态LLM&#xff1a;大语言模型预训练指令微调强化学习 总结 VIT ViT&#xff08;Vision Transformer&#xff09; 首次将 Transformer架构成功应用于计算机视觉领域&#xff08;尤其是图像分类任务&#xff09;。传统视觉任务主要依赖卷…

RCore学习记录002

初次运行RCore和调试&#xff0c;这里使用的RCore代码是实验指导书的代码&#xff0c;而非RCore训练营的 讲两种方法&#xff0c;第一种是传统的gdb调试&#xff0c;在上一节中提到的riscv交叉编译工具链中的已经安装了riscv的gdb&#xff0c;另一种是基于CLion的可视化调试&a…

maven在idea上搭建

maven搭建 首先进入maven官网&#xff0c;去download下载欢迎使用 Apache Maven – Maven下载免安装版本&#xff0c;解压在任意目录下&#xff0c;命名别取中文名 配置环境变量 复制你刚刚maven解压的路径&#xff0c;我这里是D:\resource\apache-maven-3.8.8&#xff0c;之…

【sql靶场】第18-22关-htpp头部注入保姆级教程

目录 【sql靶场】第18-22关-htpp头部注入保姆级教程 1.回顾知识 1.http头部 2.报错注入 2.第十八关 1.尝试 2.爆出数据库名 3.爆出表名 4.爆出字段 5.爆出账号密码 3.第十九关 4.第二十关 5.第二十一关 6.第二十二关 【sql靶场】第18-22关-htpp头部注入保姆级教程…

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目&#xff0c;有业务出现偶发的部署导致响应很慢的情况&#xff0c;据了解&#xff0c;业务使用域名访问&#xff0c;相同的nginx代理&#xff0c;唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台&#xff0c;毕竟业务是重启几次正常&#xff0c;偶…

SpringBoot之如何集成SpringDoc最详细文档

文章目录 一、概念解释1、OpenAPI2、Swagger3、Springfox4、Springdoc5. 关系与区别 二、SpringDoc基本使用1、导包2、正常编写代码&#xff0c;不需要任何注解3、运行后访问下面的链接即可 三、SpringDoc进阶使用1、配置文档信息2、配置文档分组3、springdoc的配置参数**1. 基…

基于扣子(coze.cn)搭建一个古文化学习助手

highlight: a11y-dark 扣子Coze 是由字节跳动推出的一个AI聊天机器人和应用程序编辑开发平台&#xff0c;可以理解为字节跳动版的GPTs。 下面进行Coze的登录&#xff0c;初步使用&#xff0c;创建定制化的Bot&#xff08;聊天机器人&#xff09;&#xff0c;插件使用等操作。…

Modbus TCP到RTU:轻松转换指南!

Modbus TCP 到 RTU&#xff1a;轻松转换指南&#xff01; 在现代工业自动化领域&#xff0c;Modbus TCP和Modbus RTU两种通信协议因其高效、稳定的特点被广泛应用。然而&#xff0c;随着技术的发展和设备升级的需求&#xff0c;经常会遇到需要将这两种协议进行互相转换的场景。…

云钥科技工业相机定制服务,助力企业实现智能智造

在工业自动化、智能制造和机器视觉快速发展的今天&#xff0c;工业相机作为核心感知设备&#xff0c;其性能直接决定了检测精度、生产效率和产品质量。然而&#xff0c;标准化工业相机往往难以满足复杂多样的应用场景需求&#xff0c;‌工业相机定制‌逐渐成为企业突破技术瓶颈…

HAL库STM32常用外设—— CAN通信(一)

文章目录 一、CAN是什么&#xff1f;1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…

设计模式 二、创建型设计模式

GoF是 “Gang of Four”&#xff08;四人帮&#xff09;的简称&#xff0c;它们是指4位著名的计算机科学家&#xff1a;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他们合作编写了一本非常著名的关于设计模式的书籍《Design Patterns: Elements of Reusable…