皆さま、こんにちは!y.takanashiです。
今回はOCI ロギングで、収集したログをカスタム・ログとしてOCIコンソール画面に表示する方法についてご紹介します。
目次
実行環境
- OS:Oracle Linux 9
※他のLinux OS でも同様の流れで設定可能です。
Windows OS で設定を行う場合は、以下のドキュメントをご覧ください。
OCI公式ドキュメント - 「ログの作成」 - シェイプ・タイプ:VM.Standard.E5.Flex
- 文字コード:UTF-8
作業手順
- カスタム・ログの作成
- IAMユーザー、IAMグループ、ポリシーの作成
- RPMファイルの取得
- エージェントの導入
- 認証情報の配置
- カスタム・ログの作成
- カスタム・ログの設定変更
- 設定変更
- 動作確認
カスタム・ログの作成
IAMユーザー、IAMグループ、ポリシーの作成
最初にIAMユーザー、IAMグループ、ポリシーの作成を行います。
IAMユーザーは、サーバに認証情報を渡す際に必要となる、APIキーを登録するために作成します。
以下のドキュメントを参考にユーザー作成を行い、ここではユーザー名を「logging-user」とします。
作成後、サーバに認証情報を登録するためのAPIキーを生成する必要があります。
ユーザー詳細画面の「APIキー」から「APIキーの追加」を選択します。
ここでは「APIキー・ペアの生成」を選択、秘密キーと公開キーのダウンロードを行い、「追加」を選択します。
※「認証情報の配置」でAPIキー・ペアを使用しますので内容を控えます。
追加後、以下の構成ファイルが生成されますので、「コピー」を選択して内容を控えます。
※構成ファイルも「認証情報の配置」で使用します。
次にIAMグループの作成を行います。
IAMグループはログのエージェントを作成する際に、「ホスト・グループ」という項目があり、今回はユーザー・グループを指定するため、参照元のIAMグループの作成を行う必要があります。
ここではグループ名を「logging-group」とし、以下のドキュメントを参考に作成を行った後、IAMユーザーの登録も行います。
ログのエージェントを作成する際に必要となるホスト・グループについて、ユーザー・グループ以外にも動的グループを選択することができます。
動的グループを選択する場合は、動的グループに以下のルールを付与することで、ホスト・グループとして使用可能となります。
instance.compartment.id = ‘<サーバが配置されているコンパートメントのOCID>’
ホスト・グループで指定可能である動的グループとユーザー・グループのユースケースについて、以下のフェーズで使用することができます。
- 動的グループ
認証情報の登録作業が不要となり、設定を簡略化する場合にお勧めです。 - ユーザー・グループ(IAMグループ)
拡張性が高いのが特徴で、コンピュート・インスタンスだけでなく、Base DBも登録可能です。
IAMユーザーとIAMグループの作成後、カスタム・ログ用のポリシーも作成する必要があります。
ここでは以下のドキュメントを参考にしてポリシーを作成します。
Allow group logging-group to use log-content in tenancy
※このポリシーはテナンシレベルでアクセス制御を行なっており、
コンパートメント毎に制御を行う場合は「tenancy」をコンパートメント名に置き換えてください。
IAMユーザーとIAMグループ、ポリシーの作成は以上です。
RPMファイルの取得
上記のリソースを作成後、エージェント用のRPMファイルの取得を行います。
RPMファイルの取得を行う前に、RPMファイルが必要か否かの事前確認を実行します。
対象のコンピュート・インスタンス、もしくはBase DBのOSにログイン後、以下のコマンドを実行して確認します。
sudo systemctl status unified-monitoring-agent.service
ステータスが「active(running)」状態の場合、エージェントが導入済でRPMファイルのインストールは不要となります。
※エージェントを既に導入している場合は「認証情報の配置」から操作を行なってください。
以下のメッセージが表示された場合は、エージェントがインストールされておらず、RPMファイルの取得が必要です。
RPMファイルの取得はociコマンドを使用するため、クラウド・シェルもしくはOCI CLIを使用して取得を行います。
クラウド・シェルを使用する場合は、OCI CLIのセットアップ作業が不要となるため、今回はクラウド・シェル上でRPMファイルの取得を行います。
クラウド・シェルに接続後、以下のコマンドで取得可能なRPMファイル一覧を表示します。
oci os object list --namespace axmjwnk4dzjv --bucket-name unified-monitoring-agent-ol-bucket --all | grep name
※ネームスペース名とバケット名の変更は不要です。
取得するRPMファイルについては、対象リソースのOSやシェイプ・タイプによって選定する必要があります。
今回はunified-monitoring-agent-ol-8-0.1.25.rpmを使用します。
以下のコマンドでRPMファイルの取得を行います。
oci os object get --namespace axmjwnk4dzjv --bucket-name unified-monitoring-agent-ol-bucket --name unified-monitoring-agent-ol-8-0.1.25.rpm --file unified-monitoring-agent-ol-8-0.1.25.rpm --profile DEFAULT
※"--profile"はクラウド・シェル内の「/etc/config」の定義した内容に応じて変更する必要があります。
RPMファイルの取得後、右上の歯車アイコンから「ダウンロード」を選択してRPMファイルのダウンロードを行います。
ダウンロード完了後は右上のポップアップが表示されます。
その後、RPMファイルを対象のリソースに転送し、この作業は完了となります。
エージェントの導入
RPMファイルを対象のリソースに転送した後、再びOSにログインし、以下のコマンドを使用してRPMファイルをインストールし、エージェントの導入を行います。
sudo dnf install -y unified-monitoring-agent-ol-8-0.1.25.rpm
インストール完了後、以下のコマンドでunified-monitoring-agent.serviceのステータスを確認し、ステータスが「active(running)」状態になれば作業は完了です。
sudo systemctl status unified-monitoring-agent.service
認証情報の配置
次に「IAMユーザーの作成」時に取得した構成ファイルとAPIキー・ペアの配置を行います。
以下のドキュメントを参考に、ここでは /etc/unified-monitoring-agent 配下に.ociディレクトリを作成し、各ファイルを以下の形で配置します。
「APIキー・ペアの生成」で作成した秘密キーは「oci_api_key.pem」として、公開キーは「oci_api_key_public.pem」として格納しております。
「config」は構成ファイルの内容を元に、「key_file」の箇所を秘密キーがあるパスに書き換えております。
カスタム・ログの作成
エージェントの導入と認証情報の配置後、OCIコンソール画面でカスタム・ログの作成を行います。
OCIコンソール画面左上のナビゲーション・メニューから「監視および管理」→「ログ」を選択します。
「カスタム・ログの作成」から以下の項目を入力を行い、ログを作成します。
- カスタム・ログ名:任意(ここでは「logging-test」)
- ログ・グループ:任意(ここでは「logging-group2」
※ログ・グループが未作成の場合、「新規グループの作成」から作成を行う必要があります。
カスタム・ログの作成後、エージェントの作成も行います。
以下の項目を入力後、「作成」を選択します。
- 構成名、説明:任意(ここでは「logging-agent」)
- ホスト・グループ
- グループ・タイプ:ユーザー・グループ
- グループ:任意(ここでは「logging-group」)
- エージェント構成
- 入力タイプ:ログ・パス
- 名前の入力:任意(ここでは「logging-all」)
- ファイル・パス:任意(ここでは /var/log/* )
作成後、カスタム・ログを選択することで詳細画面が表示されます。
カスタム・ログの作成後に対象ログ(ここでは/var/log 配下の全ファイル )の収集が開始され、5分から10分程度経過した後に収集したログを確認できます。
カスタム・ログの作成については以上です。
カスタム・ログの設定変更
設定変更
ここでは収集するログのファイル・パスを「/var/log 配下の全ファイル」から「/var/log/messages」に変更し、手動で設定内容を更新する手順についてご紹介します。
エージェントの「編集」から以下の項目を変更、「変更の保存」を選択します。
- ログ名:「logging-messages」
- ファイル・パス:「/var/log/messages」
エージェントのステータスが「更新中」→「アクティブ」に遷移後、設定が変更されます。
動作確認
通常はカスタム・ログ上で設定変更後、OS側のエージェントが変更を検知をして設定内容を自動更新します。
しかし、OS側のエージェントはマネージドで動いており、自動更新に30分以上かかる場合があるため、今回は手動で設定内容を更新します。
以下がOS側のエージェントの主なコンポーネント一覧です。
- /opt/unified-monitoring-agent/etc/systemd/unified-monitoring-agent.service:メインのエージェント・サービス
- /opt/unified-monitoring-agent/etc/systemd/unified-monitoring-agent_config_downloader.service:構成自動アップデータ・サービス
- unified-monitoring-agent_config_downloader.timer:指定された(ランダム化された)間隔で自動ダウンローダ・サービスをトリガー
- unified-monitoring-agent_restarter.path:変更が検出された場合、エージェントによる構成のリロードをトリガー
今回はunified-monitoring-agent.serviceとunified-monitoring-agent_config_downloader.serviceの手動更新を行います。
対象リソースのOSから以下のコマンドで、unified-monitoring-agent_config_downloader.serviceの起動を行います。
sudo systemctl start unified-monitoring-agent_config_downloader.service
※起動完了までに最大30秒以上かかる場合があります。
その後に以下のコマンドで、unified-monitoring-agent_config_downloader.serviceのログを確認します。
journalctl -u unified-monitoring-agent_config_downloader.service
unified-monitoring-agent_config_downloader.serviceに、以下のログが出力されている事を確認します。
- <source>内のpath:収集対象のファイル・パス
※設定変更後のファイル・パスになっている事を確認 - fluentd outputが"true":Fluentd(※後述)への出力が完了
※"false"と表示される場合は、エージェント構成の設定が間違っている可能性が高く、再度構成の見直しを推奨します。
次に以下のコマンドで、Fluentdの設定内容を確認します。
cat /etc/unified-monitoring-agent/conf.d/fluentd_config/fluentd.conf
※Fluentdはログデータの収集、転送、処理を行うオープンソースのデータエージェントです。
unified-monitoring-agent_config_downloader.serviceと同様に、<source>内の「path」が変更後のファイル・パスとして表示されることを確認します。
ファイル・パスの変更を確認後、以下のコマンドでunified-monitoring-agent.serviceの再起動を行った後、 以下のパスにあるunified-monitoring-agent のログを確認します。
sudo systemctl restart unified-monitoring-agent.service
/var/log/unified-monitoring-agent/unified-monitoring-agent.log
unified-monitoring-agent.logに、以下のログが出力されている事を確認します。
- file DEFAULT_CONFIG_FILE, <認証ファイルを格納しているパス>:認証情報が配置されているパスを表示
※ここでは「/etc/unified-monitoring-agent/.oci/config」を使用 - <source>内のpath:収集対象のファイル・パス
※設定変更後のファイル・パスになっている事を確認 - following tail of /var/log/messages:ファイル・パスで設定したログの収集を開始
上記のログを確認後、以下のコマンドで /var/log/messages にログを出力します。
logger "This is a test message."
再度、unified-monitoring-agent のログを表示、以下のログが出力されている事を確認します。
- put_logs request with log_object_id <収集したログのOCID>:収集したログをカスタム・ログに転送
- response 200 id:転送が成功
5分程度経過した後、カスタム・ログにloggerコマンドで出力したログが表示され、設定変更が完了します。
カスタム・ログの設定変更については以上となります。
まとめ
今回はOCI ロギングで、収集したログをカスタム・ログとしてOCIコンソール画面に表示する方法についてご紹介しました。
手順はやや煩雑ですが、上記の設定を実施することでOCIコンソール画面から収集したログを視覚的に表示できます。
上記の手順でOCIコンソール上でログを表示することができますが、検索できるログの範囲が収集から2週間以内に制約されており、また特定の文字列での検索が難しいといった制約が存在します。
ログの詳細な調査や分析が必要な場合は、OCIのログ・アナリティクスを活用することをお勧めします。
以前に当方でログ・アナリティクスに関する記事を執筆しており、参考として以下の記事をご覧いただければ幸いです。
Cloudiiブログ - 「【Oracle Cloud】ログ・アナリティクスに各種ログを転送する」
Cloudiiブログ - 「【Oracle Cloud】ログ・アナリティクスでログを詳しく分析する」
※ログ・アナリティクスは月間10GBまで無料で提供されていますが、10GBを超えると追加課金が発生します(2024年2月現在)。
そのため、定期的にログをパージ(削除)することをお勧めします。
以上となります。
この記事を通じて読者の皆様の問題解決の一助となれば幸いです。
最後まで読んで頂き、ありがとうございましたm(_ _)m