アプリのロギングエージェント with rsyslog
SideAppで稼働するアプリにロギングエージェントをインストールすることでログをFluentdで収集し、Opensearchに格納、Opensearch Dashboardでログを閲覧することができます。
また、OpensearchのスナップショットをAmazon S3へバックアップし、リストアすることも可能です(Amazon S3のアクセスキーが必要)。
紹介動画
概要
想定ユーザー
- ロギングを実装したいユーザー。
- ロギングエージェント(特にrsyslog)を使用し、Fluentdを経由してOpenSearchにログを保存したいユーザー。
- OpenSearchに保存したログをOpenSearchダッシュボードで確認したいユーザー。
テンプレート動作
- 入力
- シークレット (スナップショットをAmazon S3に保存する場合に設定する)
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
(任意。一時的な認証情報を使用する場合に設定する。)
- Injection機能による初期設定
Dashboard
のSideAppにInjectionファイル/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
のserver.basePath
の{namespace-id}
をCanvasのネームスペースIDに置き換える。
- ログの保存
app
ワークスペースのLog generation app with agent
SideAppのInjectionファイル/etc/rsyslog.d/60-rsyslog.conf
は、Fluentdへのログ転送の設定を含む、rsyslogの設定ファイル。本アセット単体で動作確認する場合は変更不要。
- シークレット (スナップショットをAmazon S3に保存する場合に設定する)
- Output
- 保存されたログをOpenSearchダッシュボードから確認できる。
- Function
- ロギングエージェント(特にrsyslog)を使用し、Fluentd経由でOpenSearchにログを保存する。
- OpenSearchダッシュボードでログを表示する。
利用方法
単体での動作確認
- スナップショットをAmazon S3に保存する場合、Canvasでシークレットとして下記を設定する。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
(任意。一時的な認証情報を使用する場合に設定する。)
- Canvasで
Dashboard
のSideAppにInjectionファイル/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
のserver.basePath
の{namespace-id}
をCanvasのネームスペースIDに置き換える。
- デプロイボタンを押し、デプロイの完了を待つ。完了すると、
app
ワークスペースのLog generation app with agent
SideAppが、30秒おきにログを出力する。 Dashboard
のSideAppに接続されたEndpointのURL (https://studio.{env-id}.studio.exabase.ai/{namespace-id}/log/dashboard/
) から、OpenSearchダッシュボードにアクセスする。- OpenSearchダッシュボードのメニューから "Discover" を開き、 "Create index pattern" から
system-logs-*
というインデックスパターンを作成する。Time field
としては、基本的には@timestamp
を用いる。 - 再度OpenSearchダッシュボードのメニューの "Discover" を開くと、ログを確認できる。
- スナップショットをAmazon S3に保存する場合は、OpenSearchダッシュボードから以下の設定を行う。
- メニューの "Snapshot Management" -> "Repositories" を開き、 "Create repository" から、下記のように入力してスナップショットリポジトリを登録する。
- Repository name:
{任意の名称}
- Repository type:
Custom configuration
- Custom configuration:
{
"type": "s3",
"settings": {
"bucket": "{bucket_name}",
"base_path": "{bucket_base_path}"
}
}
- Repository name:
- 自動的なスナップショット保存の設定をするために、 "Snapshot Management" -> "Snapshot policies" を開き、 "Create policy" から、表示されるフォームに入力する。
- メニューの "Snapshot Management" -> "Repositories" を開き、 "Create repository" から、下記のように入力してスナップショットリポジトリを登録する。
- スナップショットからログをリストアする場合、OpenSearchダッシュボードから以下のように操作する。
- "Snapshot Management" -> "Repositories" を開き、スナップショット設定時に設定したリポジトリがなければ、設定時と同様にスナップ ショットリポジトリを登録する。
- "Snapshot Management" -> "Snapshots" を開くと、保存していたスナップショットが表示される。リストアしたいスナップショットのチェックボックスをチェックし、 "Restore" を押す。表示に従ってリストアの設定を行い、 "Restore snapshot" を押す。
- メニューから "Discover" を開き、インデックスパターンがなければ、にリストアしたログのインデックスにマッチするインデックスパターンを "Index pattern name" に入力し、インデックスパターンを作成する。
- 再度メニューの "Discover" を開くと、リストアしたログを確認できる。
他のアセットとの連携
- 本アセットは、ロギングエージェントを使用したOpenSearchとOpenSearch Dashboardsによるロギング関連機能を、Studioで構築するアプリケーションに導入するために活用されることを想定されています。
- 方法は以下の通りです。
- ロギング関連機能を導入したいCanvasに本アセットの
log
ワークスペースと同様のものを配置する。 - 本アセットの
app
ワークスペースのLog generation app with agent
SideAppで使用しているDockerイメージの実装を含む こちらのzipファイル や、Injectionされた/etc/rsyslog.d/60-rsyslog.conf
を参考に、ロギングエージェントからFluentdにログを転送するための設定を行う。- 該当のDockerイメージを基にしたアプリケーションは、Ubuntuベースのアプリで、rsyslogをエージェントとして使用し、システムログをFluentdに転送する。zipファイル内には例として、Fluentdサーバーにシステムログを転送するための、rsyslogdの設定方法が示されている。rsyslogのデーモンは
rsyslogd
コマンドで開始する必要があり、これは、ダミーシステムログの生成コマンドと共にentrypoint.sh
ファイルに記載されている。ログ転送対象のFluentdサーバーとポートは/etc/rsyslog.conf
で定義する必要がある。詳細はzipファイル内をご確認ください。 - Injectionされた
/etc/rsyslog.d/60-rsyslog.conf
のtarget
の値としてデフォルトでlog-fluentd
が指定されているがこれは{Fluentd SideAppが存在するワークスペース名}-{Fluentd SideAppのID}
である。
- 該当のDockerイメージを基にしたアプリケーションは、Ubuntuベースのアプリで、rsyslogをエージェントとして使用し、システムログをFluentdに転送する。zipファイル内には例として、Fluentdサーバーにシステムログを転送するための、rsyslogdの設定方法が示されている。rsyslogのデーモンは
- デプロイ後、 単体での動作確認 と同様に、OpenSearchダッシュボードからインデックスパターンやスナップショットの設定を行う。
- 再度OpenSearchダッシュボードのメニューのDiscoverを開くと、ログを確認できる。
- ロギング関連機能を導入したいCanvasに本アセットの
関連情報
- OpenSearch
- OpenSearchは、ログ分析などの機能を有する検索エンジンです。
- opensearch.org
- OpenSearch GitHub リポジトリ
- OpenSearch-Dashboards GitHub リポジトリ
- Fluentd
- Fluentdは、データ収集ツールです。データ収集を一元化することができます。
- fluentd.org
- rsyslog
- rsyslogは、高速なログ処理システムです。
- rsyslog.com