アプリのロギングエージェント 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" を開くと、リストアしたログを確認できる。