0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

td-agent v2からv4のバージョンアップ

Posted at

td-agentバージョンアップ

td-agent V2(Fluentd v0系)からV4(Fluentd v1系)へのバージョンアップを実施したので、そのときの調査、検証を記載します。

今回はRHEL7からRHEL8へのVMのUpdateに伴うtd-agentのバージョンアップとなります。

※特定の環境下の内容ではあるので、バージョンアップの網羅性はありません。

td-agentバージョンの確定

できればサポート期間内のものがよいのですが、あまりに変更がありすぎても困る、、というのがあります。

td-agentのEOS確認サイト

td-agentはv5からFluentdに統合されることになっています。

対象のサーバー群はRHEL7からRHEL8へのUpgrade想定です。

バージョン別のサポート(v4 vs v5)

v4もv5も対応しています。

結論として、Flunetdバージョンとしてv0からv1にあがるものの、Fluentdに統合される前のv4を選択することとなりました。

Pluginの確認

td-agent v4をにupdateするにあたって、ログの出力や整形等で使用しているpluginがそのまま使えるかの確認が必要です。

※この記事では、対象バージョンアップシステムで使用しているpluginのみ対象で確認しています。

確認が必要なplugin
(td-agentにdefaultで入っているものでバージョンアップに関係なさそうなものは除いています)

  • fluent-plugin-forest
    • 現行設定で非常に多く利用されている。実機で確認したところ、現行の設定であれば利用可能であることを確認。
  • file_with_fix_path
    • ログの保管サーバーでまとめてログ監視のために利用していることが判明。各サーバーでログ監視をする設定に変更するため、利用しないこととする。
  • elasticsearch
    • AWSでelasticsearchを利用しているが、こちらもEOSのためOpensearch利用とする。(実機で確認するとElasticsearch2.3(on AWS)にログが配置できなかった)
  • s3
    • 実機確認したところ、利用に問題なし。

td-agentの複数プロセスでの実行

td-agent v2ではパフォーマンスを良くするために、td-agentのプロセスを複数起動させていました。

type multiprocesを利用してそれぞれ設定ファイルを指定し、複数プロセスを起動していますが、v4では利用できませんでした。

代わりに<worker>でプロセスを分けて起動できるようになっています。

参考:Multi Process Workers

例)
旧設定ファイル

<source>
   type multiprocess

   <process>
        cmdline -c /etc/td-agent/td-agent_01.conf
        sleep_before_start 1s
        sleep_before_shutdown 5s
   </process>

   (省略)
</source>

新設定ファイル

<system>
  workers 8
</system>

## Worker
<worker 0>   ##<==ここでプロセス指定

## Input
  <source>
  @type forward
  port 24224   ##<==ここでPORTを指定(送信元はこのPORTを設定ファイルで宛先に指定)
  bind 0.0.0.0
  </source>

(省略)

</worker>

workerは0から始まるので、今回はworker 8なので9個実行します。
上記では省略していますが、Worker別にPORT番号を連番にしなくても、以下のようになります。

# ss -ltnp																					
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process																					
LISTEN 0 1024 0.0.0.0:24224 0.0.0.0:* users:(("ruby",pid=16657,fd=7))																					
LISTEN 0 1024 0.0.0.0:24225 0.0.0.0:* users:(("ruby",pid=16658,fd=7))																					
LISTEN 0 1024 0.0.0.0:24226 0.0.0.0:* users:(("ruby",pid=16660,fd=21))																					
LISTEN 0 1024 0.0.0.0:24227 0.0.0.0:* users:(("ruby",pid=16662,fd=21))																					
LISTEN 0 1024 0.0.0.0:24228 0.0.0.0:* users:(("ruby",pid=16664,fd=21))																					
LISTEN 0 1024 0.0.0.0:24326 0.0.0.0:* users:(("ruby",pid=16659,fd=7))																					
LISTEN 0 1024 0.0.0.0:24327 0.0.0.0:* users:(("ruby",pid=16661,fd=7))																					
LISTEN 0 1024 0.0.0.0:24328 0.0.0.0:* users:(("ruby",pid=16663,fd=7))

confファイルの書き方の変更

td-agent v2からv4(Fluentd v0からv1)での書き方の変更に対応する必要があります。

type

type@typeへ変更。量が多いので一括変換すべし。

buffer

それまでオプションでbuffer_chunk_limitと記載されていたようなbufferの設定を
<buffer>ディレクティブで囲んで記載します。(option名も変更になっています)

    <buffer>
      @type file
      path /log1/td-agent-buffer/24226/test_WebOperationTool
      queue_limit_length 32768
      flush_mode interval
      flush_interval 1s
    </buffer>

format

こちらもbufferと同じように<format>で囲みます。

        <format>
          @type single_value
        </format>

rewriterule

rewrite_tag_filterのプラグインでルール書き換えのときも、<rule>で囲みます。

旧記載

  @type rewrite_tag_filter
  rewriterule1 hostname ^.P p.${tag}
  rewriterule2 hostname ^.T v.${tag}

新記載

   @type rewrite_tag_filter
    <rule>
      key hostname
      pattern ^.P
      tag p.${tag}
    </rule>

td-agentの導入と設定

td-agentのパッケージを導入をします。必要なpluginを入れ、設定ファイルを配置し、dry-runをして実際に動かします。

導入

td-agent v4のインストール方法

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh
yum install -y td-agent

バージョン確認

td-agent --version

pluginの導入と確認

td-agent-gem install <Plugin名>
td-agent-gem list

設定ファイルの確認 (dry-runで文法チェックを行う)

設定ファイルを/etc/td-agentの下に配置しておきます。

td-agent --dry-run -c /etc/td-agent/td-agent.conf

errorやwarnが出たら、それぞれ直しましょう。

サービス起動

sudo systemctl start td-agent

以上でupdate作業は終わりです。

必要に応じて、単体テストを実施します。

参考文献

Update from v0.12 to v1

Fluentd v1.0

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?