Kinesis エージェントのインストールと起動

Posted on 2019-12-15 in zakki

Firehose でログをストリーミングするため、Kinesis エージェントをインストールしようとしたときに詰まったのでメモ。

環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.5 LTS"

方法と詰まったところ

インストール

Kinesis エージェントの概要とインストールは下記を参考に行います。

パッケージコマンドはyumしか記載が無いので、git リポジトリからgit cloneでダウンロードして setuptool からインストールします。

併せてエージェントの動作に必要な Java 環境をインストールします。

$ sudo apt update
$ sudo apt install -y default-jre
$ git clone https://github.com/awslabs/amazon-kinesis-agent.git
$ cd amazon-kinesis-agent
$ sudo ./setup --install

まず、インストールが出来ませんでした。

BUILD FAILED
/home/ubuntu/amazon-kinesis-agent/build.xml:40: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-8-openjdk-amd64/jre"

エラーに書いてある JAVA_HOME( 環境変数 ) に値を設定してもダメでした。調べてみるとjdkも必要な様子です。Java 周りは勝手がわからない。。

$ sudo apt install -y default-jdk
$ sudo ./setup --install
Your installation has completed!

インストールは完了。

エージェントの起動

serviceコマンドで起動させます。

$ sudo service aws-kinesis-agent start
$ sudo service aws-kinesis-agent status

   Active: active (exited) since ...

となりました。ただ、確認がてら同じ操作をしてみると今度はactive(running)と正常に動作している …。うーん、なんだか良くわかりませんが(exited)となってしまった時に試した方法を記載します。

リンク先が全てなのですが、Java のライブラリをバージョンアップしたことが影響している様子。対処 ( 過去バージョンのインストール ) スクリプトを公開している親切な方がいらっしゃるのでそちらを利用させていただきます。

ちなみにここまでたどり着くのに 5,6 回再インストールしていて疲れています。

エージェントユーザのグループ変更とログの実行権限の変更

エージェントユーザ (aws-kinesis-agent-user) が対象とするログを読み取りと実行できる権限が必要なのでその変更を行います。ログは例として/var/log/nginx/access.logとしています。

$ sudo ls -l /var/log/nginx/access.log
-rw-r----- 1 nginx nginx 0 Jul 29 06:25 /var/log/nginx/access.log
$ sudo usermod -aG nginx aws-kinesis-agent-user
$ sudo chmod 650 /var/log/nginx/access.log

この状態でサービスを再起動します。

$ sudo service aws-kinesis-agent restart
$ sudo service aws-kinesis-agent status

   Active: active (running) since ...

ログが Firehose にストリーミングされているか確認します。

$ tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log
2019-12-15 15:06:23.426+0000 ip-XXXXXXXXX (FileTailer[fh:XXXXXXXX].MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.tailing.FileTailer [INFO] FileTailer[fh:XXXXXXX]: Tailer Progress: Tailer has parsed 63 records (13639 bytes), transformed 63 records, skipped 0 records, and has successfully sent 63 records to destination.

AWS Kinesis Firehose