carbon-relay-ng の ログ出力変更、reload対応のメモ

carbon-relay-ng

carbon-relay-ng は Graphite の carbon-relay-py  に相当するもので、違いなどの詳細は GitHub - grafana/carbon-relay-ng をみてください。

 

去年にやっていた内容なのですが、忘れる前に書き残しておきます。

carbon-relay-ng 0.13.0 に、3点程ほど手を加えたのですが、こちらの都合な内容含むため、PRは出してません。

なので行方不明にならないように置き場と内容をメモしておきます。

 
変更内容

① ログをログファイルに出力する

元々は journalログへの出力のみなので、明示的に指定したファイルに個別出力するようにしました。GitHub - Songmu/replaceablewriter を使わせていただきました。

 設定ファイル側にも追記しておく。

# This setting sets where the log is written. The default setting is "" (journal log only).
log_file = "/var/log/carbon-relay-ng/carbon-relay-ng.log"

 

② Aggregator の TooOld の詳細をログ出力する

carbon-relay-ng の Aggregator で、設定した wait時間を過ぎて投入されたデータは破棄されます。その破棄されたデータの個数は、

service_is_carbon-relay-ng.instance_is_${relay_instance}.mtype_is_counter.module_is_aggregator.unit_is_Metric.what_is_TooOld

に記録されますが、個数のみではなく、破棄された内容を記録したかったので、その詳細をログに吐くようにしました。

【出力例】
2020-06-23 16:14:33.901 [WARNING] Aggregator is receiving too old. key is hoge.ab.ab01.agg.count.test01, ts is 1576629860, quantized is 1576629840, value is 3.

TooOld 以外のモニタリングしておいた方が良さそうな内容については、別途、後日書こうかと思います 。

 

③ reload 対応

ログをファイル出力するようにしたので、ログローテーション用に、reload(SIGHUP)でログファイルをリオープンするという変更。

serviceファイルにも ExecReload を、追記しておく。

ExecReload=/bin/kill -HUP $MAINPID

 

carbon-relay-ng の deb生成の話は、nfpmでdeb作成するメモ の方に、書きました。