メインコンテンツまでスキップ

アプリのロギングエージェント with rsyslog

Version: 1
  • logging
Download Canvas JSON
logo

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.ymlserver.basePath{namespace-id} をCanvasのネームスペースIDに置き換える。
    • ログの保存
      • app ワークスペースの Log generation app with agent SideAppのInjectionファイル /etc/rsyslog.d/60-rsyslog.conf は、Fluentdへのログ転送の設定を含む、rsyslogの設定ファイル。本アセット単体で動作確認する場合は変更不要。
  • Output
    • 保存されたログをOpenSearchダッシュボードから確認できる。
  • Function
    • ロギングエージェント(特にrsyslog)を使用し、Fluentd経由でOpenSearchにログを保存する。
    • OpenSearchダッシュボードでログを表示する。

利用方法

単体での動作確認

  1. スナップショットをAmazon S3に保存する場合、Canvasでシークレットとして下記を設定する。
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
    • AWS_SESSION_TOKEN (任意。一時的な認証情報を使用する場合に設定する。)
  2. Canvasで Dashboard のSideAppにInjectionファイル /usr/share/opensearch-dashboards/config/opensearch_dashboards.ymlserver.basePath{namespace-id} をCanvasのネームスペースIDに置き換える。
    canvas-init-basepath
  3. デプロイボタンを押し、デプロイの完了を待つ。完了すると、 app ワークスペースの Log generation app with agent SideAppが、30秒おきにログを出力する。
  4. Dashboard のSideAppに接続されたEndpointのURL ( https://studio.{env-id}.studio.exabase.ai/{namespace-id}/log/dashboard/ ) から、OpenSearchダッシュボードにアクセスする。
  5. OpenSearchダッシュボードのメニューから "Discover" を開き、 "Create index pattern" から system-logs-* というインデックスパターンを作成する。 Time field としては、基本的には @timestamp を用いる。
  6. 再度OpenSearchダッシュボードのメニューの "Discover" を開くと、ログを確認できる。
  7. スナップショットをAmazon S3に保存する場合は、OpenSearchダッシュボードから以下の設定を行う。
    1. メニューの "Snapshot Management" -> "Repositories" を開き、 "Create repository" から、下記のように入力してスナップショットリポジトリを登録する。
      • Repository name: {任意の名称}
      • Repository type: Custom configuration
      • Custom configuration:
        {
        "type": "s3",
        "settings": {
        "bucket": "{bucket_name}",
        "base_path": "{bucket_base_path}"
        }
        }
    2. 自動的なスナップショット保存の設定をするために、 "Snapshot Management" -> "Snapshot policies" を開き、 "Create policy" から、表示されるフォームに入力する。
  8. スナップショットからログをリストアする場合、OpenSearchダッシュボードから以下のように操作する。
    1. "Snapshot Management" -> "Repositories" を開き、スナップショット設定時に設定したリポジトリがなければ、設定時と同様にスナップショットリポジトリを登録する。
    2. "Snapshot Management" -> "Snapshots" を開くと、保存していたスナップショットが表示される。リストアしたいスナップショットのチェックボックスをチェックし、 "Restore" を押す。表示に従ってリストアの設定を行い、 "Restore snapshot" を押す。
    3. メニューから "Discover" を開き、インデックスパターンがなければ、にリストアしたログのインデックスにマッチするインデックスパターンを "Index pattern name" に入力し、インデックスパターンを作成する。
    4. 再度メニューの "Discover" を開くと、リストアしたログを確認できる。

他のアセットとの連携

  • 本アセットは、ロギングエージェントを使用したOpenSearchとOpenSearch Dashboardsによるロギング関連機能を、Studioで構築するアプリケーションに導入するために活用されることを想定されています。
  • 方法は以下の通りです。
    1. ロギング関連機能を導入したいCanvasに本アセットの log ワークスペースと同様のものを配置する。
    2. 本アセットの 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.conftarget の値としてデフォルトで log-fluentd が指定されているがこれは {Fluentd SideAppが存在するワークスペース名}-{Fluentd SideAppのID} である。
    3. デプロイ後、 単体での動作確認 と同様に、OpenSearchダッシュボードからインデックスパターンやスナップショットの設定を行う。
    4. 再度OpenSearchダッシュボードのメニューのDiscoverを開くと、ログを確認できる。

関連情報