MongoDB metrics with prometheus and Grafana (mongodb exporter)

H. Alperen Selcuk
2 min readFeb 12, 2024

bu yazımda bir mongodb nizi kolayca nasıl Grafana da monitor edebilceğinizi göstereceğim.

mongodb nin nerde çalıştığı önemli değil. mongodb exporter ı bir kere çalıştırmanız yeterli. sırayla configleri yapalım.

mongodb

öncelikle mongodbexporter ın mongodb den verileri çekmesi için user yaratalım.

mongodb ye girerek aşağıdaki komutları çalıştıralım. bir user yaratıp çıkacağız.

use admin
db.createUser(
{
user: "mongodb_exporter",
pwd: "password",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
}
)

db.adminCommand( { shutdown: 1 } )
exit

mongodb exporter

öncelikle github sitesinden mongodb exporter yüklmemiz gerekiyor.

daha sonra açtığımız user ile mongodb ye bağlanıp metricleri alması için tek bir komutla mongodb exporterı çalıştıracağız.

mongodb_exporter --mongodb.uri=mongodb://mongodb_exporter:password@mongodbip:port" --web.listen-address=:9001 --collect-all

metriclerin geldiğini görmek için

curl http://localhost:9001/metrics

metriclerin geldiğini göreceksiniz.

promeheus

metricleri aldık şimdi prometheus üzwrinden grafanya göndermek kaldı bunun için prometheus u githubdan yükleyeceğiz.

indirdikten sonra, binary yi /usr/local/bin/ e atalım.

binary indirdikten sonra /etc/prometheus/prometheus.yaml

dosyası yaratacağız. mongodb sunucunun local ipsini kullanarak yapacağız. çünkü grafanaya datasource eklediğimizde gelip burayı okuyacak localhost kalırsa conection sorunu yaşanıyor.


scrape_configs:
- job_name: 'mongodb'
scrape_interval: 5s
static_configs:
- targets: ['mongonodeip:9001', 'mongonodeip:9090']

prometheus u da bir service olarak başlatabiliriz.

vi /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \


[Install]
WantedBy=multi-user.target

daha sonra systemctl daemon reload ve systemctl restart prometheus yaparak prometheus u çalıştırıyoruz.

curl http://localhost:9090/targets

dediğiniz anda prometheusun çalıştığını görebilirsiniz.

grafana

grafanaya girip datasource olarak prometheus un portunu göstereceğiz.

daha sonra grafana dashboard olarak mngo için özel yapılmış dashboardu ekleyeceğiz. dashboard import a id olarak 16490 kullanacağız.

load dedikten sonra dashboardumuz kullanılmaya hazır. farklı türden metricleri bu dashboard üzerinde bulabilirsiniz.

umarım yararlı bir yazı olmuştur.

görüşmek üzere

h.a.s.

--

--