MongoDB 监控

优质
小牛编辑
115浏览
2023-12-01

MongoDB performance monitor plugin for Open-Falcon

功能支持

已测试版本: 支持MongoDB版本2.4,2.6 3.0,3.2, 以及Percona MongoDB3.0

支持存储引擎:MMAPv1, wiredTiger, RocksDB, PerconaFT 存储引擎(部分存储引擎的指标未采集完,可直接代码中添加)

支持结构: standlone, 副本集,分片集群

支持节点:mongod数据节点,配置节点,Primary/Secondary, mongos; 不支持Arbiter节点

监控数据采集原理

1 存活监控: 包括auth

2 serverStatus

3 replSetGetStatus

4 oplog.rs

5 mongos

通过cron每分钟采集上报,采集对MongoDB理论无性能影响

环境要求

操作系统: Linux

Python 2.6

PyYAML > 3.10

python-requests > 0.11

mongomon部署

1 目录解压到/path/to/mongomon

2 配置当前服务器的MongoDB多实例(mongod,配置节点,mongos)信息,/path/to/mongomon/conf/mongomon.conf 每行记录一个实例: 端口,用户名,密码

  • {port: 27017, user: "",password: ""}

3 配置crontab, 修改mongomon/conf/mongomon_cron文件中mongomon安装path; cp mongomon_cron /etc/cron.d/

4 几分钟后,可从open-falcon的dashboard中查看MongoDB metric

5 endpoint默认是hostname

MongoDB falcon screen

采集的MongoDB指标


CountersTypeNotes
mongo_local_aliveGAUGEmongodb存活本地监控,如果开启Auth,要求连接认证成功
asserts_msgCOUNTER消息断言数/秒
asserts_regularCOUNTER常规断言数/秒
asserts_rolloversCOUNTER计数器roll over的次数/秒,计数器每2^30个断言就会清零
asserts_userCOUNTER用户断言数/秒
asserts_warningCOUNTER警告断言数/秒
page_faultsCOUNTER页缺失次数/秒
connections_availableGAUGE未使用的可用连接数
connections_currentGAUGE当前所有客户端的已连接的连接数
connections_used_percentGAUGE已使用连接数百分比
connections_totalCreatedCOUNTER创建的新连接数/秒
globalLock_currentQueue_totalGAUGE当前队列中等待锁的操作数
globalLock_currentQueue_readersGAUGE当前队列中等待读锁的操作数
globalLock_currentQueue_writersGAUGE当前队列中等待写锁的操作数
locks_Global_acquireCount_ISlockCOUNTER实例级意向共享锁获取次数
locks_Global_acquireCount_IXlockCOUNTER实例级意向排他锁获取次数
locks_Global_acquireCount_SlockCOUNTER实例级共享锁获取次数
locks_Global_acquireCount_XlockCOUNTER实例级排他锁获取次数
locks_Global_acquireWaitCount_ISlockCOUNTER实例级意向共享锁等待次数
locks_Global_acquireWaitCount_IXlockCOUNTER实例级意向排他锁等待次数
locks_Global_timeAcquiringMicros_ISlockCOUNTER实例级共享锁获取耗时 单位:微秒
locks_Global_timeAcquiringMicros_IXlockCOUNTER实例级共排他获取耗时 单位:微秒
locks_Database_acquireCount_ISlockCOUNTER数据库级意向共享锁获取次数
locks_Database_acquireCount_IXlockCOUNTER数据库级意向排他锁获取次数
locks_Database_acquireCount_SlockCOUNTER数据库级共享锁获取次数
locks_Database_acquireCount_XlockCOUNTER数据库级排他锁获取次数
locks_Collection_acquireCount_ISlockCOUNTER集合级意向共享锁获取次数
locks_Collection_acquireCount_IXlockCOUNTER集合级意向排他锁获取次数
locks_Collection_acquireCount_XlockCOUNTER集合级排他锁获取次数
opcounters_commandCOUNTER数据库执行的所有命令/秒
opcounters_insertCOUNTER数据库执行的插入操作次数/秒
opcounters_deleteCOUNTER数据库执行的删除操作次数/秒
opcounters_updateCOUNTER数据库执行的更新操作次数/秒
opcounters_queryCOUNTER数据库执行的查询操作次数/秒
opcounters_getmoreCOUNTER数据库执行的getmore操作次数/秒
opcountersRepl_commandCOUNTER数据库复制执行的所有命令次数/秒
opcountersRepl_insertCOUNTER数据库复制执行的插入命令次数/秒
opcountersRepl_deleteCOUNTER数据库复制执行的删除命令次数/秒
opcountersRepl_updateCOUNTER数据库复制执行的更新命令次数/秒
opcountersRepl_queryCOUNTER数据库复制执行的查询命令次数/秒
opcountersRepl_getmoreCOUNTER数据库复制执行的gtemore命令次数/秒
network_bytesInCOUNTER数据库接受的网络传输字节数/秒
network_bytesOutCOUNTER数据库发送的网络传输字节数/秒
network_numRequestsCOUNTER数据库接收到的请求的总次数/秒
mem_virtualGAUGE数据库进程使用的虚拟内存
mem_residentGAUGE数据库进程使用的物理内存
mem_mappedGAUGEmapped的内存,只用于MMAPv1 存储引擎
mem_bitsGAUGE64 or 32bit
mem_mappedWithJournalGAUGEjournal日志消耗的映射内存,只用于MMAPv1 存储引擎
backgroundFlushing_flushesCOUNTER数据库刷新写操作到磁盘的次数/秒
backgroundFlushing_average_msGAUGE数据库刷新写操作到磁盘的平均耗时,单位ms
backgroundFlushing_last_msCOUNTER当前最近一次数据库刷新写操作到磁盘的耗时,单位ms
backgroundFlushing_total_msGAUGE数据库刷新写操作到磁盘的总耗时/秒,单位ms
cursor_open_totalGAUGE当前数据库为客户端维护的游标总数
cursor_timedOutCOUNTER数据库timout的游标个数/秒
cursor_open_noTimeoutGAUGE设置DBQuery.Option.noTimeout的游标数
cursor_open_pinnedGAUGE打开的pinned的游标数
repl_healthGAUGE复制的健康状态
repl_myStateGAUGE当前节点的副本集状态
repl_oplog_windowGAUGEoplog的窗口大小
repl_optimeGAUGE上次执行的时间戳
replication_lag_percentGAUGE延时占比(lag/oplog_window)
repl_lagGAUGESecondary复制延时,单位秒
shards_sizeGAUGE数据库集群的分片个数; config.shards.count
shards_mongosSizeGAUGE数据库集群中mongos节点个数;config.mongos.count
shards_chunkSizeGAUGE数据库集群的chunksize大小设置,以config.settings集合中获取
shards_activeWindowGAUGE数据库集群的数据均衡器是否设置了时间窗口,1/0
shards_activeWindow_startGAUGE数据库集群的数据均衡器时间窗口开始时间,格式23.30表示 23:30分
shards_activeWindow_stopGAUGE数据库集群的数据均衡器时间窗口结束时间,格式23.30表示 23:30分
shards_BalancerStateGAUGE数据库集群的数据均衡器的状态,是否为打开
shards_isBalancerRunningGAUGE数据库集群的数据均衡器是否正在运行块迁移
wt_cache_used_total_bytesGAUGEwiredTiger cache的字节数
wt_cache_dirty_bytesGAUGEwiredTiger cache中"dirty"数据的字节数
wt_cache_readinto_bytesCOUNTER数据库写入wiredTiger cache的字节数/秒
wt_cache_writtenfrom_bytesCOUNTER数据库从wiredTiger cache写入到磁盘的字节数/秒
wt_concurrentTransactions_writeGAUGEwrite tickets available to the WiredTiger storage engine
wt_concurrentTransactions_readGAUGEread tickets available to the WiredTiger storage engine
wt_bm_bytes_readCOUNTERblock-manager read字节数/秒
wt_bm_bytes_writtenCOUNTERblock-manager write字节数/秒
wt_bm_blocks_readCOUNTERblock-manager read块数/秒
wt_bm_blocks_writtenCOUNTERblock-manager write块数/秒
rocksdb_num_immutable_mem_table
rocksdb_mem_table_flush_pending
rocksdb_compaction_pending
rocksdb_background_errors
rocksdb_num_entries_active_mem_table
rocksdb_num_entries_imm_mem_tables
rocksdb_num_snapshots
rocksdb_oldest_snapshot_time
rocksdb_num_live_versions
rocksdb_total_live_recovery_units
PerconaFT_cachetable_size_current
PerconaFT_cachetable_size_limit
PerconaFT_cachetable_size_writing
PerconaFT_checkpoint_count
PerconaFT_checkpoint_time
PerconaFT_checkpoint_write_leaf_bytes_compressed
PerconaFT_checkpoint_write_leaf_bytes_uncompressed
PerconaFT_checkpoint_write_leaf_count
PerconaFT_checkpoint_write_leaf_time
PerconaFT_checkpoint_write_nonleaf_bytes_compressed
PerconaFT_checkpoint_write_nonleaf_bytes_uncompressed
PerconaFT_checkpoint_write_nonleaf_count
PerconaFT_checkpoint_write_nonleaf_time
PerconaFT_compressionRatio_leaf
PerconaFT_compressionRatio_nonleaf
PerconaFT_compressionRatio_overall
PerconaFT_fsync_count
PerconaFT_fsync_time
PerconaFT_log_bytes
PerconaFT_log_count
PerconaFT_log_time
PerconaFT_serializeTime_leaf_compress
PerconaFT_serializeTime_leaf_decompress
PerconaFT_serializeTime_leaf_deserialize
PerconaFT_serializeTime_leaf_serialize
PerconaFT_serializeTime_nonleaf_compress
PerconaFT_serializeTime_nonleaf_decompress
PerconaFT_serializeTime_nonleaf_deserialize
PerconaFT_serializeTime_nonleaf_serialize

建议设置监控告警项

说明:系统级监控项由falcon agent提供;监控触发条件根据场景自行调整

告警项
load.1min>10
cpu.idle<10
df.bytes.free.percent<30
df.bytes.free.percent<10
mem.memfree.percent<20
mem.memfree.percent<10
mem.memfree.percent<5
mem.swapfree.percent<50
mem.memused.percent>=50
mem.memused.percent>=10
net.if.out.bytes>94371840
net.if.in.bytes>94371840
disk.io.util>90
mongo_local_alive=0
page_faults>100
connections_current>5000
connections_used_percent>60
connections_used_percent>80
connections_totalCreated>1000
globalLock_currentQueue_total>10
globalLock_currentQueue_readers>10
globalLock_currentQueue_writers>10
opcounters_command
opcounters_insert
opcounters_delete
opcounters_update
opcounters_query
opcounters_getmore
opcountersRepl_command
opcountersRepl_insert
opcountersRepl_delete
opcountersRepl_update
opcountersRepl_query
opcountersRepl_getmore
network_bytesIn
network_bytesOut
network_numRequests
repl_health=0
repl_myState not 1/2/7
repl_oplog_window<168
repl_oplog_window<48
replication_lag_percent>50
repl_lag>60
repl_lag>300
shards_mongosSize

Contributors