Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
22
Help us understand the problem. What is going on with this article?
@bash0C7

ご家庭でFluentd

More than 5 years have passed since last update.

多くの方はFluentdを業務で利用しているかと思います。私も普段の業務で使っており、ログの収集、転送、分析、加工にと大変はかどっています。
その話もどこかでノウハウをまとめて共有しようと思っていますが、ここでは扱いません。

このエントリーでは私の家庭でのFluentd活用の話をします。家にあるサーバと手元のノートでFluentdを動かしており、連携させながら、プライベートな処理をぐりぐり動かしています。

自由度高くかつ心配事少く気軽に運用がはかどっているので、その一端をご紹介しします。

Fluentdを動かす環境

Raspberry PiにRaspbianを入れ、rbenv + ruby-buildでRubyを導入した上で、Fluentdをインストールしています。
Fluentd本体やプラグインを含め、全てのgemの管理はbundlerにゆだねています。

このマシンで完結する処理の場合

Raspberry Piは速くない、SDカードしか指してないのにストレージに限りがあるという問題以外は、普段仕事で使っているのと同じく、プラグインを入れて、fluent.confを書いてやるだけです。

他のマシンのFluentdと連携させたい場合

普段使いのノートPCのストリームをRaspberry PiのFluentdに流しています。といっても、out/in_forwardでつなげているわけではないです。
外に向けて待ち受けるものを作ると不安事や対策しなければならない事が増えるので、そういう事はやりたくありませんでした。

そこで、https://github.com/ixixi/fluent-plugin-sqs を用いて、Amazon SQSを利用しています。これによってキューという状態を持つ部分を管理しなくて済み、ごちゃごちゃになりがちなプライベート環境をImmutableに仕立てやすくなります。また流し込まれる側はポートを開いて待ち受ける必要がないので運用時の不安事が減ります。

config例

ノートPCからはAmazon SQSにストリームを流し、Raspberry PiはAmazon SQSからストリームを取り出しています。

具体的には、ノートPCが稼働している間、ハートビートをRaspberry Pi経由で色々なところに流し込んでいます。この例ではidobataに流しています。

ノートPC側

  <match maclate2010.**>
    type copy
    <store>
    type sqs
    aws_key_id XXXXXXXXXXXXXXXXX
    aws_sec_key YYYYYYYYYYYYYYYYYYYYYYY
    queue_name VVVVVVVVVVVVVVVVVVVVVVVV
    sqs_endpoint sqs.ap-northeast-1.amazonaws.com
    </store>
    <store>
      type stdout
    </store>
  </match>

  <source>
    type exec
    command date | tail -n 1
    keys k1
    tag maclate2010
    run_interval 300s
  </source>

Raspberry Pi側

  <match bash0C7.**>
    type copy
    <store>
      type idobata
      webhook_url https://idobata.io/hook/ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
      message_template <%= record[:body] %>
    </store>
    <store>
      type null 
    </store>
  </match>
  <source>
    type sqs
    aws_key_id XXXXXXXXXXXXXXXXX
    aws_sec_key YYYYYYYYYYYYYYYYYYYYYYY
    sqs_url https://sqs.ap-northeast-1.amazonaws.com/VVVVVVVVVVVVVVVVVVVVVVVV
    sqs_endpoint sqs.ap-northeast-1.amazonaws.com
    receive_interval 30
    tag bash0C7
  </source>

なお現時点では、https://github.com/ixixi/fluent-plugin-sqs のSQS Input Pluginはgemとしてまだリリースが行われていないので、Gemfileでgithub側を指すようにしてください。

もちろんスタンドアロンでも捗る!

Twitter検索 -> 画像取得 -> tumblr投稿を自作railsアプリからFluentdベースに移植した話は後で書きます。

次回予告

明日は私の元"向かいの人"で、技術の高さに熱意の凄さにと常々リスペクトしている @suzu_v 先生です。寒い冬を沸かせる超絶技巧エントリを期待しましょう。

参考資料

このエントリーの内容を含む話を、Fluentd Casual Talks #3 でLTしました。
資料は下記で公開していますのでご参照ください。

22
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
22
Help us understand the problem. What is going on with this article?