こんにちは。仁科(@nishina555)です。
Webのパフォーマンスをチューニングするにあたり、サーバーのパフォーマンスを監視することは非常に重要です。
今回はnetdataというモニタリングツールの導入手順について紹介をしたいと思います。
netdataはリアルタイムで計測ができるという特徴を持っており、過去に開催されたISUCON(Webパフォーマンスチューニング大会)の勉強会の資料でも紹介されるほど有名なものとなっております。
なお、今回は実行環境としてサーバーはConoHa、OSはUbuntu16.04.4、クエリのサンプルデータはISUCON7(予選)過去問環境をConoHaで構築する手順で構築したISUCON7の過去問を利用しております。
目次
netdataをインストールする方法
netdataのインストール方法は非常に簡単で、インストールガイドに書いてある以下のコマンドでインストールをすることができます。
なお、インストールガイドにも書いてありますが、sudo
は必要があればスクリプト内で自動で行われるため、sudo
をつけずに以下のコマンドを実行します。
$ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
コマンドの意味について少し補足をします。
<()
の部分はプロセス置換と呼ばれるもので括弧の内容が入力として利用されます。
curlコマンドの-sは進捗状態を表示しない(–silent)、-Sはエラーを表示する(–show-error)のオプションです。つまり、-sSでエラーのみが表示されるようになります。
上記のコマンドの意味をまとめると、curlコマンドで取得したWebサーバー上のシェルがプロセス置換を通じてbashで実行されるということになります。
netdataの動作確認
インストールが正常に完了するとnetdataが起動します。
netdataは19999のポートで実行されます。
まずはプロセスを確認してみます。以下のようにプロセスが存在していればOKです。
$ sudo lsof -i tcp:19999
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
netdata 2466 netdata 4u IPv4 19304 0t0 TCP *:19999 (LISTEN)
netdata 2466 netdata 5u IPv6 19305 0t0 TCP *:19999 (LISTEN)
次にnetdataのダッシュボードにアクセスしてみます。
接続先はhttp://[サーバーのIPアドレス]:19999となっております。
では実際にベンチマークを実行してnetdataの画面を確認してみます。
ベンチマークのコマンドはConoHaの公式ページに書いてあるものを参考にします。
$ /home/isucon/isubata/bench/bin/bench -data=/home/isucon/isubata/bench/data -remotes=localhost -output=result.json
負荷をかけると以下のようにリアルタイムでグラフが変化していることがわかります。

netdataでは概要だけでなく、例えばCPUの詳細情報なども見ることができます。

netdataの操作について
netdataを利用するにあたり、必要になる可能性がある操作方法について紹介をします。
より詳しく知りたい方はnetdataのwikiをご覧になってください。
netdataの停止
$ service netdata stop
もしくは
$ systemctl stop netdata
netdataをサーバー起動時に実行しないようにする
$ systemctl disable netdata
もしくは以下のいずれかのコマンドを利用します。
$ rc-update del netdata
$ update-rc.d netdata disable
$ chkconfig netdata off
netdataファイルの削除方法
以下の手順で削除をします。
$ rm -rf /opt/netdata
$ groupdel netdata
$ userdel netdata
$ rm /etc/logrotate.d/netdata
$ rm /etc/systemd/system/netdata.service もしくは rm /etc/init.d/netdata # OSによる
まとめ
以上でnetdataのインストール方法とnetdataの操作について紹介を終わります。
netdataを利用することでボトルネック調査などがしやすくなるため、パフォーマンスチューニグなどをする際にはぜひ利用してみてください。
この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!