楽天は td-agent バージョン4 のインストールを推奨していますが、コミュニティの Fluentd エージェントをインストールすることも可能です。Fluentd のインストールの詳細については、概要 を参照ください。
#SixthSense Fluentd プラグインのダウンロードとインストール
https://artifacts-observability.sixthsense.rakuten.com/sixthsense/sixthsense-log-monitoring/-/packages URL より gitlab artifactory から最新の SixthSense プラグイン (.gem ファイル) をダウンロードしてください。認証情報はオンボーディングチームから提供されます。
gem ファイルパッケージへのリンクは以下となります。
https://artifacts-observability.sixthsense.rakuten.com/sixthsense/sixthsense-log-monitoring/-/packages/9629
fluent-plugin-sixthsense-1.2.3.gem ファイルをダウンロードの上、エージェントを設定します。
curl --header "PRIVATE-TOKEN:{TOEKN}" --output fluent-plugin-sixthsense-1.2.3.gem "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/33/packages/generic/sixthsense-fluentD-agent/1.2.2/fluent-plugin-sixthsense-1.2.3.gem"
SixthSense エージェントのインストール
Fluentd をソースや gem からインストールした場合、以下の gem コマンドを使用して、.tar や .zip ファイルがあるフォルダにプラグインをインストールすることが可能です。
gem install fluent-plugin-sixthsense-1.2.3.gem
Windows
fluentd のインストール時に Windows を使用していた場合は、以下のコマンドを使います。
SixthSense エージェントプラグインを td-agent に追加する
DEB、RPM、.msi などから fluentd をインストールする際に td-agent パッケージを使用した場合は、.tar または .zip ファイルがあるフォルダにて以下のコマンドを使用します。
/opt/td-agent/bin/fluent-gem install fluent-plugin-sixthsense-1.2.3.gem
#Fluentd 設定ファイル
例:
<source>
@type tail
read_from_head true
path /var/log/containers/*sixthsense*.log
pos_file /var/log/fluentd-containers1.log.pos
exclude_path ["/var/log/containers/fluent*"]
path_key filename
<parse>
@type multiline
format_firstline /\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3}\s-/
format1 /(?<message>.*)/
</parse>
tag kubernetes.*
</source>
<filter kubernetes.**>
@type record_transformer
<record>
log_name ${tag}
hostname "#{Socket.gethostname}"
</record>
</filter>
<match **>
@type sixthsense
api_key (SixthSense_Token must be fetched from SixthSense dashboard)
base_uri https://http-collector-observability.sixthsense.rakuten.com/log/v1/log
# For connectivity to backend using onecloud private network: https://sixthsense-backend.jpe2-caas1-prod1.caas.jpe2b.r-local.net/log/v1/log
# For connectivity to backend using intra public network: https://observability-backend-core.sixthsense.rakuten.com/log/v1/log
service_name (Application name)
</match>
上記の例では、以下の3つのセクションがあります:
ソース
この例では、tail プラグインを使用しています。tail プラグインは、/var/log/containers/ ディレクトリ内のすべてのログを読み込むように設定されています。解析が完了するまでのログファイルの位置は pos_file に格納されます。
必須である解析セクションにおいては、複数行にまたがるスタックトレースの解析にマルチラインプラグインが使用されます。これが不要な場合は、none プラグインを使って解析を無効化することができます。
<parse>
@type none
</parse>
フィルタ
フィルタセクションでは、kubernetes とタグ付けされたすべてのログが処理されます。record_transformer プラグインは、log_name と hostname に関連するデータのエンリッチ化に使用されます。
<filter kubernetes.**>
@type record_transformer
<record>
log_name ${tag}
hostname "#{Socket.gethostname}"
</record>
</filter>
マッチ
マッチセクションでは SixthSense プラグインが使用され、以下の3つのフィールドを含んでいます:
api_key SixthSense ダッシュボードの設定ページから api キーをコピーする必要があります。
base_uri SixthSense エンドポイントの URL(現在は Satelite Server に直接向けられています)。
service_name エージェントに与えられた名称で、SixthSense ダッシュボードにはこの名称で表示されます。
<match **>
@type sixthsense
api_key (SixthSense_Token must be fetched from SixthSense dashboard)
base_uri https://http-collector-observability.sixthsense.rakuten.com/log/v1/log (for OneCloud Plantform, use base_uri https://sixthsense-backend.jpe2-caas1-prod1.caas.jpe2b.r-local.net/log/v1/log)
service_name (Application name)
</match>
これにより、ログ管理ダッシュボードにサービスがリストアップされ、画面に表示されます。