td-agent

A collection of 6 posts
Send secure log to BigQuery
td-agent

Send secure log to BigQuery

/var/log/secureをBigQueryに送ってRe:dashで攻撃っぽいアクセスなどを可視化してみたかったので送ってみました。 準備 * /var/log/secureをtd-agentでも読めるようにパーミッションを下げる * /var/log/secureがローテートされてもパーミッションが戻らないようにlogrotateの設定を変更する td-agentの設定 td-agentの設定を追加します。 * 部分でログの送信元のサーバのホスト名をレコードに追加している # syslog (secure log) @type tail format syslog path /var/log/secure tag syslog.secure pos_file /var/log/td-agent/syslog.secure.pos @type record_transformer
2 min read
Change H2O log format to LTSV
bigquery

Change H2O log format to LTSV

h2oのログをtd-agentを使ってGoogle BigQueryに送っています。 * Send h2o log to BigQuery 今まで私はtd-agentのtailプラグインの設定で、フォーマットを愚直に正規表現で設定していました。 format /(?[^ ]*) (?[^ ]*) (?[^ ]*) (?[^\]]*) (?[^ ]* +\S* +\S*) (?[^ ]*) (?[^ ]*) "(?[^\"]*)" "(?[^\"]*)"/ 課題として、以下の不満がありました。 * 見辛い * h2oのログフォーマットを変えたとき追従して正規表現を書き直さないといけない そこでh2oのアクセスログのフォーマットをLTSVに変更してtd-agentでltsvフォーマットを使えるよ
2 min read
Monitoring Fluentd with Mackerel and Tuning Fluentd buffer config
mackerel

Monitoring Fluentd with Mackerel and Tuning Fluentd buffer config

h2oのログをbigqueryに送り始めました。 * Send h2o log to BigQuery 今のところ特に問題は無いのですが、正直バッファの各設定値やリトライ回数のチューニングについてはどうすれば良いのかよくわからないのでなんとかしたいところです。 そこで、mackerel-agent-pluginsを導入してみます。メトリクスを取ることでチューニングしやすくなるだろうと言う目論見です。 * mackerel-agent-plugins/mackerel-plugin-fluentd バッファについては、下記のサイトが分かりやすかったです。 * Fluentdの仕組み -バッファ機能でログ収集漏れを防ぐ- | Tech-Sketch * BufferedOutput pluginの代表的なoptionについて - Qiita td-agent側の準備 まずtd-agent.confでmonitor_agentプラグインを有効化します。下記設定を追加してtd-agentを再起動。 * Monitoring Fluentd | F
4 min read
Add logsource hostname to record
bigquery

Add logsource hostname to record

bigqueryに送るレコードに送り元のホスト名を追加してみます。 送り元ホストを条件に検索できるようになります。今のところ個人で複数のサーバを運用する予定はないので別に送り元ホストを条件に検索することも無いのですが、こまけーこたぁいいんだよ! filterプラグイン(組み込み)を利用して実現します。 * record_transformer Filter Plugin | Fluentd filterプラグインを使うと、td-agentのレコード(tailしたログファイルの行など)にデータを追加することが出来ます。 イメージ的には以下のような感じでしょうか。 [time, tag, record = {ip: "1.2.3.4", status: "200"}] ↓ [time, tag, record = {ip: "1.2.3.4", status: "200", logsource_hostname: "ponpokopon.me"}] td-agentの(fluentdの)データ構造については、以下の記事が分かりやすかったです。 *
2 min read
Add new column to BigQuery
bigquery

Add new column to BigQuery

h2oのログにUesr-Agent情報も追加した。ログのフォーマットで%{HEADERNAME}iとすると、任意のレスポンスヘッダを出力させることが出来る。 * Access Log Directives - Configure - H2O - the optimized HTTP/2 server access-log: path: /var/log/h2o/access.log format: "%h %l %u %{%Y/%m/%d:%H:%M:%S}t \"%r\" %s %b \"%{User-agent}i\"" bigqueryにh2oのログを送っているので、td-agentとbigquery側でも対応する。 既存のテーブルにUser-Agent用のカラムを追加する まず既存のテーブルのフォーマットを取得する。jqでフィールド情報のみを抽出すると便利。以下私のbigqueryの例。 bq --format=prettyjson
3 min read
Send h2o log to BigQuery
h2o

Send h2o log to BigQuery

h2oのアクセスログをtd-agentを使ってGoogle BigQueryに送ってみる。幾つか手順が必要。 * bigqueryの設定 * スキーマ定義ファイルの作成 * td-agentの設定 bigqueryの設定 bigqueryへアクセスするためにapiを有効化し、アクセスキーを発行するのだが、この工程が長い…。(´・_・`) 慣れてないと混乱する。 gcpアカウントの作成 作る。 * Google Cloud Computing, Hosting Services & APIs  |  Google Cloud Platform プロジェクトの作成 請求先アカウントの設定 bigqueryのapiを有効化 認証情報(とサービスアカウント)の作成 これでやっと以下のようなjson形式の鍵ファイルがダウンロードされる。td-agnetの設定で使う。 { "type": "......", "project_id": "......", "pr
4 min read