はじめに
サーバのモニタリングを行うのに便利な Netdata のご紹介です。
Netdata とは
Netdata はサーバのモニタリングツールです。モニタリングといえば最近は Prometheus を使うことが多いのではないかと思いますが、Netdata は Prometheus とは少し異なるアプローチで設計されています。
項目 | Prometheus | Netdata |
---|---|---|
設定ファイル | 必要 | 不要 |
対象サーバ | 複数のリモートサーバ | ローカルサーバのみ |
集計するメトリクス | エクスポータを使用して集計 | あらゆるメトリクスを自動で集計 |
メトリクスの保存期間 | 長期間 | 短期間 |
可視化 | 主に Grafana を利用 | 同梱の Web ダッシュボードを利用 |
利用用途 | メトリクスのヒストリ管理 | リアルタイム監視 |
サーバのクラスタ全体のメトリクスを見たければ Prometheus を使い、各サーバのリアルタイムなメトリクスを見たければ Netdata を使うという使い方が想定されています(下記は Netdata Documentation より)。
ダッシュボードがとても格好いいです。
Netdata は普段見たいと思うほぼ全てのメトリクスを自動で集計してくれます。
- CPU 使用率
- メモリ使用量
- スワップ
- ディスク I/O
- ネットワーク
- スレッド数
- プロセス数
- 各種 RDB の稼働状況
- Apache/Nginx の稼働状況
- コンテナの稼働状況
- その他 Tomcat/WSGI/Fluentd/Hadoop など多数
始め方
Docker イメージが用意されているので簡単に起動ができます。
$ docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
起動できたら http://localhost:19999 にアクセスすることで上記のようなダッシュボードが見れるようになります。
Prometheus エクスポータ
Netdata は直近 1 時間のメトリクスしか保存していないので、長期間のメトリクス監視には向いていません。しかし Netdata には Prometheus エクスポータの機能が付いているため、Prometheus と連携すればメトリクスの長期保存も可能になります。しかもあらゆるメトリクスを自動で集計しているので、万能エクスポータとして利用することができます。
下記 URL にアクセスすると Prometheus が読み取れる形式でメトリクスをエクスポートできます。
http://localhost:19999/api/v1/allmetrics?format=prometheus
この URL を Prometheus 側に登録してあげれば Grafana で過去分のメトリクスも可視化できるようになります。
Shell エクスポータ
メトリクスは環境変数として取り込むこともできます。
$ eval "$(curl -s http://localhost:19999/api/v1/allmetrics)"
$ set | grep "^NETDATA_SYSTEM_CPU"
NETDATA_SYSTEM_CPU_GUEST=0
NETDATA_SYSTEM_CPU_GUEST_NICE=0
NETDATA_SYSTEM_CPU_IDLE=95
NETDATA_SYSTEM_CPU_IOWAIT=0
NETDATA_SYSTEM_CPU_IRQ=0
NETDATA_SYSTEM_CPU_NICE=0
NETDATA_SYSTEM_CPU_SOFTIRQ=0
NETDATA_SYSTEM_CPU_STEAL=0
NETDATA_SYSTEM_CPU_SYSTEM=1
NETDATA_SYSTEM_CPU_USER=4
NETDATA_SYSTEM_CPU_VISIBLETOTAL=5
環境変数でメトリクスが取れると各種 Linux コマンドを叩かなくてもメトリクスが参照できるので、Shell スクリプトがキレイに書けるようになります。
Confluence への埋め込み
私は使ったことがないですが、Netdata のダッシュボードは Confluence にも埋め込むことができるので紹介しておきます。
html プラグインが利用可能であれば下記のように Confluence にグラフの埋め込みができるようになります。
詳細な使い方はこちらを参考にしてください。
https://docs.netdata.cloud/web/gui/confluence/
その他の API
Netdata は他にも便利な API を備えています。
- メトリクスを CSV/JSON で取得
- Google charts 連携
などは便利そうだと思いました。各 API の使い方は下記を参考にしてください。
まとめ
Netdata は導入の敷居が低い上に、いろんなツールと連携してモダンなモニタリングができますので、ぜひお試しください。