Kubernetes(k8s) と PLURA

PLURA

0. 概要

PLURAは以下を対象にログ生成・収集・分析および異常検知を提供する統合セキュリティイベント管理(SIEM)サービスです。

  • オペレーティングシステム: イベントログ、syslog、auditlog
  • ウェブサーバー: アクセスログ (リクエスト本文 & レスポンス本文含む)
  • アプリケーション: すべての種類のテキストファイル
  • ネットワーク製品: syslog
  • 情報保護製品: syslog

このドキュメントでは、Kubernetes環境でPLURAを使用してコンテナから生成されるアプリケーションログ、Syslog、ウェブログを収集および分析する方法を説明します。


1. 前提条件

本ドキュメントで扱わない内容:

  • コントローラー: DaemonSet, StatefulSet
  • Nodeレベルのログ管理
  • PLURAエージェントのコンテナイメージ

Kubernetesは環境に応じてさまざまな構成が可能であり、それぞれの環境に適した設定が必要です。
そのため、本ドキュメントは一般的な構成例に基づいて記載されています。


2. インストール

1つのMaster-Nodeと2つのWorker-Nodeで構成されたKubernetes環境で、各Worker-NodeにPLURAをインストールします。

k8s_plura_drawio


3. Kubernetes アプリケーションログ収集例

nginx-deployment.yml

以下は、Worker-Nodeで実行されるnginxオブジェクトの構成ファイルの例です。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80

ログパス

  • nginxのアクセスログパス: /var/log/containers (元のパス: /var/log/pods)
  • PLURAを利用したアプリケーションログ収集: 構成ファイルでログパスを再定義し、収集パスに追加します。

14

PLURAでログを確認

nginxのアクセスログをPLURAに登録し、Worker-Nodeで発生するログをPLURAアプリケーションログで確認します。

31
32


4. Kubernetes Syslog収集例

必須項目と手順

  1. HostとContainerの/var/log/pluraディレクトリを共有
  2. Worker NodeにPLCをインストール
  3. 各Podでrsyslogをインストールし、rsyslog.confを設定
  4. PLCを設定

内部IP確認

各Pod内にアクセスし、内部IPを確認します。

pod_internal_ip

rsyslog.conf設定

  • Kernel Log無効化およびSyslog送信サーバーIP設定:
... (省略)
# module(load="imklog") // Kernel Log収集モジュール無効化
... (省略)
*.info @10.244.2.1
  • rsyslogサービスを再起動:
service rsyslog restart

Worker Nodeの/var/log/pluraディレクトリにceelog-{内部IP}.logファイルが生成されていることを確認します。

varlogplura_ceelog


5. Kubernetes ウェブログ収集例

注意事項

  1. HostとContainerの/var/log/pluraディレクトリを共有
  2. 各Nodeで実行されるnginx構成ファイルディレクトリにplura.confをコピー (/etc/nginx/nginx.confを参照)
  3. modpluraを設定

plura_docker.yml

以下はWorker Nodeで実行されるnginxオブジェクトの構成ファイル例です。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      volumes:
        - name: plura
          hostPath:
            path: /var/log/plura
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80
          volumeMounts:
            - name: plura
              mountPath: /var/log/plura
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxUnavailable: 1

PLURAでのログ有効化

  • PLURA Webログ収集パスに再定義されたnginxログパスを追加: /var/log/plura/weblog.log
  • Webログ収集を有効化:
    PLURA.io > システム管理 > Worker Node設定 > Webログ収集 On

modplura_enable

これでWorker Nodeで発生するnginxのアクセスログをPLURAウェブログで確認できます。

k8s_plura_weblog-1024x514


環境情報

Host OS Role IP (NAT) IP (Host-Only-Network)
k8s-master Rocky 8.6 Master-Node 172.16.14.89 192.168.100.201
k8s-worker1 Rocky 8.6 Worker-Node-1 172.16.14.90 192.168.100.202
k8s-worker2 Rocky 8.6 Worker-Node-2 172.16.14.91 192.168.100.203

Kubernetes構成

  • Version: 1.26.2
  • CRI: containerd
  • CNI: flannel