エンジニアの千葉です?
今回の記事とは関係ありませんが、我が家の愛犬を紹介します。
人が大好き、犬は嫌いな子です。他のわんちゃんに出会うと硬直してます(笑)
さて私についてですが、インフラを主に担当しています。
もともとプログラムを書いてたんですが、サーバーも面白いなって思っていたらこうなっていました。
サーバーっていうのは黙々と仕事をこなしていて、いつの間にかオーバーワークになっていることがあります。
そうならないために、サーバー監視をして様子がおかしくなったらアラートを出す仕組みが必要ですね。
その仕組みをシムネットではInfluxDBを使ってサーバーメトリクスを収集し、サーバーを監視しています。
サーバー監視ツールの選定にはサーバーの処理をなるべく邪魔しないものにしました。
ちなみにメトリクスとは、CPUやメモリの使用率などの数字のことです。他にもネットワークの送受信に関するものなど多岐にわたります。
今回紹介するサーバー監視のツール
- InfluxDB
InfluxDataが開発している時系列データベースで、その名の通り時間毎に値を格納しています。 - Telegraf
同じくInfluxData製で監視するサーバーにインストールして、様々な情報をInfluxDBへ送信します。 - Kapacitor
こちらもInfluxData製でInfluxDBを利用して、異常値をメール送信したりSlackに送信してくれます。 - Grafana
InfluxDBで蓄積したデータをグラフ化してくれます。
これだけ見ると監視のために用意するものが多く感じますが、用途がはっきりしているので混乱することはないと思います。
今回選定から外れましたが、Prometheusとnode_exporterの組み合わせもGo言語で実行できるのでおススメです。
選定理由
オープンソースでインストールが容易、省メモリ、低負荷のものを基準に選定しています。
特に監視先のサーバーに導入するものは、コンパクトで置くだけレベルのものにしています。
というのも、DBサーバーなどインターネットに出られない(出したくない)ものに対してインストールする場合、依存関係解決など面倒だからです。
そういう意味でGo言語で開発されているものは、本当に便利です。バイナリさえ手に入れば置くだけですので!
さて、いろいろと選んだツールの話をしましたが、それぞれの役割について説明したいと思います。
InfluxDBとは?
- オープンソースの時系列データベース
- 流行りのGo言語で開発され、高速に動作する
- インストールが簡単
- ほぼSQLと同じ構文でメトリクスを取得できる
- WebUIからメトリクスを参照できる
- 自動的に古いメトリクスを削除する機能が備わっている
Telegrafとは?
- オープンソースのメトリクス収集エージェント
- Go言語で開発され、省メモリ・低負荷で高速に動作する
- インストールが簡単
- 設定ファイルを少し変えれば、大体のメトリクスを取得できる
- InfluxDBへ取得したデータを送信する
※Elasticsearchなど様々なものに対応している模様 - InputPluginが豊富でシェルスクリプトを実行したり、webサイトの監視もできる
Grafanaとは?
- オープンソースのグラフ表示WebUI
- Go(`・ω・´)
- InfluxDBをはじめ、GraphiteやPrometheusなどのデータベースからグラフを生成・表示する
- javascriptでグラフを表示するため、サーバー側の負荷が少ない
- モダン(`・ω・´)<やっぱり見た目は大事!!
- 誰かが作ったダッシュボードですぐにグラフを表示できる
※自分好みに設定するのに参考にするのがおススメ
Kapacitorとは?
- InfluxDBのメトリクスを利用してアラートを送信する
- Go(*’ω’*)
- 閾値は細かく指定できる優れもの
- WebUIがないので、やや敷居が高い
- メール通知以外にSlack等にも送信できる
次回はこれらを導入する手順を紹介していきます!