RyuseiSato
@RyuseiSato (SAI)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

fluentdの起動ができない

解決したいこと

以下の記事を参考にfluentdの設定ファイルを変更したいのですが、エラーが出ます。

以下の記事を参考にtd-agent2からtd-agent4、各種プラグインをアップデートし、の記述を変更しました。

発生している問題・エラー

Job for td-agent.service failed because the control process exited with error code. See "systemctl status td-agent.service" and "journalctl -xe" for details.

そこで

systemctl status td-agent.service

と入力すると

td-agent.service: control process exited, code=exited status=1
11月 25 14:28:27 〇〇〇〇 systemd[1]: Failed to start td-agent: Fluentd based data collector for Treasure Data.
11月 25 14:28:27 〇〇〇〇 systemd[1]: Unit td-agent.service entered failed state.
11月 25 14:28:27 〇〇〇〇 systemd[1]: td-agent.service failed.
11月 25 14:28:27 〇〇〇〇 systemd[1]: td-agent.service holdoff time over, scheduling restart.
11月 25 14:28:27 〇〇〇〇 systemd[1]: Stopped td-agent: Fluentd based data collector for Treasure Data.
11月 25 14:28:27 〇〇〇〇 systemd[1]: start request repeated too quickly for td-agent.service
11月 25 14:28:27 〇〇〇〇 systemd[1]: Failed to start td-agent: Fluentd based data collector for Treasure Data.
11月 25 14:28:27 〇〇〇〇 systemd[1]: Unit td-agent.service entered failed state.
11月 25 14:28:27 〇〇〇〇 systemd[1]: td-agent.service failed.

と出ました。
次に

journalctl -xe

と入力すると以下が出ました。

-- Unit td-agent.service has finished shutting down.
11月 25 14:48:38 〇〇〇〇 systemd[1]: start request repeated too quickly for td-agent.service
11月 25 14:48:38 〇〇〇〇 systemd[1]: Failed to start td-agent: Fluentd based data collector for Treasure Data.
-- Subject: Unit td-agent.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit td-agent.service has failed.
-- 
-- The result is failed.
11月 25 14:48:38 〇〇〇〇 systemd[1]: Unit td-agent.service entered failed state.
11月 25 14:48:38 〇〇〇〇 systemd[1]: td-agent.service failed.
11月 25 14:50:01 〇〇〇〇 systemd[1]: Created slice User Slice of root.
-- Subject: Unit user-0.slice has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit user-0.slice has finished starting up.
-- 
-- The start-up result is done.
11月 25 14:50:01 〇〇〇〇 systemd[1]: Started Session 5271 of user root.
-- Subject: Unit session-5271.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-5271.scope has finished starting up.
-- 
-- The start-up result is done.
11月 25 14:50:01 〇〇〇〇 CROND[32430]: (root) CMD (/usr/lib64/sa/sa1 1 1)
11月 25 14:50:01 〇〇〇〇 systemd[1]: Removed slice User Slice of root.
-- Subject: Unit user-0.slice has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit user-0.slice has finished shutting down.
11月 25 14:50:33 〇〇〇〇 dhclient[2748]: XMT: Solicit on eth0, interval 118230ms.
11月 25 14:52:31 〇〇〇〇 dhclient[2748]: XMT: Solicit on eth0, interval 108120ms.
11月 25 14:53:43 〇〇〇〇 sshd[32439]: Did not receive identification string from 23.183.82.135 port 33958
11月 25 14:54:19 〇〇〇〇 dhclient[2748]: XMT: Solicit on eth0, interval 122230ms.

該当するソースコード

以下が編集したsudo vim /etc/td-agent/td-agent.confの設定ファイルです。

<source>
  @type twitter
  consumer_key 〇〇〇〇
  consumer_secret 〇〇〇〇
  access_token 〇〇〇〇
  access_token_secret 〇〇〇〇
  tag input.twitter
  timeline sampling
  lang ja
  output_format nest
</source>

<match input.twitter>
  @type mysql_bulk
  host 〇〇〇〇
  database textdata
  column_names id,user_id,text,created_at
  table tweet
  username 〇〇〇〇
  password 〇〇〇〇
  <buffer>
   flush_interval 10s
  </buffer>
</match>
0

1Answer

fluentd が起動に失敗しているようですが、それ以上のことはログからは読み取れませんでした。

以下のコマンドを実行すると td-agent.conf の内容が正しいか、起動できるかをチェックできます。何かエラーは表示されますか?

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

参考までに、手元の正常な環境で実行するとこんな感じの出力でした。

% docker run -it --rm fluentd fluentd --dry-run
2021-11-25 15:47:30 +0000 [info]: parsing config file is succeeded path="/fluentd/etc/fluent.conf"
2021-11-25 15:47:30 +0000 [info]: gem 'fluentd' version '1.14.0'
2021-11-25 15:47:30 +0000 [info]: starting fluentd-1.14.0 as dry run mode ruby="2.7.4"
2021-11-25 15:47:30 +0000 [warn]: [output_docker1] 'time_format' specified without 'time_key', will be ignored
2021-11-25 15:47:30 +0000 [warn]: [output1] 'time_format' specified without 'time_key', will be ignored
2021-11-25 15:47:30 +0000 [warn]: define <match fluent.**> to capture fluentd logs in top level is deprecated. Use <label @FLUENT_LOG> instead
2021-11-25 15:47:30 +0000 [info]: using configuration file: <ROOT>
  <source>
    @type forward
    略
</ROOT>
2021-11-25 15:47:30 +0000 [info]: finished dry run mode
1Like

Comments

  1. @RyuseiSato

    Questioner

    uasiさん回答ありがとうございます。

    td-agent --dry-run -c /etc/td-agent/td-agent.conf
    を実行したところ、

    1: from /opt/td-agent/lib/ruby/2.7.0/rubygems/specification.rb:1369:in `activate'
    /opt/td-agent/lib/ruby/2.7.0/rubygems/specification.rb:2247:in `raise_if_conflicts': Unable to activate twitter-6.2.0, because http_parser.rb-0.7.0 conflicts with http_parser.rb (~> 0.6.0) (Gem::ConflictError)

    と出ました。
    競合していることがわかったので

    sudo /opt/td-agent/bin/fluent-gem uninstall http_parser.rb

    を実行し

    http_parser.rb-0.7.0

    を削除したところ

    正常に動作し、参考記事の「日本人がつぶやいた Tweet の 1% ランダムサンプリングデータを fluentd を用いて取得し、その結果を DB (今回はMySQL) に格納する」
    ことができました。

    uasiさん本当にありがとうございます。ずっと困っていたので非常に助かりました。

Your answer might help someone💌