總體的日誌收集方案,以下圖所示:node
server.port: 5601 server.host: "192.168.79.110" elasticsearch.hosts: ["http://localhost:9200"] 啓動:bin/kibana,訪問Web Console:http://192.168.79.110:5601
input { beats { port => 5044 } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "k8s-log-%{+YYYY-MM-dd}" } } 啓動:bin/logstash -f config/logstash.conf
filebeat的配置文件filebeat.yml使用ConfigMap管理,k8s組件日誌記錄在node節點本機/var/log/messages目錄下,因此將node節點/var/log/messages目錄掛載到pod中。建立收集k8s 組件日誌/var/log/messages資源。建立yaml文件以下:k8s-logs.yaml,並執行kubectl create -f k8s-logs.yamllinux
apiVersion: v1 kind: ConfigMap metadata: name: k8s-logs-filebeat-config namespace: kube-system data: filebeat.yml: |- filebeat.prospectors: - type: log paths: - /messages fields: app: k8s type: module fields_under_root: true output.logstash: hosts: ['192.168.79.110:5044'] --- apiVersion: apps/v1 kind: DaemonSet metadata: name: k8s-logs namespace: kube-system spec: selector: matchLabels: project: k8s app: filebeat template: metadata: labels: project: k8s app: filebeat spec: containers: - name: filebeat image: collenzhao/filebeat:6.5.4 args: [ "-c", "/etc/filebeat.yml", "-e", ] resources: requests: cpu: 100m memory: 100Mi limits: cpu: 500m memory: 500Mi securityContext: runAsUser: 0 volumeMounts: - name: filebeat-config mountPath: /etc/filebeat.yml subPath: filebeat.yml - name: k8s-logs mountPath: /messages volumes: - name: k8s-logs hostPath: path: /var/log/messages type: File - name: filebeat-config configMap: name: k8s-logs-filebeat-config
下圖是Kibana的生成的信息。web