shinobe179の日記

@shinobe179 の技術メモ・やらかし録

【インフラ】ISUCON用Netdataダッシュボードを自作したので公開する

はじめに

もうすぐISUCON10予選ですね。私もとあるチームの一員として出場します。今回の開催が最後ということでチーム一同気合が入っておりまして、特訓の日々です。

さて、競技中のモニタリングというのは言うまでもなく重要なポイントでありまして、今回ISUCON向けに3台のサーバーの主要指標(CPU、メモリ、ディスクI/O、ネットワークI/O)を1画面で見られるようなNetdata用ダッシュボードを準備しました。せっかくなので公開します。取り立ててよいところがあるわけではないですが、シンプルで見やすいと思うのでよかったら使ってみてください。

github.com

よく分かる解説

見方

上からメモリ使用率、プロセス毎のCPU使用割合、CPU使用率、ディスクI/O、(消えてますが)ネットワークI/Oです。このうち「プロセス毎のCPU使用割合(Apps CPU Time on servers)」については注意が必要なので後述しますね。

f:id:befs_anne:20200907004027p:plain

「Apps CPU Time on servers」について

上から2番目「Apps CPU Time on servers」は、どのプロセスがCPUを食ってるのかを調べるためのものです。しかし、Netdata(厳密にはapps.plugin)がアプリケーションとして認識できるのは、apps_goups.confに記述されているもののみです。有名どころは認識されるようになってますが、それ以外はグラフ上では「Other」という扱いになります。つまり、ISUCON用にこさえられたアプリは「Other」として扱われる わけです。私は割り切ってこのまま使っていきますが、気になる方は以下をご参照ください。※サーバー側とクライアント側両方のapps_groups.confをいじってもOtherのままだったので、んーまあいいかってなった

learn.netdata.cloud

github.com

接続方法

ローカルでNetdataを動かして、競技用サーバー(こっちでもNetdataが動いてます)へは安易にSSHポートフォワードで接続することを前提としています。競技用サーバーとは別にNetdataがインストールされたモニタリングサーバー的なものを用意して、isucon.htmlをパブリックに見られるようにしたほうがOX(Operator Experience(造語))が上がると思うんですが、ちょっとめんどくさいなと。あくまで弊チームでの利用を前提としたものという点のみ、すみませんがご承知おきを。

その他

これ、全く以て超絶技巧ではなく、Netdataをインストールすると付いてくる tv.html をちょいちょいっといじっただけのものです。 /usr/share/netdata/web/ の下にあると思いますんで、自分だけの最強のダッシュボードを作ってみてくれよな。

おわりに

公開は競技後でいいかーと思ってたんですが、よく考えたら今回最後じゃんということで、今のタイミングで公開することにしました。出し惜しみするほどのものでもないんですけど、Netdataのこういう使い方を知らなかった人にこの記事が届いたら嬉しいです。弊チームだけでなく、全ての参加者にとって悔いのないラストISUCONになるといいですね。言うて、きっとなんらかの形で続きはするんだろうなという気もする。