title: 47.K8S集成EFK CreateTime: 2019-07-11 00:00:47 UpdateTime: 2019-07-11 00:00:47 CategoryName: cloudnative --- --- title: "47.K8S集成EFK" date: 2019-07-11T00:00:47+08:00 draft: false tags: ["efk"] categories: ["cloudnative"] author: "springrain" --- ## 参考资料 https://github.com/elastic/beats/tree/master/deploy/kubernetes https://stackoverflow.com/questions/50931623/multi-line-logs-into-es-from-filebeat-deployed-as-kubernetes-daemonset https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch https://arch-long.cn/articles/elasticsearch/FileBeat.html 需要把日志输出到控制台 修改logback.xml 控制台日志格式:```%d [%thread] %c:%L-%m%n``` ![](/public/47/image1.jpeg) 使用stdout的方式输出日志 ![](/public/47/image2.jpeg) ## EFK安装 E:elasticsearch F:filebeat,代替logstash K:kibana 尝试了fluentd,fluent-bit,结果还是亲儿子filebeat支持的最好. 安装filebeat和kibana [下载filebeat.zip配置文件](/public/47/filebeat.zip) 应用控制台输出的内容会被docker容器捕捉为stdout和stderr,业务细节记录的log还需要单独处理,目前只处理了stdout和stderr,哪位同事有兴趣可以把业务log搞下. ## 使用kibana 访问http://10.0.8.28:32564 设置需要检索的日志库 ![](/public/47/image4.jpeg) 选择日志库 filebeat-* ![](/public/47/image5.jpeg) 选择按照时间过滤的字段 @timestamp ![](/public/47/image6.jpeg) 设置需要查看的字段 一般有:message,stream,kubernetes.container.name message:日志详细信息 stream: stdout和stderr kubernetes.container.name:可以认为是项目名称 ![](/public/47/image7.jpeg) 设置自己的过滤器 例如查询 cgz 项目的日志 ![](/public/47/image8.jpeg)