kubernetes filebeat日志采集方案

常見的方案:

  1. 日志輸出到stdout stderr
    相關(guān)的路徑有兩個(gè)/var/lib/docker/container 和 /var/log/container, 一般云平臺(tái)都默認(rèn)支持
  2. 日志輸出到文件,emptyDir方式掛載,pod中再通過sidecar方式部署一個(gè)采集agent
  3. 日志輸出到文件徽惋,hostPath方式掛載,agent通過deamonset方式部署

分析:
方案1 我司日志都是打到文件铅歼,修改的話成本高
方案2 agent變化時(shí)如何全部生效可能會(huì)帶來麻煩公壤,維護(hù)成本高
方案3 存儲(chǔ)可能會(huì)有浪費(fèi),相比其他問題成本還是低很多椎椰。常見有fluentd等

確定方案:
使用方案3厦幅,agent使用filebeat,因?yàn)楸容^熟悉慨飘,最新是7.3版本, 支持不少新功能

具體實(shí)施:
1.配置hostPath掛載日志
掛載主機(jī)的/var/log/containers2/[namespace]/[svcName]到容器的/home/logs目錄确憨,容器在entrypoint腳本中增加軟鏈,將應(yīng)用通用的/home/abc/logs目錄鏈接到/home/logs/${HOSTNAME}下瓤的,可以解決deploy多pod時(shí)日志區(qū)分的問題休弃。

  1. 配置filebeat
    參考了官網(wǎng)的配置
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
  namespace: kube-system
  labels:
    k8s-app: filebeat
data:
  # java日志以日期開頭,node日志以[日期開頭,nginx access日志以日期開頭堤瘤,nginx error日志日期以/分割
  filebeat.yml: |-
    filebeat.inputs:
    - type: log
      paths:
        - /var/log/containers2/*/*/*/*.log
      multiline.pattern: '^\[?[0-9]{4}[-\/][0-9]{2}[-\/][0-9]{2}'
      multiline.negate: true
      multiline.match: after
      ignore_older: 5m
      close_inactive: 1m
      clean_removed: true
      processors:
        - script:
            lang: javascript
            id: k8s_metadata
            source: >
              function process(event) {
                event.Tag("js");
                var path = event.Get('log.file.path');
                path = path.split('/');
                event.Put('k8s.namespace', path[4]);
                event.Put('k8s.svcname', path[5]);
                event.Put('k8s.podname', path[6]);
              }

    output.kafka:
      hosts: ['xx:9092', 'xxx:9092', 'xxx:9092']
      topic: 'xxx'
      required_acks: 1
      compression: gzip
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: kube-system
  labels:
    k8s-app: filebeat
spec:
  template:
    metadata:
      labels:
        k8s-app: filebeat
    spec:
      serviceAccountName: filebeat
      terminationGracePeriodSeconds: 30
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:7.2.1
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        securityContext:
          runAsUser: 0
          # If using Red Hat OpenShift uncomment this:
          #privileged: true
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - name: config
          mountPath: /etc/filebeat.yml
          readOnly: true
          subPath: filebeat.yml
        - name: data
          mountPath: /usr/share/filebeat/data
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
        - name: varlog
          mountPath: /var/log
          readOnly: true
      volumes:
      - name: config
        configMap:
          defaultMode: 0600
          name: filebeat-config
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
      - name: varlog
        hostPath:
          path: /var/log
      # data folder stores a registry of read status for all files, so we don't send everything again on a Filebeat pod restart
      - name: data
        hostPath:
          path: /var/lib/filebeat-data
          type: DirectoryOrCreate
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: filebeat
subjects:
- kind: ServiceAccount
  name: filebeat
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: filebeat
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: filebeat
  labels:
    k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
  resources:
  - namespaces
  - pods
  verbs:
  - get
  - watch
  - list
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: filebeat
  namespace: kube-system
  labels:
    k8s-app: filebeat
---
``
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玫芦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子本辐,更是在濱河造成了極大的恐慌,老刑警劉巖医增,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慎皱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡叶骨,警方通過查閱死者的電腦和手機(jī)茫多,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽刽,“玉大人天揖,你說我怎么就攤上這事」虻郏” “怎么了今膊?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伞剑。 經(jīng)常有香客問我斑唬,道長(zhǎng),這世上最難降的妖魔是什么黎泣? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任恕刘,我火速辦了婚禮,結(jié)果婚禮上抒倚,老公的妹妹穿的比我還像新娘褐着。我一直安慰自己,他們只是感情好托呕,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布含蓉。 她就那樣靜靜地躺著频敛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谴餐。 梳的紋絲不亂的頭發(fā)上姻政,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音岂嗓,去河邊找鬼汁展。 笑死,一個(gè)胖子當(dāng)著我的面吹牛厌殉,可吹牛的內(nèi)容都是我干的食绿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼公罕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器紧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楼眷,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤铲汪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后罐柳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌腰,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年张吉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了齿梁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肮蛹,死狀恐怖勺择,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伦忠,我是刑警寧澤省核,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站缓苛,受9級(jí)特大地震影響芳撒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜未桥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一笔刹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冬耿,春花似錦舌菜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袱瓮。三九已至,卻和暖如春爱咬,著一層夾襖步出監(jiān)牢的瞬間尺借,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工精拟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留燎斩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓蜂绎,卻偏偏與公主長(zhǎng)得像栅表,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子师枣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344