redditしていて偶然知ったのがnetdataです。デモサイトの見栄えもいいのですけども、本質的には進化したサーバ監視エージェントだと思う、多分。
こんな風に動くそうです。エージェントのフレームワーク的な部分で、ある程度の時間幅のデータをキャッシュすることで、監視メトリクスの時間的な解像度を上げることとメトリクスの通知・取得間隔の粒度のコントロールを独立してやれているというように理解しました。って今時は当たりなのか。
ubuntu18ユーザーとしてinstaller(Linux 64bit pre-built static binary)だと1サーバにいれるの超簡単でした。これでデモサイトと同じような画面みれます。で、どんな項目とっているのかがAPIで知ることができます。metricsの一覧がこれ
curl -X GET "http://yourserver/api/v1/allmetrics?format=shell&help=no&types=no×tamps=yes&names=yes&oldunits=yes&hideunits=yes&data=average" -H "accept: application/json" 2>/dev/null | grep name:
でもって、見たいメトリクス絞り込んで例えば定期間隔でbadge.svgでとればstatus画面とかモダンな見栄えのやつが実現できそうです。
これのstreamの部分に着目するなら、こんな概要で使うことになるよというのが一例みたいです。この絵はわかりやすいです。で、メジャーな時系列DBに飛ばせる設定が書けるよ、ってあります。自分の場合すぐに使えるのがgraphite*1なのでtcp2003宛てに設定してみます。残念なことに今時点ではtcpしか設定できないそうです。
nao86@Chile:~$ cat /opt/netdata/etc/netdata/netdata.conf # netdata can generate its own config which is available at 'http://<netdata_ip>/netdata.conf' # You can download it with command like: 'wget -O /opt/netdata/etc/netdata/netdata.conf http://localhost:19999/netdata.conf' [backend] enabled = yes type = graphite #host tags = TAG=VALUE destination = jibunno-graphite-server:2003 data source = average prefix = netdata hostname = scl update every = 10 buffer on failures = 10 timeout ms = 20000 send charts matching = system.cpu send hosts matching = localhost * send names instead of ids = yes
もとにあるnetdata.confに追加しました。これでsystemctl でnetdata.service再起動で有効になってくれました。飛ばせそうなもの全部飛ばしてみると結構な量のメトリクスになります。なのでこの例は"system.cpu"に絞りました。
graphiteの冗長化ってrelayを使うのが設計として用意されているものだと思います。graphiteのサーバー2台適宜配置して、通知message2発並列に投げるのをいつも検討案にいれるのですが、どっちがいいのだろうか。メトリクスのDBの一意性はないですが、監視結果なんで、すくなくとも自分用にはそれでいいです。*2