使用log pilot進行日誌收集

2022-07-12 15:30:47 字數 4168 閱讀 9244

log-pilot是乙個智慧型容器日誌採集工具,它不僅能夠高效便捷地將容器日誌採集輸出到多種儲存日誌後端,同時還能夠動態地發現和採集容器內部的日誌檔案,更多諮詢可以移步這裡。

log-pilot目前支援兩種工具對日誌進行收集,fluentd plugin 和 filebeat plugin。

log-pilot支援容器事件管理,它能夠動態地監聽容器的事件變化,然後依據容器的標籤來進行解析,生成日誌採集配置檔案,然後交由採集外掛程式來進行日誌採集。

在kubernetes下,log-pilot可以依據環境變數aliyun_logs_$name = $path動態地生成日誌採集配置檔案,其中包含兩個變數:

部署例項:

# 日誌收集字首

- name: pilot_log_prefix

value: aliyun

- name: "logging_output"

value: "elasticsearch"

# 請確保集群到es網路可達

- name: "elasticsearch_hosts"

value: "elasticsearch:9200"

# 配置es訪問許可權

#- name: "elasticsearch_user"

# value: ""

#- name: "elasticsearch_password"

# value: ""

volumemounts:

- name: sock

mountpath: /var/run/docker.sock

- name: root

mountpath: /host

readonly: true

- name: varlib

mountpath: /var/lib/filebeat

- name: varlog

mountpath: /var/log/filebeat

- name: localtime

mountpath: /etc/localtime

readonly: true

livenessprobe:

failurethreshold: 3

exec:

command:

- /pilot/healthz

initialdelayseconds: 10

periodseconds: 10

successthreshold: 1

timeoutseconds: 2

securitycontext:

capabilities:

add:

- sys_admin

terminationgraceperiodseconds: 30

volumes:

- name: sock

hostpath:

path: /var/run/docker.sock

- name: root

hostpath:

path: /

- name: varlib

hostpath:

path: /var/lib/filebeat

type: directoryorcreate

- name: varlog

hostpath:

path: /var/log/filebeat

type: directoryorcreate

- name: localtime

hostpath:

path: /etc/localtim

建立pod測試

apiversion: v1

kind: pod

metadata:

name: tomcat

spec:

containers:

- name: tomcat

image: "tomcat:8.0"

env:

# 1、stdout為約定關鍵字,表示採集標準輸出日誌

# 2、配置標準輸出日誌採集到es的catalina索引下

- name: aliyun_logs_catalina

value: "stdout"

# 1、配置採集容器內檔案日誌,支援萬用字元

# 2、配置該日誌採集到es的access索引下

- name: aliyun_logs_access

value: "/usr/local/tomcat/logs/catalina.*.log"

# 容器內檔案日誌路徑需要配置emptydir

volumemounts:

- name: tomcat-log

mountpath: /usr/local/tomcat/logs

volumes:

- name: tomcat-log

emptydir: {}

然後我們檢視索引會看到access-和catalina-的索引

# curl -xget 'localhost:9200/_cat/indices?v&pretty'

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

green open access-2020.06.23 0ls6stfpq4yht7makusi1g 5 1 40 0 205.5kb 102.5kb

green open logstash-2020.06.23 hr62inntqi6hjobizf6dhw 5 1 99 0 296kb 148kb

green open catalina-2020.06.23 dsfgczlps6-wiefkrowv-g 5 1 40 0 227.1kb 133.3kb

green open .kibana h-tato8qtxmi-ji_4miurg 1 1 2 0 20.4kb 10.2kb

green open logstash-2020.06.22 8-ifaoj_sqiipqoxn6soxw 5 1 43784 0 30.6mb 15.3mb

然後到頁面新增索引即可。

當然日誌的輸出除了直接輸出到es外還可以輸出到其他地方,如果是使用filebeat則可以點選這裡進行檢視。如果是fluentd,則點選這裡。

使用RE進行日誌採集

對於日誌的採集,給出乙個常規的思路 執行採集日誌應用 非web程式 使用檔案流讀取文字檔案,當讀取到檔案末尾時,可以讓當前執行緒睡眠一段時間,從而達到對日誌採集的目的。這樣就會出現幾個問題 1 當應用異常終止時,重新啟動,那樣問題就來了 出現對日誌的重複採集。想了下,也沒什麼更好的辦法,於是採集到的...

使用Lumberjack zap進行日誌切割歸檔

為了新增日誌切割歸檔功能,我們將使用第三方庫lumberjack來實現。執行下面的命令安裝lumberjack go get u github.com natefinch lumberjack要在zap中加入lumberjack支援,我們需要修改writesyncer 我們將按照下面的 修改getl...

django實現利用mailgun進行收發郵件

def email request if request.method post form contactform request.post 獲取post表單 if form.is valid message 感謝你的來信,我們會盡快回覆你 user name form.cleaned data u...