Post

td-agentにaws-fluent-plugin-kinesisをインストールしたが起動できない

事象

aws-s3のプラグインでエラーが発生している。 less /var/log/td-agent/td-agent.log

failed to configure/start sub output s3: Unable to activate fluent-plugin-s3-0.8.5, because aws-sdk- 2.1.36 conflicts with aws-sdk (< 3, >= 2.3.22)

解決

下記の通りにgemのインストールを行う。

# td-agent-gem install fluent-plugin-s3 # td-agent-gem install google-protobuf -v "3.7.0" # td-agent-gem install fluent-plugin-kinesis

インストールバージョン

# td-agent-gem list fluent-plugin-s3 fluent-plugin-kinesis google-protobuf fluent-plugin-s3 (1.1.11, 0.8.0) fluent-plugin-kinesis (3.1.0) google-protobuf (3.7.0 x86_64-linux)

調査

調査1

Plugin Management - Fluentd に使用されるバージョンは The latest version is used と書かれている

# td-agent-gem list aws-sdk *** LOCAL GEMS *** aws-sdk (2.10.45, 2.3.22, 2.1.36) aws-sdk-core (2.10.45, 2.3.22, 2.1.36) aws-sdk-resources (2.10.45, 2.3.22, 2.1.36)

調査2

fluent-plugin-s3のバージョンをあげる

# td-agent-gem install fluent-plugin-s3 Fetching: serverengine-2.1.1.gem (100%) Successfully installed serverengine-2.1.1 Fetching: strptime-0.2.3.gem (100%) Building native extensions. This could take a while... . . . Done installing documentation for serverengine, strptime, dig_rb, fluentd, aws-partitions, aws-eventstream, aws-sigv4, aws-sdk-core, aws-sdk-kms, aws-sdk-s3, aws-sdk-sqs, fluent-plugin-s3 after 18 seconds 12 gems installed

結果

事象が変わっただけ。

# less /var/log/td-agent/td-agent.log . . . 2019-07-11 18:11:38 +0900 [error]: #0 failed to configure/start sub output s3: Unable to activate aws-sdk-s3-1.45.0, because aws-sdk-co re-2.1.36 conflicts with aws-sdk-core (>= 3.58.0, ~> 3)

調査3

依存関係を調査する

# /usr/sbin/td-agent-gem dependency fluent-plugin-s3 Gem fluent-plugin-s3-0.8.5 aws-sdk (< 3, >= 2.3.22) fluentd (< 2, >= 0.10.58) rake (>= 0.9.2, development) rr (= 1.1.2, development) test-unit (>= 3.0.8, development) test-unit-rr (>= 1.0.3, development) timecop (>= 0, development) Gem fluent-plugin-s3-1.1.11 aws-sdk-s3 (~> 1.0) aws-sdk-sqs (~> 1.0) fluentd (< 2, >= 0.14.22) rake (>= 0.9.2, development) test-unit (>= 3.0.8, development) test-unit-rr (>= 1.0.3, development) timecop (>= 0, development) # /usr/sbin/td-agent-gem dependency aws-sdk-s3 Gem aws-sdk-s3-1.45.0 aws-sdk-core (>= 3.58.0, ~> 3) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1)

調査4

既存のGemをカスタマイズして使うスマートなやり方 – ひげろぐ より、 specific_installgit_install でgithubより最新版をダウンロードする

gem git_install https://github.com/awslabs/aws-fluent-plugin-kinesis.git
gem git_install https://github.com/awslabs/aws-fluent-plugin-kinesis.git v2.1.1 のようにバージョンを指定できる

インストールする

結果

Rubyのバージョンが低いとエラーを指摘される

# td-agent-gem specific_install https://github.com/awslabs/aws-fluent-plugin-kinesis.git . . . Successfully built RubyGem Name: fluent-plugin-kinesis Version: 3.1.0 File: fluent-plugin-kinesis-3.1.0.gem ERROR: While executing gem ... (Gem::InstallError) google-protobuf requires Ruby version >= 2.3.

調査5

winebarrel/fluent-plugin-kinesis-firehose: Fluentd output plugin for Amazon Kinesis Firehose. の開発が v0.1.1 で止まっているが、最新を使用しようする為には、 README.md に書いてある通り(Please use fluent-plugin-kinesis.)、fluent-plugin-kinesis を使用する必要がある。

結果

# td-agent-gem install fluent-plugin-kinesis

failed to configure/start sub output s3: Unable to activate fluent-plugin-s3-1.0.0, because aws-sdk-2.3.22 conflicts with aws-sdk (< 3, >= 2.3.22)

調査6

google-protobufの全バージョン履歴 | RubyGems.org | コミュニティのGemホスティングサービス に、3.9、3.8、3.7…とバージョンが並んでいる各リンクを押下して、 必要RUBYバージョン を確認する。

結果

3.7.1 まで、rubyバージョンが指定されていないので使用できる。 3.8.0 からは、rubyバージョンが 2.3 でないといけない。

原因

aws-fluent-plugin-kinesis/fluent-plugin-kinesis.gemspec at master · awslabs/aws-fluent-plugin-kinesis にある通り、 spec.add_dependency "google-protobuf", "~> 3" と、3の最新バージョンまで許容している為に、3.9.0がインストールされてしまう。先に google-protobuf3.7.1 でインストールする必要がある。

調査7

failed to configure/start sub output s3: Unable to activate fluent-plugin-s3-1.0.0, because aws-sdk-2.3.22 conflicts with aws-sdk (< 3, >= 2.3.22)

aws-sdk のバージョンで競合が発生している。

結果

fluent-plugin-s3 のバージョンをあげる

# td-agent-gem install fluent-plugin-s3 # td-agent-gem list fluent-plugin-s3 *** LOCAL GEMS *** fluent-plugin-s3 (1.1.11, 0.8.0)
This post is licensed under CC BY 4.0 by the author.