質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Fluentd

    50questions

    Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

  • InfluxDB

    2questions

Fluentd in-execの複数出力をInfluxDBへ挿入

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,232

moonphase

AWS(Amazon Web Services)総合1位

前提・実現したいこと

MySQLデータベースに登録されている任意の名前の果物の数をfluentdで10分毎に取得し、InfluxDBに入れたい。

発生している問題・エラーメッセージ

  • 入力元データ
$ MYSQL_PWD=pass mysql -N -umysql database -e "SELECT name, count FROM data WHERE ..."
+-----------+----+
| apple     | 98 |
| orange    | 50 |
| pineapple | 20 |
+-----------+----+

influxdbには実行タイミング毎に、最後の行のデータのみ挿入される。

  • InfluxDBの内容
> use test;
Using database test
> select * from data
name: data
time                    name            value
----                    ----            -----
1484292300000000000     pineapple       20
1484292360000000000     pineapple       20
1484292420000000000     pineapple       20
  • 期待するInfluxDBの内容
> use test;
Using database test
> select * from data
name: data
time                    name            value
----                    ----            -----
1484292300000000000     apple           98
1484292360000000000     orange          50
1484292420000000000     pineapple       20

 該当のソースコード

  • td-agent.conf
<source>
  @type exec
  tag raw_data
  # count.shは先のmysqlコマンドを記載したもの
  command /path/to/count.sh | cat
  run_interval 1m
  format tsv
  keys name,value
</source>

<match row_data>
  @type typecast
  item_types value:integer
  tag data
</match>

<match data>
  @type influxdb
  host localhost
  port 8086
  dbname test
  user root
  password pass
  time_precision s
  flush_interval 10s
</match>

試したこと

ファイルに出力した場合は欲しいデータが入っている事を確認。

  • td-agent.conf
...
<match data>
  @type file
  path /tmp/count.txt
</match>
$ cat /tmp/count.txt
2017-01-13T07:57:22+00:00       data    {"name":"apple","value":98}
2017-01-13T07:57:22+00:00       data    {"name":"orange","value":50}
2017-01-13T07:57:22+00:00       data    {"name":"pineapple","value":20}
2017-01-13T08:07:23+00:00       data    {"name":"apple","value":98}
2017-01-13T08:07:23+00:00       data    {"name":"orange","value":50}
2017-01-13T08:07:23+00:00       data    {"name":"pineapple","value":20}

補足情報(言語/FW/ツール等のバージョンなど)

$ dpkg -l | grep td-agent
ii  td-agent                          2.3.3-0                             amd64        Treasure Agent: A data collector for Treasure Data

$ td-agent --version
td-agent 0.12.29

$ dpkg -l | grep influxdb
ii  influxdb                          1.1.1-1                             amd64        Distributed time-series database.
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

解決しました。
InfluxDBはtimestampでユニークな為一つのseriesに同じtimestampでは一つしかデータが入らなかった。

  • sequence_tagを指定でsequence_number付きでtimestamp,sequence_numberをユニークキーとしてデータ投入可能
<match data>
  @type influxdb
  host localhost
  port 8086
  dbname test
  user root
  password pass
  time_precision s
  flush_interval 10s
  sequence_tag sequence_number
</match>
  • 今回の場合はsequenceではなくnameをtag_keyとしてデータを投入した
<match data>
  @type influxdb
  host localhost
  port 8086
  dbname test
  user root
  password pass
  time_precision s
  flush_interval 10s
  tag_keys name
</match>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Fluentd

    50questions

    Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

  • InfluxDB

    2questions