naoki86star

インターネットの片隅でなにかしら書いてみる

NetDataのこと

 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&timestamps=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

*1:それしか使う能力がない

*2:ていうか個人用だと冗長しないし