netdata と statsd によるリアルタイムモニタリング


netdatastatsdが組み込まれました。

github.com


statsdはデータ収集のシステムです。netdatastatsdを利用したリアルタイムモニタリングも提供出来るようになりました。

github.com



statsd の設定

netdata.conf

[statsd]
        # enabled = yes
        # update every (flushInterval) = 1
        # udp messages to process at once = 10
        # create private charts for metrics matching = *
        # max private charts allowed = 200
        # max private charts hard limit = 1000
        # private charts memory mode = save
        # private charts history = 3996
        # histograms and timers percentile (percentThreshold) = 95.00000
        # add dimension for number of events received = yes
        # gaps on gauges (deleteGauges) = no
        # gaps on counters (deleteCounters) = no
        # gaps on meters (deleteMeters) = no
        # gaps on sets (deleteSets) = no
        # gaps on histograms (deleteHistograms) = no
        # gaps on timers (deleteTimers) = no
        # listen backlog = 4096
        # default port = 8125
        # bind to = udp:localhost:8125 tcp:localhost:8125

初期状態でstatsdが有効です。


無効化したい場合は以下の様に編集します。

[statsd]
    enabled = no
(snip)


個別のチャート

statsdが有効な状態であれば、特に設定の必要はありません。

この様にコマンドを実行すると、メトリクスデータを送信出来ます。

$ echo "NAME:VALUE|TYPE" | nc -u -w 1 localhost 8125

$ echo "private-metric2:123|c" | nc -u -w 1 localhost 8125

個別チャートのサンプル画像

f:id:biaxident:20170510121610p:plain

“private-metric1"がgaugesで、"private-metric2"がcountersです。



合成チャート

合成チャートを作成するには設定が必要です。$NETDATA_PREFIX/etc/netdata/statsd.d/ディレクトリにファイル(*.conf)を配置します。

ここでは、"app.“のプレフィクスをつけて送信したメトリクスデータを合成します。以下はデータの送信例です。

$ echo "app.metric1:666|g" | nc -u -w 1 localhost 8125

$NETDATA_PREFIX/etc/netdata/statsd.d/sample.conf

[app]
        name = myapp
        metrics = app.*
        private charts = no
        gaps when not collected = no
        memory mode = ram
        history = 60

[area]
        name = mychart1 name
        title = mychart1 title
        family = app area
        units = tests/s
        priority = 91000
        type = area
        dimension = app.metric1 m1
        dimension = app.metric2 m2

[stacked]
        name = mychart2 name
        title = mychart2 title
        family = app stacked
        units = tests/s
        priority = 91000
        type = stacked
        dimension = app.metric1 m1
        dimension = app.metric2 m2

[line]
        name = mychart3 name
        title = mychart3 title
        family = app line
        units = tests/s
        priority = 91000
        type = line
        dimension = app.metric1 m1
        dimension = app.metric2 m2

上記のサンプルでは同じデータからarea,stacked,lineの3つのチャートを作成してみました。

合成チャートのサンプル画像

f:id:biaxident:20170510122036p:plain

“app.metric1"と"app.metric2"はどちらもgaugesでデータを送信しています。



メトリクスデータのタイプ一覧

type value
gauges g
timers ms
histograms h
counters c
meters m
sets s