filebeatはk8sのログをどのように収集しますか?
Kubernetes(K8s)のログを収集するには、Filebeatを使用して指定されたターゲット位置に送信することができます。
K8sのログを収集する手順は次のとおりです:
- Filebeatを設定する:以下の設定をFilebeatの設定ファイルfilebeat.ymlに記述してください。
- ファイルビートの入力設定:
– タイプ:コンテナ
パス:
– /var/lib/docker/containers/*/*.logoutput.elasticsearch:
hosts: [“elasticsearch:9200”] - この設定は、Filebeatがコンテナログを収集するデータタイプとして、Kubernetesコンテナのログファイルパスを指定しています。同時に、出力先をElasticsearchに指定しています。
- Filebeat のデプロイ: Kubernetes クラスター環境に応じて、Helm Chart を使用して Filebeat をデプロイするか、Kubernetes デプロイメント ファイルを手動で作成することができます。以下はデプロイメント ファイル filebeat-kubernetes.yaml の一例です。
- apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
labels:
k8s-app: filebeat
data:
filebeat.yml: |-
filebeat.inputs:
– type: container
paths:
– /var/lib/docker/containers/*/*.logoutput.elasticsearch:
hosts: [“elasticsearch:9200”]—
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat
labels:
k8s-app: filebeat
spec:
selector:
matchLabels:
k8s-app: filebeat
template:
metadata:
labels:
k8s-app: filebeat
spec:
containers:
– name: filebeat
image: docker.elastic.co/beats/filebeat:7.15.1
args: [
“-c”, “/etc/filebeat.yml”,
“-e”,
]
env:
– name: ELASTICSEARCH_HOST
value: “elasticsearch:9200”
volumeMounts:
– name: config
mountPath: /etc/filebeat.yml
subPath: filebeat.yml
readOnly: true
…
volumes:
– name: config
configMap:
defaultMode: 0600
name: filebeat-config - デプロイメントファイルの適用:kubectlコマンドを使用してデプロイメントファイルを適用します、例:
- filebeat-kubernetes.yamlを使用してkubectl applyします。
- このDaemonSetは、Kubernetesクラスター内で作成され、各ノードでFilebeatインスタンスが実行されることを確認します。
- ログを参照する:K8sの収集されたログをElasticsearchやKibanaなどのツールで閲覧する。
Filebeatを使用してK8sログを収集する一般的な手順が上記にあります。具体的な要件に応じて設定や調整を行うことができます。