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をインストールします。
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を利用したアプリケーションログ収集: 構成ファイルでログパスを再定義し、収集パスに追加します。
PLURAでログを確認
nginxのアクセスログをPLURAに登録し、Worker-Nodeで発生するログをPLURAアプリケーションログで確認します。
4. Kubernetes Syslog収集例
必須項目と手順
- HostとContainerの
/var/log/plura
ディレクトリを共有 - Worker NodeにPLCをインストール
- 各Podでrsyslogをインストールし、
rsyslog.conf
を設定 - PLCを設定
内部IP確認
各Pod内にアクセスし、内部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
ファイルが生成されていることを確認します。
5. Kubernetes ウェブログ収集例
注意事項
- HostとContainerの
/var/log/plura
ディレクトリを共有 - 各Nodeで実行されるnginx構成ファイルディレクトリに
plura.conf
をコピー (/etc/nginx/nginx.confを参照) - 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
これでWorker Nodeで発生するnginxのアクセスログをPLURAウェブログで確認できます。
環境情報
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