FK-ELK日誌架構系列2:Fluentd配置-使用環境變量

在使用Fluentd進行配置的過程中,由於要採用sidecar的方式將fluentd組件作爲docker掛載到微服務的pod上,所以就面臨每個微服務的日誌名稱不同,導致fluentd採集日誌文件就需要動態變化,最好使用變量的方式來實現。

經過實踐,發現可以採用配置環境變量的方式,將fluentd的配置文件裏的動態變化的地方來引用環境變量,這樣就實現了,一個配置文件,可以掛載到所有的微服務pod上,不用每個微服務都配置一個單獨的fluentd配置文件了。

注:這裏說的環境變量,是指K8S裏的ENV方式設置的,在docker裏是可以直接獲取的env環境變量。

簡單一句話就是:採用環境變量設置的方式,實現了一個配置文件模板。

fluentd部署模式:

1. fluentd使用環境變量的方式:

兩種方式:

  • 單獨使用環境變量
 tag  "#{ENV['CONF_INFO']}"
  • 拼接字符串
tag  "app.#{ENV['CONF_INFO']}"

2.配置文件如下:

<source>
  @type    tail  #### tail方式採集日誌
  format   none
  path     /data/log/*-info.*.log
  pos_file "#{ENV['SERVICE_POS_INFO']}"
  tag      "#{ENV['CONF_INFO']}"
  @label @mainstream_info
</source>

<label @mainstream_info>
  <filter **>
    @type record_transformer
    <record>
      host_param "#{Socket.gethostname}"
    </record>
  </filter>

  <match **>
    type kafka2
    id kafka_output
    brokers "#{ENV['KAFKA_BROKER']}"
    topic_key  "#{ENV['CONF_INFO']}"
    default_topic "#{ENV['CONF_INFO']}"
    
    use_event_time true
    <format>
      @type json
    </format>
	
   <buffer topic>
      flush_interval 5s
    </buffer>
	
    required_acks -1
    max_send_retries 1
  </match>
</label>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章