监控MongoDB分片集群是确保系统性能、稳定性和可扩展性的关键。可以通过各种工具和方法来监控MongoDB分片集群的健康状态、性能指标和资源使用情况。以下是一些常用的监控方法和工具,并结合代码示例来展示如何实现监控。

db.stats()、sh.status()等。use myDatabase;var stats = db.stats();printjson(stats);
sh.status();
Prometheus MongoDB Exporter是一个收集MongoDB性能指标的工具。
安装MongoDB Exporter:
wget https://github.com/percona/mongodb_exporter/releases/download/v0.20.4/mongodb_exporter-0.20.4.linux-amd64.tar.gztar -xzf mongodb_exporter-0.20.4.linux-amd64.tar.gzcd mongodb_exporter-0.20.4.linux-amd64./mongodb_exporter --mongodb.uri "mongodb://localhost:27017"
配置Prometheus:
编辑Prometheus的配置文件prometheus.yml:
scrape_configs: - job_name: 'mongodb' static_configs: - targets: ['localhost:9216']
启动Prometheus:
./prometheus --config.file=prometheus.yml
安装Grafana:
# For Debian/Ubuntusudo apt-get install -y software-properties-commonsudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"sudo apt-get updatesudo apt-get install grafana# Start Grafanasudo systemctl start grafana-serversudo systemctl enable grafana-server
配置数据源:
http://localhost:3000创建仪表盘:
sum(rate(mongodb_opcounters_insert_total[5m])) by (instance)
以Ubuntu为例:
# Install ElasticSearchwget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -sudo apt-get install apt-transport-httpsecho "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.listsudo apt-get update && sudo apt-get install elasticsearchsudo systemctl start elasticsearchsudo systemctl enable elasticsearch# Install Logstashsudo apt-get install logstashsudo systemctl start logstashsudo systemctl enable logstash# Install Kibanasudo apt-get install kibanasudo systemctl start kibanasudo systemctl enable kibana
编辑Logstash配置文件/etc/logstash/conf.d/mongodb.conf:
input { file { path => "/var/log/mongodb/mongod.log" start_position => "beginning" type => "mongodb" }}filter { if [type] == "mongodb" { grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" } } date { match => [ "timestamp", "ISO8601" ] } }}output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug }}启动Logstash:
sudo systemctl restart logstash
访问Kibana: http://localhost:5601
logstash-*。监控MongoDB分片集群是确保其高效运行的关键。通过MongoDB内置的监控命令、Prometheus + Grafana、Elastic Stack等工具,可以全面监控MongoDB分片集群的健康状态和性能指标。通过示例代码和配置,可以帮助你快速搭建并实现对MongoDB分片集群的监控。