1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OKE】 アプリケーションログをOCI Loggingで見てみる

Last updated at Posted at 2025-09-07

この記事で書いていること

この記事で書かないこと

参考記事

  • 公式ドキュメント

  • チュートリアル
    今回はこのチュートリアルを実施した上で、検索周りを検証してます。

OCI LoggingがOKEのアプリケーションログを取得する仕組み

image.png

頑張って絵で表現しようとしたのですが、絵心がなく言葉で補足します。

  • WorkerNodeにはもともとOracle Cloud Agentが入っており、このagentが適宜Loggingにログを飛ばします
  • では、そのagentがどこのログを連携するかというと、Loggingのカスタムログでその設定をするのですが、今回はアプリケーションログが吐かれる/var/log/containers/*を指定してます
  • 認証認可に関しては、動的グループとポリシーで実装してます。ざっくり言うと、Loggingとインスタンス(WorlerNode)の連携を許可してます。(AWSのIAMロールを想像するとしっくりくるかもしれません)
  • 今回動的グループは、とあるコンパートメントに配置されているすべてのインスタンスにしているため、OKE以外の通常のインスタンスもログ取得の対象になります。
  • そのためカスタムログの設定で見にいくパスを指定したり、Logging検索でPodを指定したりしてます。

上記の説明で、物足りない方は参考記事においた、公式ドキュメントをご確認ください。

設定

以下のチュートリアルを実施しているだけなので、この記事では設定した内容だけ簡易的に記載します。
Oracle Container Engine for Kubernetes(OKE)でサンプルマイクロサービスアプリケーションをデプロイしてOCIのオブザバビリティサービスを利用してみよう 3.Logging

1. 動的グループの作成

以下のような動的グループを作成しました。
チュートリアルと違う点としては、instance.compartment.idをテナンシOCIDではなく、コンパートメントOCID を記載してます。
image.png

2. ポリシー設定

以下のようなポリシーをルートコンパートメントに作成しました。
image.png

3. カスタムログの設定

3-1. ログ

  • worker-nodeというカスタムログを作成
  • ロググループはlogging-dynamic-groupを新規作成して指定

image.png

  • エージェントはnode_agentを新規作成

image.png

3-2. エージェント構成

  • エージェントでは、/var/log/containers/*配下のログを取得するよう設定
    image.png

3-3. 設定後

設定のち、数分するとログの[ログの探索]タブから、アプリケーションログが見えるようになります。
image.png

検証

このままだと/var/log/containers/*にあるすべてのログが表示されているため、ある程度絞って表示するにはどうすればいいか検証してきたいと思います。

OCI Loggingの検索でログを見る方法

先ほどは作成したログから[ログの探索]タブでログを見てましたが、検索画面から改めて今回のログを見たいと思います。

ロギングの[検索]タブを押すと、今いるコンパートメントのログが表示されます。

image.png

このままだと、コンパートメント配下のすべてのログが表示されるため、今回作成したログに絞って表示します。

  • まずは、[検索するログの選択]で選択されている項目の×をクリック
    image.png

  • 選択されているログ×をクリックして、削除
    image.png

  • コンパートメントから今回作成した ログ・グループ > ログ と選択し、最後はマークを押して選択する
    image.png

  • 今回作成したカスタムログだけが、選択されているのを確認して[続行]をクリック
    image.png

  • そしたら、アプリケーションログのみが検索結果として表示されます。
    image.png

  • ちなみに各ログのimage.pngマークをクリックすると、実際のログがJSON形式で確認できます。messageがアプリケーションログにあたり、taild_pathが見に行っているログのパスです。表示が途中で切れてますが、/var/log/containers/*xxxxxxx.logファイルを見に行ってます。
    image.png

Pod毎に表示するログを絞る方法

現在は動的グループで合致するインスタンスの/var/log/containers/*のログをすべて取ってきているため、Pod単位で表示を絞ります。

  • [拡張モードの表示] をクリック
    image.png

  • すると、GUIベースの検索画面ではなく、CUIベースの検索画面がになり、現在の構文が表示されます。ちなみに今はログが488件表示されているので、Podでログを絞って、ログの件数が少なくなることを確認します。
    image.png

  • 問い合わせにWhere句を足して、見に行くログファイルを指定します。すると、検索結果も96件に絞れました。(補足ですが、Pod単位でログファイルが作成され、ログファイル名にPod名が含まれます。)
    image.png

さらにメッセージ内容で表示するログを絞る方法

  • 問い合わせにWhere句を足してINFOの文言が入るメッセージを取得するようを指定します。すると、検索結果も48件に絞れました。
    image.png

考察

もともとはPod単位でログを見るのはどうすればいいかを考えたのがきっかけでした。
最初はPod単位でカスタムログを作成することも考えたのですが、Pod名が変わったり、Pod数の数だけ設定を入れ込まないといけないので、現実的ではないなと。。。
そのため/var/log/containers/*ひとくくりでログを取得したのちに、検索クエリで工夫して、Pod単位でログが見れるか検証しました。
namespace毎にカスタムログを作成するという案もいただいたので、それはどこかで検証したいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?