rootsongjc / kubernetes-handbook

Kubernetes中文指南/云原生应用架构实战手册

Home Page:https://jimmysong.io/book/kubernetes-handbook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sidecar 收集日志 filebeat 如何配置自动重载配置文件

sober-wang opened this issue · comments

环境

k8s v1.13.5

版本和配置信息
filebeat version 7.3.1

  • kubernetes版本:1.13.5
  • docker版本:18
  • 网络插件:flannel
  • 存储类型:

操作

导致该问题的操作或现象
filebeat 不会自动重载 configmap 挂载的配置文件
我的filebeat 配置如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
data:
  filebeat.yml: | 
    filebeat.config.modules:
      enabled: true
      path: /etc/filebeat/*.yml
    filebeat.config.inputs:
      enabled: true
      path: /etc/filebeat/*.yml
      reload.enabled: true
      reload.period: 10s
    filebeat.inputs:
    - type: log
      paths: 
        - /data/logs/*.log
        - /*.log
      tags: ["ws-test-hello"]
    output.file:
      path: "/data/logs/"
      filename: filebeat-test
    max_procs: 1
    multiline.pattern: '^[[:space:]]'
    multiline.negate: false
    multiline.match: after
    processors:
    - add_fields:
        target: info
        fields:
          hostName: '${HOST_NAME}'
          hostIP: '${HOST_IP}'

日志

日志或报错信息

Filebeat 自身的重载配置文件,只能对 input方向重载,有的时候我们需要重载其他配置项,这个模式是不行的。
我设计了一个 livenessProbe 当检测到 Filebeat configmaps 挂载文件发生变化时,标记为 unhealth 重启 SideCar Container 用新的配置文件启动。
例如: 我在启动脚本里面添加了,以下内容

src=`md5sum /etc/filebeat/filebeat.yml | awk '{print $1}'`
while :
do
   dest=`md5sum  /etc/filebeat/filebeat.yml | awk '{print $1}'`
   if [ $src != $dest ]
   then
      rm -rf /data/check.txt
   fi
done

我的 lifecycle

   livenessProbe:
     exec:
        command:
        - cat
        - /data/check.txt

这个问题时间太过久远,长时间没有追问,关闭问题。如有后续进展请在 issue 中回复。