要收集Kubernetes(K8s)日志,可以使用Filebeat來收集并發送到指定的目標位置。
以下是收集K8s日志的步驟:
配置Filebeat:在Filebeat的配置文件filebeat.yml
中進行以下配置:
filebeat.inputs:
- type: container
paths:
- /var/lib/docker/containers/*/*.log
output.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/*/*.log
output.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命令來應用部署文件,例如:
kubectl apply -f filebeat-kubernetes.yaml
這將會在Kubernetes集群中創建一個DaemonSet,確保每個節點上都會運行一個Filebeat實例。
查看日志:通過Elasticsearch或Kibana等工具來查看收集到的K8s日志。
以上是使用Filebeat來收集K8s日志的一般步驟。你可以根據具體需求進行配置和調整。