LoginSignup
15

More than 3 years have passed since last update.

Netdata でモニタリングスタックを構築してみた

Posted at

はじめに

サーバのモニタリングを行うのに便利な 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 は導入の敷居が低い上に、いろんなツールと連携してモダンなモニタリングができますので、ぜひお試しください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15