LoginSignup
0

More than 5 years have passed since last update.

InfluxDBへ保存したFlowServiceのログをGrafanaでグラフにしてみる

Posted at

前回から

InfluxDBPutコンポーネントを作成して、InfluxDBへFlowServiceのログをInfluxDBへ入れてみました。
データを入れたら時系列データベースですし、グラフにしたくなります。

Grafana

何かお手頃にグラフにできるものということでGrafanaを使ってみます。
https://grafana.com/
grafana.png

アカウントを作ってログインします。

signup.png

Data Sources で InfluxDB がありますので追加します。

datasources.png

URLだけでつながりそうです。
今回はAWSのインスタンスを使用しているので、つながるようにしておきます。

success.png

つながりました。

add_datasources.png

データの問題

クエリーを試していて気が付きましたが、ログデータが欠落していました。
FlowServiceのログにはよくあることですが、同じ時刻に複数のログを出力しています。
これは問題です・・・
全てのログを入れたいので、保存するデータの時間単位をNanoSecondsにした場合、
timeへMilliSecondsの値を指定すると、こっそりナノ秒を追加して同じ時刻にならないようにPutコンポーネントを修正しました。

if (FIELD_NAME_TIME.equals(name)) {
    if (timeUnit.equals(TimeUnit.NANOSECONDS)) {
        //nanoはFlowでは無理なので、ここで追加してやる
        //timeをDateTimeで指定した場合でもNANOSECONDSであれば、timeが重ならないようにすることができるようにする
        //Flowのログ対策
        time = fieldValue.longValue() * 1000000;
    } else {
        fieldTime = fieldValue.longValue();
    }

また、タグを指定した場合にInfluxDBのフィールドが予期しない事になるのでタグは指定しないようにしました。
現象:statusフィールドが、statusとstatus_1のフィールドになり、検索できなくなる。

試行錯誤の結果、以下のようなレコードストリームを使用することにしました。

<Record>
    <Field name="time" type="String">2019-03-26T09:03:28.012585455Z</Field>
    <Field name="code" type="String">AFRM_I_9017</Field>
    <Field name="data" type="String">プロセス監視スレッドを起動します</Field>
    <Field name="status" type="String">DEBUG</Field>
    <Field name="worker" type="String">[framework,main]</Field>
</Record>

使用するログのレコードは7458レコードで、バッチ件数10000に設定したPutコンポーネントで一発で登録します。

グラフ

10分間隔で、3つの棒グラフを並べてみました。

フローの実行開始数のグラフ
SELECT count("status") FROM "test" WHERE ("code" = 'FLEX_I_0001') AND $timeFilter GROUP BY time(10m)

エラー数のグラフ
SELECT count("status") FROM "test" WHERE ("status" = 'ERROR') AND $timeFilter GROUP BY time(10m)

フローの実行終了数のグラフ
SELECT count("status") FROM "test" WHERE ("code" = 'FLEX_I_0002') AND $timeFilter GROUP BY time(10m)

grafana_sample.png

まとめ

なんとかFlowServiceのログをグラフにすることができました。
クエリーでグラフを後から自由に作成できるのはうれしいです。
タグの件は不明なので、もう少し調べたいです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0