Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Oracle Cloud > 【Oracle Cloud】ログ・アナリティクスに各種ログを転送する

【Oracle Cloud】ログ・アナリティクスに各種ログを転送する

ブログ
Oracle Cloud
2023.06.22

皆さま、こんにちは!y.takanashiです。

今回はOCIでログ・アナリティクスに、各種ログを転送する方法についてご紹介します。


今回やりたいこと

エラー等が発生した場合、サーバやWAF、ロード・バランサ等の各OCIサービスはログを生成し、それらのログを分析することで問題の特定や解決に役立ちます。

しかし、サーバのログはOSにログインしてログ・ファイルを確認する必要があり、WAFやロード・バランサ等の各OCIサービスのログは、OCIコンソール画面の「ロギング」から確認できますが、2週間以内に収集されたログしか検索できない事や、特定の文字列を引っかけて検索できない等の制約があります。

そこでOCIサービスである「ログ・アナリティクス」を使用して、OCIコンソール画面上でログをグラフィカルに表示し、分析を容易にする方法についてご紹介します。

※ログ・アナリティクスの詳細な分析方法については、以下の記事をご覧ください。

Cloudiiブログ - 「【Oracle Cloud】ログ・アナリティクスでログを詳しく分析する」

また今回使用するOCIサービスの詳細については、以下の公式ドキュメントをご覧ください。

「ロギングの概要」

「サービス・コネクタ・ハブの概要」

「ログ・アナリティクスについて」


OCIサービスのログの設定

OCIサービスのログを、ログ・アナリティクスに転送して表示したい場合、以下の図のようにサービス・コネクタ・ハブを介して設定を行う必要があります。

ここではWAFを例にして、以下の手順でOCIサービスのログの設定を行います。

1.IAMポリシーの設定
    ↓
2.ログ・グループを作成
    ↓
3.WAFログの有効化
    ↓
4.サービス・コネクタ・ハブの作成
    ↓
5.ログ・アナリティクス内でログを確認


IAMポリシーの設定

まず最初にIAMポリシーの設定を行います。

ロギングやログ・アナリティクスを利用するためには、以下のIAMポリシーによってアクセス権限が付与されている必要があります。

1.ロギングを使用するためのポリシー
allow group to MANAGE logging-family in tenancy/compartment <コンパートメント名>

2.ログ・アナリティクスをコンパートメント内で使用を許可するポリシー
allow service loganalytics to READ loganalytics-features-family in tenancy
allow service loganalytics to {LOG_ANALYTICS_LIFECYCLE_INSPECT, LOG_ANALYTICS_LIFECYCLE_READ} in tenancy
allow service loganalytics to MANAGE cloud-events-rule in tenancy/compartment <コンパートメント名>
allow service loganalytics to READ compartments in tenancy

3.ユーザーがログ・アナリティクスを使用するためのポリシー
allow group to READ compartments in tenancy
allow group to MANAGE loganalytics-features-family in tenancy
allow group to MANAGE loganalytics-resources-family in tenancy/compartment <コンパートメント名>

4.サービス・コネクタ・ハブを使用するためのポリシー
allow group to MANAGE serviceconnectors in tenancy/compartment <コンパートメント名>

※管理者権限を持つユーザーの場合、IAMポリシーは「2.ログ・アナリティクスをコンパートメント内で使用を許可するポリシー」のみで、他のポリシーの作成は不要となります。


ログ・グループの作成

次にログ・グループの作成を行います。

OCIサービスのログをログ・アナリティクスに転送して表示したい場合、ロギングおよびログ・アナリティクス内でログ・グループの作成を行う必要があります。

最初にロギング内で使用するログ・グループを作成する方法をご紹介します。

OCIコンソール画面のナビゲーションメニューから「監視および管理」→ロギング内の「ログ・グループ」を選択します。

ログ・グループの作成」からグループ名(ここでは「loggroup」)と説明(任意)を入力、「作成」を選択します。

入力後に詳細画面が表示され、ロギング用のログ・グループの作成は完了となります。

同様にログ・アナリティクス内で使用するログ・グループの作成も行います。

OCIコンソール画面のナビゲーションメニューの「監視および管理」→ログ・アナリティクス内の「管理」を選択します。

ログ・アナリティクスの管理画面にある「ログ・グループ」の「ログ・グループの作成」からグループ名(ここでは「loganagroup」)と説明(任意)を入力、「作成」を選択します。

入力後に詳細画面が表示され、ログ・アナリティクス用のログ・グループの作成は完了となります。


WAFログの有効化

続いて、WAFログの収集を有効にする手順をご紹介します。

WAFの詳細画面にある「ファイアウォール」から、ログを収集したいファイアウォール(ここでは「webappfirewall」)を選択します。

ファイアウォールの詳細画面の「ログ」から「有効」に変更にした後、以下の項目の入力を行います。

  • コンパートメント
  • ログ・グループ
    ※ロギングで作成したログ・グループを選択
  • ログ名
  • ログの保持期間
    ※最大6ヶ月有効です。

ステータスが「作成中」→「アクティブ」に変われば、WAFログの有効化は完了となります。


サービス・コネクタ・ハブの作成

最後にサービス・コネクタ・ハブを作成して、WAFログをログ・アナリティクスに転送する設定を行います。

OCIコンソール画面のナビゲーションメニューから「監視および管理」→ロギング内の「サービス・コネクタ」を選択します。

サービス・コネクタの作成」から以下の項目を入力、「作成」を選択します。

  • コネクタ名
  • 説明
  • サービス・コネクタの構成
    • ソース(ロギングを指定)
    • ターゲット:(ログ・アナリティクスを指定)
  • ソースの構成
    • ログ・グループ(ロギング)
    • ログ
  • ターゲットの構成
    • ログ・グループ(ログ・アナリティクス)
  • ※その他の項目は全て空白で問題ないです。

ログをサービス・コネクタ・ハブを介してログ・アナリティクスに転送したい場合、以下のポリシーが必要となります。

allow any-user to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment id <コンパートメントのOCID> where all {request.principal.type='serviceconnector', target.loganalytics-log-group.id='<ログ・アナリティクスのグループのOCID>', request.principal.compartment.id='<コンパートメントのOCID>'}

※サービス・コネクタ・ハブを作成する際に、以下の赤枠にある「作成」からポリシーを自動的に作成することができます。

入力後に詳細画面が表示され、サービス・コネクタ・ハブの作成は完了となります。


ログ・エクスプローラから設定したログの確認

設定完了後、ログ・アナリティクスの画面上でWAFログが表示されているか確認を行います。

OCIコンソール画面のナビゲーションメニューの「監視および管理」→ログ・アナリティクス内の「ログ・エクスプローラ」を選択します。

設定完了から1分程度で、ログ・エクスプローラからログ・アナリティクスに転送したログを確認することができます。

OCIサービスのログを、ログ・アナリティクスに転送する方法についての説明は以上となります。


サーバのログの設定

ここではLinuxのサーバを例にして、以下の手順でサーバのログの設定を行います。

1.IAMポリシーの設定
    
2.Oracle Cloud Agentプラグインの有効化
    
3.ログ・アナリティクス内でログ・グループを作成
※「2.2 ログ・グループの作成」と同じ方法で作成しますので、ここでの説明は割愛します。
 (ここでは「logcomputegroup」というグループを使用します。)
    
4.エンティティを作成
    ↓
5.ログ・ソースの設定
※今回はsecureログを対象に設定を行います。
    
6.ログ・ソースとエンティティの関連付け
    
7.ログ・エクスプローラから設定したログの確認

※なお、今回対象となるsecureログはLinuxの場合、「/var/log/secure」に相当します。

ログ・エクスプローラに転送されたログの「Log Origin」に対応するパスが記載されております。

またsecureログは、設定ファイルである「/etc/rsyslog」の定義次第で、ログが生成されない場合がありますのでご了承ください。


IAMポリシーの設定

まず最初にIAMポリシーの設定を行います。

ポリシーを作成する前に、以下の動的グループを作成する必要があります。

ALL {resource.type='managementagent', resource.compartment.id='<コンパートメントのOCID>'}

動的グループの作成後、「2.1 IAMポリシーの作成」に記載のポリシーに加えて、以下のポリシーを追加作成する必要があります。

1.管理エージェントを使用するためのポリシー
allow group <グループ名> to MANAGE management-agents in tenancy/compartment <コンパートメント名>
allow group <グループ名> to MANAGE management-agent-install-keys in tenancy
allow group <グループ名> to READ metrics in tenancy/compartment <コンパートメント名>
allow group <グループ名> to READ users in tenancy

2.管理エージェントがログ収集およびメトリック生成を有効にするポリシー
allow dynamic-group <動的グループ名> to USE metrics in tenancy
allow dynamic-group <動的グループ名> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in tenancy

※管理者権限を持つユーザーの場合、IAMポリシーは「2.管理エージェントがログ収集およびメトリック生成を有効にするポリシー」のみ作成を行い、「1.管理エージェントを使用するためのポリシー」の作成は不要となります。


Oracle Cloud Agentプラグインの有効化

次にOracle Cloud Agentプラグインの有効化を行います。

方法として、サーバの詳細画面からの有効化と、手動で管理エージェントをインストールする方法がありますが、ここではサーバの詳細画面からの有効化する方法についてご紹介します。

※手動で管理エージェントをインストールする方法については以下の資料をご覧ください。

 OCI公式ドキュメント - 「管理エージェントのインストール」

対象サーバの詳細画面にある「Oracle Cloudエージェント」内の「管理エージェント」のプラグインを有効にします。

有効化後、OCIコンソール画面のナビゲーションメニューの「監視および管理」→管理エージェント内の「エージェント」を選択します。

有効化したサーバの管理エージェントは、約3分後に自動的に作成され、管理エージェント一覧に表示されます。

※管理エージェントはデフォルトで「Agent(サーバ名)」という名前で自動的に作成されますが、後でエージェント名を変更することも可能です。


エンティティを作成

ログ・アナリティクスではサーバ等のリソースと、ログ・ソース(以降で説明)を直接的に関連付けすることはできません。

代わりに「エンティティ」をログ・ソースと関連付けて、ログ・アナリティクス上でログをグラフィカルに表示させることができます。

ログ・アナリティクスの管理画面にある「エンティティ」から「エンティティの作成」を選択し、以下の項目を入力します。

  • エンティティ・タイプ
    ※Linuxサーバを使用しているので、Host(Linux)を選択
  • 名前(ここでは「compute_entity」)
  • 管理エージェント
    ※プラグインを有効化した管理エージェントを選択

エンティティ一覧に、作成したエンティティが追加されます。


ログ・ソースの設定

同様に、ログの種類を定義付けるログ・ソースの設定も行います。

ログ・アナリティクスの管理画面にある「ソース」を選択することでソースの一覧が表示されます。

しかし、多くのソースが存在するため、特定のソースを見つけるのに時間がかかることがあります。

そこで、右上の検索窓から任意の文字列(ここでは「Linux」)と入力し、検索を行います。

すると、関連するソースが絞り込まれ、その中から目的のソース(ここでは「Linux Secure Logs」)を選択することができます。

選択後、作成したエンティティと関連付けを行う必要があります。

関連付けられていないエンティティ」から、エンティティ(ここでは「compute_entity」)を選択し、「アソシエーションの追加」を行います。

追加後、ログを格納するログ・グループの選択画面が表示されます。

関連付けたいログ・グループ(ここでは「logcomputegroup」)を選択し、「送信」をします。

関連エンティティに表示され、ステータスが「保留中」→「成功」に変われば関連付けは完了です。


エージェント収集警告の確認

最後に、対象のログを継続的に収集できるかどうかの確認を行います。

ログ・アナリティクスの管理画面にある「エージェント収集警告」から、警告の有無を確認します。

ここでは以下の警告の解消方法についてご紹介します。

・「File not found ...」
・「Cannot read file ...」

警告メッセージが「File not found ...」と表示された場合

警告メッセージが「File not found ...」と表示された場合、OS内に設定したログ・ファイルが見つからないことを意味します。

ここでの解消方法として、以下が挙げられます。

1.サーバのOSにログインして、対象ファイルを作成する
2.ログ・ソースから対象ファイルの収集を除外する

ソース・パターンが「var/log/auth.log」と表示されていますが、今回のログ・ファイルの収集は「/var/log/secure」のみで、auth.logファイルは不要となります。

そこで今回は「2.ログ・ソースから対象ファイルの収集を除外する」方法についてご紹介します。

ログ・ソースの詳細画面にある「編集」から、対象ログ(ここでは「/var/log/auth.log」)の有効部分のチェックを外し、「変更の保存」を選択します。


変更が完了すると、画面右上に編集完了のメッセージが表示されます。

これにより、設定が正常に更新されたことが示されます。

警告メッセージが「Cannot read file...」と表示された場合

警告メッセージが「Cannot read file ...」と表示された場合、対象のログ・ファイルが権限不足により読み取れないことを意味します。

サーバのOSにログインした後、以下のコマンドを使用して管理エージェントのログ・ファイルの権限を確認します。

sudo -u <管理エージェント・ユーザー> /bin/bash -c "cat <ログ・ファイルの完全パス>"

※管理エージェント・ユーザーはOracle Cloud Agentでプラグインを有効にした場合「oracle-cloud-agent」、手動で管理エージェントをインストールした場合は「mgmt_agent」です。

 ここでは管理エージェント・ユーザーは「oracle-cloud-agent」、対象ログ・ファイルは「/var/log/secure」を指定します。

コマンドの実行後、「Permission denied」というエラーが表示されます。


このように管理エージェント・ユーザーがログ・ファイルを読み取れない場合は、ログ・ファイルを管理エージェント・ユーザーに対して読み取り可能にするための設定が必要です。

対象ログ・ファイルの権限を確認すると、所有者、所有グループともに「opc」が設定されていることがわかります。

ここでは以下のコマンドを使用して、管理エージェント・ユーザーを所有グループに追加します。

usermod -a -G <ログ・ファイルの所有者のグループ> <管理エージェント・ユーザー>

その後、対象ログ・ファイルの所有グループの読み取り権限を追加します。

chmod 640 <ログ・ファイルの所有者の完全パス>

設定後、同じコマンドを使用して管理エージェント・ユーザーが対象のログ・ファイルを読み取ることができるかどうかを確認してみると、アクセス可能であることがわかります。

5分後にコンソール画面に戻り、再度エージェント収集警告の画面を開くと、先ほどまで表示されていた警告が自動的に削除されていることが確認できます。

ちなみに、管理エージェントのログ・ファイルの配置場所は以下となります。

・Oracle Cloud Agent プラグインを使用している場合
 /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/log/
・Oracle Cloud Agent プラグインを使用している場合
 /opt/oracle/mgmt_agent/agent_inst/log/
※主に以下のログファイルがトラブルシューティングに役立ちます。
 mgmt_agent.log
 mgmt_agent_client.log
 mgmt_agent_logan.log


ログ・エクスプローラから設定したログの確認

警告削除後、ログ・エクスプローラからログ・アナリティクスに転送したログを確認することができます。

サーバのログを、ログ・アナリティクスに転送する方法についての説明は以上となります。

なお「1 今回やりたいこと」でも記載しましたが、ログ・アナリティクスの詳細な分析方法については近日中に投稿する予定ですので、しばしお待ちいただければと思います。


まとめ

ログ・アナリティクスを使用することで、転送したログをグラフィカルに表示することができます。

しかし、ログ・アナリティクスは10GBを超えた場合に課金が発生しますので、本番環境での運用時にはログの容量を適切に管理する必要があります。

※ロギングも同様に、10GBまでは無償で使用することができます。

料金以外にも機能の制約が存在するため、運用する際にはこれらの制約を十分に調査しておくことも必要です。

以下がロギングとログ・アナリティクスの機能比較です。

引用元:https://speakerdeck.com/oracle4engineer/oracle-cloud-observability-and-management-platform-roguguan-li-sabisu?slide=39
引用元:https://speakerdeck.com/oracle4engineer/oracle-cloud-observability-and-management-platform-roguguan-li-sabisu?slide=40

上記以外にも、公式ドキュメントやサポート情報を使用して制約を確認することをおすすめします。

※ロギングとログ・アナリティクスの公式ドキュメントは「1 今回やりたいこと」に記載のものを使用しましょう。

以上となります。

この記事を通じて読者の皆様の問題解決の一助となれば幸いです。

最後まで読んで頂き、ありがとうございましたm( )m


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。