fluent-logger-ruby が堅牢だった件

[2016-06-13-1] にも書いたとおり、こちらの PR で fluent-logger-ruby を導入しました。 fluentd にも POST する by masutaka · Pull Request #40 · masutaka/masutaka-metrics その時に、こんな問題に気づきました。 loading... 結論から言うと、Wrapper を作る必要はありません(一度作ってしまった けど… )。fluent-logger-ruby がいい感じに処理してくれます。 fluent-logger-ruby の基本的な使い方は、プログラム開始時に #new し てインスタンスを保持し、あとは必要な時に #post を呼ぶだけです。 class Masutaka def initialize @fluent_logger = ::Fluent::Logger::FluentLogger.new end def hoge metrics = { 'field1' => 'hogehoge' } @fluent_logger.post('masutaka.metrics', metrics) end end プログラム稼働中に fluentd が restart または reload すると、 fluentd との接続は切れてしまいます。#post も false を返し送信して くれません。でも、あまり気にする必要はありません。 なぜ気にする必要がないか、パターンをまとめました。登場するメソッド は全て Fluent::Logger::FluentLogger class にあります。...

2016-06-13 (Mon) · masutaka

nginxのアクセスログをFluentd経由でelasticsearchとBigQueryに送り始めた

masutaka.netのnginxアクセスログはmongodbとGrowthForecastに送ってます。 [2013-07-14-1] nginxのアクセスログをFluentd経由でMongoDBに保存してみた [2013-08-15-1] nginxのアクセスログをFluentd経由でGrowthForecastのグラフにしてみた 今回、elasticsearchとBigQueryにも送り始めました。個人での必要性は 全くなく、単にelasticsearchとBigQueryを知っておきたかったからです。 elasticsearch http://kibana.masutaka.net/ からkibana 経由で検索出来るようにしてい ます(要Basic認証)。kibanaは評判が良かったので期待してたんですが、 使いづらいです。学習が必要そうです。。 インストールの概要 elasticsearchはopenjdk-7-jdkのインストールと、公式のインストール方 法 をそのままChefのレシピにしました。 kibanaは/var/www以下に公式のtar ball を展開して、nginxの静的コンテ ンツの設定を追加しました。 ハマりどころ 特になく、jdk, elasticsearch, kibana, nginxのレシピを良い感じに組 み立てるのに時間を使いました。 Google BigQuery SQLなのでelasticsearchより取っ付きやすいのが良いです。 あ、Row=4はアカンやつや インストールの概要 fluent-plugin-bigqueryのREADME.md を読みつつ、以下の記事そのままで できました。ありがとうございます。 FluentdでGoogle BigQueryにログを挿入してクエリを実行する - Qiita projectはウェブ上から作り、dataset(db)とtableはGoogle Cloud SDK付 属のbqコマンドで作りました。google-cloud-sdkはbrew caskでインストー ルできます。 $ bq mk masutakanet:nginx $ bq mk -t masutakanet:nginx.access bigquery-nginx.json td-agent.confはこのようになりました。 <match nginx.access.masutaka.net> type copy <store> type mongo (省略) </store> <store> type elasticsearch (省略) </store> <store> type growthforecast (省略) </store> <store> type bigquery method insert auth_method private_key email XXXXXXXX@developer....

2014-12-14 (Sun) · masutaka

nginxのアクセスログをFluentd経由でGrowthForecastのグラフにしてみた

昨日[2013-08-14-1] インストールしたGrowthForecast をFluentdと連携させ てみます。 今回グラフにしたのは2つの情報です。 (1) nginxが各リクエストを処理した時間($request_time) (2) nginxが返したHTTP Status Codeの数 (1) nginxが各リクエストを処理した時間($request_time) [2013-07-14-1] に追加した設定が以下になります。それぞれ fluent-plugin-growthforecast をインストールするChefのレシピと、 td-agent.confの設定です。 FluentdがnginxのアクセスログをMongoDBとGrowthForecastに渡しています。 特に難しいことはなくて、type copyとstoreを使うと複数の出力先を指定 できました。 <match タグ名> type copy <store> type mongo ... </store> <store> type growthforecast ... </store> </match> (2) nginxが返したHTTP Status Codeの数 追加した設定が以下になります。さらにdatacounter plugin に渡して、 HTTP Status Codeを数え、それをGrowthForecastに渡しています。 name_keysに何を渡せばよいか少し悩みました。 タグの中でtype fileなstoreを 増やしたら、datacounter pluginが吐き出すjsonを確認出来ました。この タグの実行は数分のタイムラグがあるのは注意です。 グラフのタイトルはもっと短くしたかったのですが、remove_prefixや input_tag_remove_prefixを使っても希望のタイトルに出来なかったので、 今回は見送りました。(タイムラグのせいでデバッグしづらく、ムキーッて なって諦めました。。) 最後に http://example.com:5125 とかに(1)と(2)が表示されたはずです。 今回は伊藤直也さんの記事 が参考になりました。 特にChefのリポジトリ はめっちゃ参考になります。。

2013-08-15 (Thu) · masutaka

nginxのアクセスログをFluentd経由でMongoDBに保存してみた

Fluentdを使ってみたかったので、masutaka.netのnginxアクセスログを Fluentd経由でMongoDBに保存してみました。 Fluentdについては以下が分かりやすいです。 Fluentdで始めるリアルタイムでのログ有効活用 - CodeZine 今回も@hirocaster さんの記事をほぼトレース。 なぜFluentdなどを使ってログデータ活用するのか?|Act as Professional - hiroki.jp fluentdをインストールしてnginxのログをまずはローカルで集める|Act as Professional - hiroki.jp fluentd経由のデータをmongodbへ保存する|Act as Professional - hiroki.jp 実際に運用しているサービスのnginxログをLTSVにしてみた!|Act as Professional - hiroki.jp 実際、やっていることは単純で、 nginxがアクセスログをファイルに書き出す。 それを検知したFluentd(実際はtd-agentを利用)がMongoDBに記録する。 ってだけです。 最後の記事を参考に、nginxのログ形式はデフォルト(Combined形式と呼ぶ らしい)からLTSV 形式に変更してます。最近のtd-agentはLTSVをサポートし ているのでシンプルに書けました。あと、td-agentのログでWarningが出て いたので、pos_fileも追加しました。 fluent-plugin-mongoをインストールするChefのレシピと、nginxの設定も コピペしておきますね。 始め、nginxとtd-agentの通信はパイプかなにかを介するのかと思い、難し く考えていましたが、実際は単なるファイルでした。ポーリングしている みたいです。 もうひとつ誤解してたのが、 td-agentを使う = Hadoopを使わなければならない だと思い込んでいたことでした。やたら難しく考えていた。 やってみたら予想以上に単純でした。むしろChefのレシピを作るのに、 多大な時間を使ってしまった。。 次はGrowthForecast を試してみます。 追記(2013-07-15): 今のtd-agentはLTSVをサポートしているFluentdを同封していると指摘を受 けましたので、記事を書き換えました。repeatedlyさん、ありがとうござ いました。 追記(2013-08-15): Chefのレシピやnginxの設定も追加しました。

2013-07-14 (Sun) · masutaka