您好,登錄后才能下訂單哦!
這篇文章給大家介紹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: v1
kind: Service
metadata:
name: test-app
labels:
app: test-app
spec:
selector:
app: test-app
ports:
- protocol: TCP
port: 8080
targetPort: 8080
name: test-port
#定義日志收集相關(guān)配置的一個(gè)configmap
---
apiVersion: v1
kind: ConfigMap
metadata:
name: test-filebeat-config
labels:
k8s-app: filebeat
data:
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/v1
kind: Deployment
metadata:
name: test-app
spec:
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ò),可以把它分享出去讓更多的人看到。
免責(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)容。