溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

K8S中如何使用sidecar模式統(tǒng)一收集應(yīng)用日志(適用所有技術(shù)語(yǔ)言體系)

發(fā)布時(shí)間:2021-11-10 09:26:37 來(lái)源:億速云 閱讀:692 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹K8S中如何使用sidecar模式統(tǒng)一收集應(yīng)用日志(適用所有技術(shù)語(yǔ)言體系),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

  • Filebeat可以以sidecar模式來(lái)進(jìn)行容器日志的收集,也就是filebeat和具體的服務(wù)容器部署在同一個(gè)pod內(nèi),指定收集日志的路徑或文件,即可將日志發(fā)送到指定位置或Elasticsearch這類(lèi)的搜索引擎。


  • 每個(gè)pod內(nèi)部署filebeat的模式,好處是和具體的應(yīng)用服務(wù)低耦合,可擴(kuò)展性強(qiáng),不過(guò)需要在yaml進(jìn)行額外配置。


  • 理論的可以支持所有技術(shù)語(yǔ)言體系,只要能輸出文件日志就好。


app服務(wù)

---apiVersion: v1kind: Servicemetadata:  name: test-app  labels:    app: test-appspec:  selector:    app: test-app  ports:  - protocol: TCP    port: 8080    targetPort: 8080    name: test-port#定義日志收集相關(guān)配置的一個(gè)configmap---apiVersion: v1kind: ConfigMapmetadata:  name: test-filebeat-config  labels:    k8s-app: filebeatdata:  filebeat.yml: |-    filebeat.prospectors:    - type: log      paths:        - /logdata/*.log      tail_files: true      fields:        pod_name: '${pod_name}'        POD_IP: '${POD_IP}'    setup.template.name: "app-logs"    setup.template.pattern: "app-logs-*"    output.elasticsearch: # 日志輸出到ES      hosts: ["192.168.1.xx:9200","192.168.1.xxx:9200"]      index: "app-logs-%{+yyyy.MM}"# deployment, 也可通過(guò)daemonset方式---apiVersion: apps/v1kind: Deploymentmetadata:  name: test-appspec:  replicas: 1  minReadySeconds: 15     #滾動(dòng)升級(jí)15s后標(biāo)志pod準(zhǔn)備就緒  strategy:    rollingUpdate:        #replicas為2, 升級(jí)過(guò)程中pod個(gè)數(shù)在1-3個(gè)之間      maxSurge: 1         #滾動(dòng)升級(jí)時(shí)會(huì)先啟動(dòng)1個(gè)pod      maxUnavailable: 1   #滾動(dòng)升級(jí)時(shí)允許pod處于Unavailable的最大個(gè)數(shù)  selector:    matchLabels:      app: test-app  template:    metadata:      labels:        app: test-app    spec:      terminationGracePeriodSeconds: 30 #30秒內(nèi)優(yōu)雅關(guān)閉程序      containers:      - image: hub.exmaple.com/publib/filebeat:6.1.3     #提前下載下來(lái)到私有鏡像庫(kù)的鏡像(官方的可能會(huì)被墻)        name: filebeat        args: [          "-c", "/opt/filebeat/filebeat.yml",          "-e",        ]        env:        - name: POD_IP          valueFrom:            fieldRef:              apiVersion: v1              fieldPath: status.podIP        - name: pod_name          valueFrom:            fieldRef:              apiVersion: v1              fieldPath: metadata.name        securityContext:          runAsUser: 0        resources:          limits:            memory: 200Mi          requests:            cpu: 200m            memory: 200Mi        volumeMounts:        - name: config               #將configmap的內(nèi)容放到容器本地目錄          mountPath: /opt/filebeat/        - name: data          mountPath: /usr/share/filebeat/data        - name: logdata       #同一個(gè)pod內(nèi)的兩個(gè)應(yīng)用共享目錄logdata, 一個(gè)寫(xiě)一個(gè)讀          mountPath: /logdata      - name: test-app        image: hub.example.com/service/test-service:latest  #提供具體服務(wù)的app鏡像        ports:        - containerPort: 8080        volumeMounts:        - name: logdata       #指定掛在目錄到logdata          mountPath: /usr/local/tomcat/logs      volumes:      - name: data        emptyDir: {}      - name: logdata         #定義logdata為EmptyDir類(lèi)型掛載目錄        emptyDir: {}      - name: config        configMap:          name: test-filebeat-config  #使用前面定義的configmap          items:          - key: filebeat.yml            path: filebeat.yml

查看filebeat和app的運(yùn)行日志

kubectl logs -f <pod名> filebeatkubectl logs -f <pod名> test-app

這時(shí)可看到詳細(xì)的運(yùn)行日志情況,同時(shí)elasticsearch上也會(huì)新建一個(gè)app-logs-xxxx.xx的索引。

關(guān)于K8S中如何使用sidecar模式統(tǒng)一收集應(yīng)用日志(適用所有技術(shù)語(yǔ)言體系)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI