mizuki04
Posted on August 6, 2020
Prometheus + MongoDB監視導入手順
①はじめに
当記事は前提として、Prometheusサーバがすでに構築されていることを前提とする。詳しい構築手順は別資料参照(#Prometheus+Grafana監視基盤導入手順)
②Installing the MongoDB exporter
MongoDB exporter は右に記載のGitからCloneできる Percona’s GitHub here.
goやdockerを使ってインストールを行うことができるが今回は環境の依存性を考慮してバイナリファイルを実行する形式について説明をする。
また、下記のバイナリファイルを実施するにあたりMongoDB自体にも設定を行う必要がある。
まずはインストール。
$ mkdir mongodb-exporter
$ cd mongodb-exporter
$ wget https://github.com/percona/mongodb_exporter/releases/download/v0.7.1/mongodb_exporter-0.7.1.linux-amd64.tar.gz
次に解凍をして。
$ tar xvzf mongodb_exporter-0.7.1.linux-amd64.tar.gz
おそらく右のファイルが解凍されると思う: mongodb_exporter, LICENSE, README.md, CHANGELOG.md.
サービスを実行していくにあたり、Prometheusにもモニタリング用のユーザを作成する必要があるがこちらは(#Prometheus+Grafana監視基盤導入手順)で実施済みのため割愛する。
$ sudo useradd -rs /bin/false prometheus
$ sudo mv mongodb_exporter /usr/local/bin/
③MongoDBの設定
MongoDB監視を行うにあたり、exporterがDBにアクセスできるようにモニタリングユーザ作成と、環境変数のパスを通してやる必要がある。(デフォルトポートをしようしていない場合はそれも設定する。)
MongoDB認証は–auth flagをMongoShellから立ててやる必要がある。デフォルトでは未設定なので、以下のように実行していく。まずはMongoのプロセスが生きているかを確認する。
$ ps aux | grep mongod
mongodb 13468 1.1 6.9 1490632 281728 ? Ssl Jan05 2838:27 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
mongoコマンドでMongoインスタンスにログインする。
$ mongo --port 27017
Exiporter用に administrator accountをcluster monitor roleを付与して作成する。
use admin
db.createUser(
{
user: "mongodb_exporter",
pwd: "password",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
}
)
正しく作成されていれば、以下のメッセージが出力される。
Successfully added user: {
"user" : "mongodb_exporter",
"roles" : [
{
"role" : "clusterMonitor",
"db" : "admin"
},
{
"role" : "read",
"db" : "local"
}
]
}
MongoDB instanceを再起動する。
$ db.adminCommand( { shutdown: 1 } )
$ exit
$ sudo mongod --auth --port 27017 --config /etc/mongodb.conf &
次にMongoDB URI を以下のように変更する。
$ export MONGODB_URI=mongodb://mongodb_exporter:password@localhost:27017
④MongoDB exporterサービス起動設定を行う
/lib/systemd/systemへ移動し、サービスファイルを作成する。
$ cd /lib/systemd/system/
$ sudo touch mongodb_exporter.service
[Unit]
Description=MongoDB Exporter
User=prometheus
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mongodb_exporter
[Install]
WantedBy=multi-user.target
上記でサービス起動をデーモン化
$ sudo systemctl daemon-reload
$ sudo systemctl start mongodb_exporter.service
これで、サーバリスタート時でも再起動が自動でかかる。
Percona’s MongoDB exporter は port 9216で動作するので、一旦動いているか確認する。以下のようにメトリックスの情報が取れていればOK
$ sudo curl http://localhost:9216/metrics
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
...
⑤ メトリクス取得に関する起動オプション
Prometheusから起動を確認できたら次は起動オプションについて説明する。
先ほどはサービスファイルを作成して起動をした。だが起動時にうまく環境変数を読み込めない等の事象が散見される為、以下のように念の為環境変数指定の起動オプションを実施する。
サンプルだが以下のような、コマンド例となる。
$ ./mongodb_exporter --mongodb.uri=mongodb://user:passward@127.0.0.1:27017 &
--mongodb.uriオプションで渡せる引数はmongo環境変数の内容である。またこのときBasic認証をオンにしていると、Prometheusからexporterにアクセスする時に引数を指定してアクセスをしないとならない為、必ず$HTTP_AUTHがNullであることを確認する。
⑥ダッシュボード作成
別紙で説明した通り、データソースをインポートして、ダッシュボードのソースを指定する。
既存のダッシュボードを使いたい場合は、Jsonをさらにインポート
インポートした後に、クエリの設定をしてやればDB監視の、ダッシュボードが作成できる。
Posted on August 6, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.