0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenShift on IBM CloudでIBM Cloud Logsのログをフィルタリングする方法

0
Posted at

はじめに

みなさん、こんにちは。
IBM Cloud Logsは、OpenShift / Kubernetes on IBM Cloudのログをまとめて収集・可視化できる便利なサービスです。

一方で、ログは出力量が多くなりやすく、取り込み量によってはコストの増加につながります。

そのため、必要なログを残しつつ、不要なログを抑えるフィルタリングは運用面だけでなくコスト最適化の観点でも重要です。

2026年3月時点では、OpenShift on IBM Cloud向けにLogging Agentのフィルタリング方法をまとめた日本語記事があまり見当たらなかったため、本記事で整理します。

IBM Cloud Logsの構成

OpenShiftのログをCloud Logsで管理する際はLogging Agentが必要です。

OpenShiftへDaemonSetでLogging Agent Podをデプロイし、各ノードからログを収集します。

下記のようなイメージです。
構成図.png

Logging AgentはOSSツールのFluent Bitがベースとなっており、Fluent Bitのログフィルタリング機能が利用できます

具体的には、次の2つの方法があります。

  1. Exclude Pathでログファイルを指定して除外

  2. フィルタ機能でログファイル内の内容をもとにログを除外

2の方法は複数のアプローチを提供しており、ユーザーが設定した詳細な条件に基づいてログのフィルタリングができますが、公式ドキュメントにIBMサポートの範囲外であることが明記されている点に注意が必要です。
本番環境で利用する場合は十分に検証した上でご利用ください。

一部機能の公式サポートについてFluent Bitプラグイン対応 | IBM Cloud 資料(「## プラグインは利用可能だが、直接はサポートされていない」項参照)

ちなみにFluent BitはCloud Native Computing Foundation(CNCF)のGraduated Projectとなっており、コンテナログ収集ツールの中では有名です。AWSのコンテナログ転送でも利用されています。

フィルタリングの方法

フィルタリングの設定方法は以下の2パターンの方法があります。

  • Logging AgentのHelmインストール時にlogs-values.yamlで設定

  • インストール後にConfigMapを編集して設定

どちらの方法も実態としてはFluent Bitの設定ファイルで設定します。

今回はHelmで検証した内容を解説します。

検証環境

今回の説明する内容の検証環境は以下の通りです。

  • Red Hat OpenShift on IBM Cloud (Infrastructure: VPC)

  • IBM Cloud Logs インスタンス

  • 対象のOpenShiftクラスターにOCコマンドが実行可能な踏み台サーバ

    • 上記サーバにHelmをインストール

    ※本記事ではHelmインストールについては割愛します。

手順1. Exclude Pathでログファイルを指定して除外

手順フローは以下の通り、

ワーカーノードにoc debugで接続

除外したいログファイルのパスを確認

logs-values.yamlにExclude Pathを設定

デフォルトでは、ワーカーノードの/var/log/containers配下の.logファイルがExclude Pathの対象となります。

logs-values.yamlの設定前に/var/log/containers配下の不要なコンテナログの名前を確認する必要があります。

確認した内容はlogs-values.yamlに追記します。

Exclude Pathの設定例は以下の通りです。

logs-values.yaml
metadata:
  name: "logs-agent"
image:
  version: "1.8.0"  # required
clusterName:  "<OpenShift Cluster Name>"  
env:
  ingestionHost: "<Cloud Logs Instance Ingress Endpoint>"
  ingestionPort: "443" #setting using port number
  iamMode: "IAMAPIKey" #setting Authentication mode
scc:
  # true here enables creation of Security Context Constraints in Openshift
  create: true

# comma separated list, for example “/var/log/abc/*.log,/var/log/xyz/*.log”
excludeLogSourcePaths: "/var/log/containers/aaa*.log,/var/log/containers/bbb*.log"

上記はyamlの最終行にExclude Pathを設定した例となります。ワイルドカードを利用してファイル名がaaaとbbbで始まるコンテナログファイルをすべて除外対象としています。

helmインストール後に設定の反映を確認したい場合はlogs-agentという名前のConfigMapのfluent-bit.yamlの内容を確認します。

手順2. フィルタ機能でログファイル内の内容をもとにログを除外

手順フローは以下の通り、

Cloud LogsのGUIにて除外したいログの内容や表示形式を確認。

logs-values.yamlにフィルタリングを設定

Fluent Bitのフィルタ機能は環境やケースに応じて使い分けが可能です。

今回はシンプルな条件で除外できるGrepをご紹介します。

GrepはPodやNamespace、ログレベルなど特定のフィールド値を指定して、ログが除外できます。

例えばNamespace単位でログを除外したい場合は下記のように記述します。

logs-values.yaml
metadata:
  name: ""logs-agent""
image:
  version: ""1.8.0""  # required
clusterName:  "<OpenShift Cluster Name>"  
env:
  ingestionHost: "<Cloud Logs Instance Ingress Endpoint>"
  ingestionPort: "443" #setting using port number
  iamMode: "IAMAPIKey" #setting Authentication mode
scc:
  # true here enables creation of Security Context Constraints in Openshift
  create: true

additionalFilters:
  - name: grep
    match: "kube.*"
    exclude: "$kubernetes['namespace_name'] ^prod$"

この例ではNamespaceがprodのログを除外します。

設定の詳細は下記の通りです。

nameは利用するフィルタを指定します。

matchはタグを指定します。フィルタ機能はここで定義したタグにマッチしたレコードに適用されます。上記例はkube.で始まるタグにフィルタを適用するという意味です。

excludeは指定したフィールド値に一致するログを除外する設定です。ここではkubernetes.namespace_name=prodのログを除外しています。

手順1と同様にhelmインストール後に設定の反映を確認したい場合はlogs-agentという名前のConfigMapのfluent-bit.yamlの内容を確認します。

また、Grepでは、andやorなど簡単な条件を指定したログ除外も可能です。

logs-values.yamlの一部抜粋
additionalFilters:
  - name: grep
    match: "*"
    logical_op: AND
    exclude:
      - "$kubernetes['container_name'] ^app$"
      - "log Information"

上記例ではコンテナ名appのログのうち、Informationという文字列を含むログを除外します。不要な定型ログを減らしたい場合に有効です。

手順フローにも書いていますが、ログの内容やタグはコンテナによってさまざまなため、除外前にログの出力形式や情報を確認することをお勧めします。

まとめ

IBM Cloud LogsのLogging Agentを利用してログ転送前にフィルタリングする方法を紹介しました。

Fluent Bitベースのフィルタ機能ではほかにも、ログ内容の書き換えや複雑な条件によるログの抽出などもでき、きめ細かなログ管理が可能です。

また、本記事では触れませんでしたがIBM Cloud Logs側でもTCO Optimizerやブロック・ルールを利用することでログの除外が可能です。

こちらも機会があれば記事にしたいですね。

それでは、また!

参考文献

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?