[DevSecOps] #4 Prometheus + MongoDB監視導入手順

mizuki04

mizuki04

Posted on August 6, 2020

[DevSecOps] #4 Prometheus + MongoDB監視導入手順

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
Enter fullscreen mode Exit fullscreen mode

次に解凍をして。

$ tar xvzf mongodb_exporter-0.7.1.linux-amd64.tar.gz
Enter fullscreen mode Exit fullscreen mode

おそらく右のファイルが解凍されると思う: mongodb_exporter, LICENSE, README.md, CHANGELOG.md.

サービスを実行していくにあたり、Prometheusにもモニタリング用のユーザを作成する必要があるがこちらは(#Prometheus+Grafana監視基盤導入手順)で実施済みのため割愛する。

$ sudo useradd -rs /bin/false prometheus
$ sudo mv mongodb_exporter /usr/local/bin/
Enter fullscreen mode Exit fullscreen mode

③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
Enter fullscreen mode Exit fullscreen mode

mongoコマンドでMongoインスタンスにログインする。

$ mongo --port 27017
Enter fullscreen mode Exit fullscreen mode

Exiporter用に administrator accountをcluster monitor roleを付与して作成する。

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

正しく作成されていれば、以下のメッセージが出力される。

Successfully added user: {                        
        "user" : "mongodb_exporter",              
        "roles" : [                               
                {                                 
                        "role" : "clusterMonitor",
                        "db" : "admin"            
                },                                
                {                                 
                        "role" : "read",          
                        "db" : "local"            
                }                                 
        ]                                         
}                                                 
Enter fullscreen mode Exit fullscreen mode

MongoDB instanceを再起動する。

$ db.adminCommand( { shutdown: 1 } )
$ exit
$ sudo mongod --auth --port 27017 --config /etc/mongodb.conf &
Enter fullscreen mode Exit fullscreen mode

次にMongoDB URI を以下のように変更する。

$ export MONGODB_URI=mongodb://mongodb_exporter:password@localhost:27017
Enter fullscreen mode Exit fullscreen mode

④MongoDB exporterサービス起動設定を行う

/lib/systemd/systemへ移動し、サービスファイルを作成する。

$ cd /lib/systemd/system/
$ sudo touch mongodb_exporter.service
Enter fullscreen mode Exit fullscreen mode
[Unit]
Description=MongoDB Exporter
User=prometheus

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mongodb_exporter

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

上記でサービス起動をデーモン化

$ sudo systemctl daemon-reload
$ sudo systemctl start mongodb_exporter.service
Enter fullscreen mode Exit fullscreen mode

これで、サーバリスタート時でも再起動が自動でかかる。

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
...
Enter fullscreen mode Exit fullscreen mode

⑤ メトリクス取得に関する起動オプション

Prometheusから起動を確認できたら次は起動オプションについて説明する。

Alt Text

先ほどはサービスファイルを作成して起動をした。だが起動時にうまく環境変数を読み込めない等の事象が散見される為、以下のように念の為環境変数指定の起動オプションを実施する。

サンプルだが以下のような、コマンド例となる。

$ ./mongodb_exporter --mongodb.uri=mongodb://user:passward@127.0.0.1:27017 &
Enter fullscreen mode Exit fullscreen mode

--mongodb.uriオプションで渡せる引数はmongo環境変数の内容である。またこのときBasic認証をオンにしていると、Prometheusからexporterにアクセスする時に引数を指定してアクセスをしないとならない為、必ず$HTTP_AUTHがNullであることを確認する。

⑥ダッシュボード作成

別紙で説明した通り、データソースをインポートして、ダッシュボードのソースを指定する。

Alt Text

既存のダッシュボードを使いたい場合は、Jsonをさらにインポート

Alt Text

インポートした後に、クエリの設定をしてやればDB監視の、ダッシュボードが作成できる。

Alt Text

💖 💪 🙅 🚩
mizuki04
mizuki04

Posted on August 6, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Cloud Security for DevOps Teams
undefined Cloud Security for DevOps Teams

November 29, 2024

Cloud Security for DevOps Teams
undefined Cloud Security for DevOps Teams

November 29, 2024

Cloud Security for DevOps Teams
undefined Cloud Security for DevOps Teams

November 29, 2024

Cloud Security for DevOps Teams
undefined Cloud Security for DevOps Teams

November 28, 2024

Cloud Security for DevOps Teams
undefined Cloud Security for DevOps Teams

November 28, 2024