新聞中心
Tags: k8s環(huán)境下的容器日志收集
K8S環(huán)境下面如何收集應(yīng)用日志
===
在本文中重點(diǎn)講一下K8S容器環(huán)境中如何收集容器的日志;
1. 容器日志收集方案的選擇:
??在K8S集群中,容器的日志收集方案一般有三種;第一種方案是通過在每一個(gè)k8s節(jié)點(diǎn)安裝日志收集客戶端軟件,比如fluentd。這種方案不好的一點(diǎn)是應(yīng)用的日志必須輸出到標(biāo)準(zhǔn)輸出,并且是通過在每一臺(tái)計(jì)算節(jié)點(diǎn)的/var/log/containers目錄下面的日志文件,這個(gè)日志文件的名稱是這種格式user-center-765885677f-j68zt_default_user-center-0867b9c2f8ede64cebeb359dd08a6b05f690d50427aa89f7498597db8944cccc.log,文件名稱有很多隨機(jī)字符串,很難和容器里面的應(yīng)用對(duì)應(yīng)起來。并且在網(wǎng)上看到別人說這個(gè)里面的日志,對(duì)于JAVA的報(bào)錯(cuò)內(nèi)容沒有多行合并,不過我還沒有測(cè)試過此方案。
??第二種方案就是在應(yīng)用的pods里面在運(yùn)行一個(gè)sidecar container(邊角容器),這個(gè)容器會(huì)和應(yīng)用的容器掛載同一個(gè)volume日志卷。比如這個(gè)sidecar容器可以是filebeat或者flunetd等;這種方案不足之處是部署了sidecar , 所以會(huì)消耗資源 , 每個(gè)pod都要起一個(gè)日志收集容器。
??第三種方案就是直接將應(yīng)用的日志收集到kafka,然后通過kafka再發(fā)送到logstash,再處理成json格式的日志發(fā)送到es集群,最后在kibana展示。我實(shí)驗(yàn)的就是這種方案。通過修改logsbak配置文件實(shí)現(xiàn)了日志直接發(fā)送到kafka緩存的功能;下面直接看配置了
1. logsbak配置:
-
-
[%date{ISO8601}] [%level] %logger{80} [%thread] [%tid] ${dev-group-name} ${app-name} Line:%-3L - %msg%n
-
${log-path}/${app-name}/${filename}.log
-
/${log-path}/${app-name}/${filename}.%d{yyyy-MM-dd}.%i.log
15
300MB
-
[%date{ISO8601}] [%level] %logger{80} [%thread] [%tid] ${dev-group-name} ${app-name} Line:%-3L - %msg%n
${log-path}/${app-name}/${filename}-error.log
/${log-path}/${app-name}/${filename}-error.%d{yyyy-MM-dd}.%i.log
300MB
15
[%date{ISO8601}] [%level] %logger{80} [%thread] [%tid] ${dev-group-name} ${app-name} Line:%-3L - %msg%n
ERROR
ACCEPT
DENY
[%date{ISO8601}] [%level] %logger{80} [%thread] [%tid] ${dev-group-name} ${app-name} Line:%-3L - %msg%n
elk-stand-sit-fkp-eureka
bootstrap.servers=192.168.1.12:9092,192.168.1.14:9092,192.168.1.15:9092
acks=0
linger.ms=1000
max.block.ms=0
client.id=${HOSTNAME}-${CONTEXT_NAME}-logback-relaxed
block.on.buffer.full=false
###2. 針對(duì)logsbak配置說明:###
- logsbak直接發(fā)送日志到kafka有幾種方式,一種是異步模式,一種是同步模式。異步模式的意思就是如果kafka因?yàn)榫W(wǎng)絡(luò)情況出現(xiàn)故障,則阻塞發(fā)送日志或者直接將日志發(fā)送到后備存儲(chǔ),比如后備存儲(chǔ)是發(fā)送到日志文件;同步模式的意思就是即使kafka出現(xiàn)網(wǎng)絡(luò)情況不可達(dá),則就會(huì)影響到日志線程,進(jìn)而影響到應(yīng)用的性能。不過這個(gè)模式的我沒有測(cè)試過;配置如下:
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
important-logs
0
bootstrap.servers=localhost:9092
buffer.memory=8388608
metadata.fetch.timeout.ms=99999999999
client.id=${HOSTNAME}-${CONTEXT_NAME}-logback-restrictive
compression.type=gzip
通過配置logsbak直接輸出到kafka,并且使用異步模式,就成功的在kibana里面看到了容器的日志了;
博文的更詳細(xì)內(nèi)容請(qǐng)關(guān)注我的個(gè)人微信公眾號(hào) “云時(shí)代IT運(yùn)維”,本公眾號(hào)旨在共享互聯(lián)網(wǎng)運(yùn)維新技術(shù),新趨勢(shì); 包括IT運(yùn)維行業(yè)的咨詢,運(yùn)維技術(shù)文檔分享。重點(diǎn)關(guān)注devops、jenkins、zabbix監(jiān)控、kubernetes、ELK、各種中間件的使用,比如redis、MQ等;shell和python等運(yùn)維編程語言;本人從事IT運(yùn)維相關(guān)的工作有十多年。2008年開始專職從事Linux/Unix系統(tǒng)運(yùn)維工作;對(duì)運(yùn)維相關(guān)技術(shù)有一定程度的理解。本公眾號(hào)所有博文均是我的實(shí)際工作經(jīng)驗(yàn)總結(jié),基本都是原創(chuàng)博文。我很樂意將我積累的經(jīng)驗(yàn)、心得、技術(shù)與大家分享交流!希望和大家在IT運(yùn)維職業(yè)道路上一起成長(zhǎng)和進(jìn)步;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站欄目:k8s容器環(huán)境收集應(yīng)用日志到已有的ELK日志平臺(tái)-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/ceoceo.html