td-agentをビルドしてfluentdのバージョンを上げる
fluentd$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