Tags: k8s環(huán)境下的容器日志收集
K8S環(huán)境下面如何收集應用日志
===
在本文中重點講一下K8S容器環(huán)境中如何收集容器的日志;
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比鹽亭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鹽亭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋鹽亭地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
??在K8S集群中,容器的日志收集方案一般有三種;第一種方案是通過在每一個k8s節(jié)點安裝日志收集客戶端軟件,比如fluentd。這種方案不好的一點是應用的日志必須輸出到標準輸出,并且是通過在每一臺計算節(jié)點的/var/log/containers目錄下面的日志文件,這個日志文件的名稱是這種格式user-center-765885677f-j68zt_default_user-center-0867b9c2f8ede64cebeb359dd08a6b05f690d50427aa89f7498597db8944cccc.log,文件名稱有很多隨機字符串,很難和容器里面的應用對應起來。并且在網(wǎng)上看到別人說這個里面的日志,對于JAVA的報錯內(nèi)容沒有多行合并,不過我還沒有測試過此方案。
??第二種方案就是在應用的pods里面在運行一個sidecar container(邊角容器),這個容器會和應用的容器掛載同一個volume日志卷。比如這個sidecar容器可以是filebeat或者flunetd等;這種方案不足之處是部署了sidecar , 所以會消耗資源 , 每個pod都要起一個日志收集容器。
?第三種方案就是直接將應用的日志收集到kafka,然后通過kafka再發(fā)送到logstash,再處理成json格式的日志發(fā)送到es集群,最后在kibana展示。我實驗的就是這種方案。通過修改logsbak配置文件實現(xiàn)了日志直接發(fā)送到kafka緩存的功能;下面直接看配置了
-
-
[%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. 針對logsbak配置說明:###
%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里面看到了容器的日志了;