td-agentをビルドしてfluentdのバージョンを上げる

(2016-11-06)

$td-agent --version
td-agent 0.12.26

td-agentって書いてあるけど、これがfluentdのバージョンらしい。

fluentdはv0.14からナノ秒で時間を持つようになった。 ただ、現行のtd-agent(v2.3.2)は上の通り古いバージョンを使っている。 0.14になるtd-agent-3はまだリリースされていないので、 自分でfluentdをv0.14.8に上げてビルドすることにした。

FROM ubuntu:14.04

WORKDIR /tmp

RUN apt-get update && \
    apt-get install -y git software-properties-common build-essential curl && \
    add-apt-repository -y ppa:brightbox/ruby-ng && \
    apt-get update && \
    apt-get install -y ruby2.3 ruby2.3-dev && \
    gem install bundler && \
    git clone https://github.com/treasure-data/omnibus-td-agent

WORKDIR /tmp/omnibus-td-agent

RUN sed -ie "s/^default_version.*$/default_version '3d1dd53f31d1fe49508f230a71a2b4c2ceb20f47'/" config/software/fluentd.rb && \
    sed -ie "s/^license_file.*$/license_file 'LICENSE'/" config/projects/td-agent2.rb && \
    bundle install --binstubs && \
    bin/gem_downloader core_gems.rb && \
    bin/gem_downloader plugin_gems.rb && \
    bin/gem_downloader ui_gems.rb && \
    git config --global user.email "[email protected]" && \
    mkdir -p /opt/td-agent /var/cache/omnibus && \
    bin/omnibus build td-agent2

config/projects/td-agent2.rbを書き換えているのは、ビルド時に

/var/lib/gems/2.3.0/gems/omnibus-5.5.0/lib/omnibus/licensing.rb:223:in `read': No such file or directory @ rb_sysopen - /tmp/omnibus-td-agent/https://raw.githubusercontent.com/treasure-data/omnibus-td-agent/master/LICENSE (Errno::ENOENT)

こんなエラーが出たため。licensing.rbを見てみたところ、相対パスを想定しているようだった。

g++: internal compiler error: Killed (program cc1plus)

が出たらメモリが足りないかもしれない。

ビルドが成功したらpkgにdebが出来ている。

$ docker cp <Container ID>:/tmp/omnibus-td-agent/pkg/td-agent_2.3.3-0_amd64.deb .
$ dpkg -i td-agent_2.3.3-0_amd64.deb
$ td-agent --version
td-agent 0.14.8