読者です 読者をやめる 読者になる 読者になる

ログってなんぼ

日々のメモです

td-agent(fluent)のforward先を冗長化する

forward先のfluentdを冗長化したのでメモです。

送信側

apacheログを転送してみる

<source>
  type tail
  path /var/log/httpd/access.log
  pos_file /tmp/access.log.pos
  tag apache.access
  format /^(?<host>[^ ]*) [^ ]* (?<username>[^ ]*) \[(?<request_time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<status>[^ ]*) (?<size>[^ ]*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)"$/
  time_format %Y/%m/%d:%H:%M:%S %z
</source>

<match apache.access>
  type forward
  <server>
    # primary host
    host xxx.xxx.xxx.xxx
    weight 50
  </server>
  <server>
    # secondary host
    host xxx.xxx.xxx.xxx
    port 24224
    standby
  </server>
</match>

forward先を2つ書いておき、片方をstandbyとしておきます。

受信側

<source>
  type forward
  port 24224
</source>

<match apache.access>
  type jsonbucket
  output_tag redshift.apache.access
  json_key log
</match>


<match redshift.apache.access>
  type forest
  subtype redshift
  <template>
    # s3
・
・
・

Primaryを止めてみる

2015-09-04 12:02:10 +0900 [info]: out_forest plants new output: redshift for tag 'redshift.apache.access'

2015-09-04 12:03:11 +0900 [info]: completed copying to redshift. s3_uri=s3://accesslog/20150904/20150904-1203_00.gz

正常に稼働中のところへ

td-agentを落とす

$ sudo service td-agent stop

2015-09-04 12:04:24 +0900 [info]: shutting down fluentd
2015-09-04 12:04:24 +0900 [info]: process finished code=0

送信側のログ

2015-09-04 03:05:10 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2015-09-04 03:05:11 +0000 error_class="RuntimeError" error="no nodes are available" plugin_id="object:3fb83f504a60"

bufferに溜まり始めました

2015-09-04 12:07:27 +0000 [warn]: using standby node xxx.xxx.xxx.xxx:24224 weight=50

2015-09-04 12:09:20 +0000 [warn]: retry succeeded. plugin_id="object:3fb83f569c1c"

secondaryに切り替わったようです

Secondaryのログ

2015-09-04 12:09:23 +0900 [info]: out_forest plants new output: redshift for tag 'redshift.apache.access'


2015-09-04 12:10:23 +0900 [info]: completed copying to redshift. s3_uri=s3://accesslog/20150904/20150904-1210_00.gz

OKです

Primaryを復旧させる

$ sudo service td-agent start

2015-09-04 12:11:53 +0900 [info]: listening fluent socket on 0.0.0.0:24224

2015-09-04 12:12:21 +0900 [info]: out_forest plants new output: redshift for tag 'redshift.apache.access'

Primaryが仕事を再開しました

とりあえずはこんな感じかな。その他オプションもいろいろ研究してみる必要がありそうです