溫馨提示×

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

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

如何使用開(kāi)源工具fluentd-pilot收集容器日志

發(fā)布時(shí)間:2021-12-29 08:59:55 來(lái)源:億速云 閱讀:169 作者:iii 欄目:云計(jì)算

本篇內(nèi)容主要講解“如何使用開(kāi)源工具fluentd-pilot收集容器日志”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何使用開(kāi)源工具fluentd-pilot收集容器日志”吧!

fluentd-pilot簡(jiǎn)介

fluentd-pilot是阿里開(kāi)源的docker日志收集工具,Github項(xiàng)目地址 。你可以在每臺(tái)機(jī)器上部署一個(gè)fluentd-pilot實(shí)例,就可以收集機(jī)器上所有Docker應(yīng)用日志。

fluentd-pilot 具有如下特性:

  • 一個(gè)單獨(dú)的 fluentd 進(jìn)程收集機(jī)器上所有容器的日志。不需要為每個(gè)容器啟動(dòng)一個(gè) fluentd 進(jìn)程。

  • 支持文件日志和 stdout。docker log dirver 亦或 logspout 只能處理 stdout,fluentd-pilot 不僅支持收集 stdout 日志,還可以收集文件日志。

  • 聲明式配置。當(dāng)您的容器有日志要收集,只要通過(guò) label 聲明要收集的日志文件的路徑,無(wú)需改動(dòng)其他任何配置,fluentd-pilot 就會(huì)自動(dòng)收集新容器的日志。

  • 支持多種日志存儲(chǔ)方式。無(wú)論是強(qiáng)大的阿里云日志服務(wù),還是比較流行的 elasticsearch 組合,甚至是 graylog,fluentd-pilot 都能把日志投遞到正確的地點(diǎn)。

rancher使用fluentd-pilot收集日志

如何使用開(kāi)源工具fluentd-pilot收集容器日志

我們既然要用fluentd-pilot,就得先把它啟動(dòng)起來(lái)。還要有一個(gè)日志系統(tǒng),日志要集中收集,必然要有一個(gè)中間服務(wù)去收集和存儲(chǔ),所以要先把這種東西準(zhǔn)備好。Rancher中我們要如何做?如圖,首先我們選擇Rancher的應(yīng)用商店中的Elasticsearch和Kibana。版本沒(méi)有要求,下面使用Elasticsearch3.X和Kibana4。

如何使用開(kāi)源工具fluentd-pilot收集容器日志

其次在RancherAgent主機(jī)上面部署一個(gè)fluentd-pilot容器,然后在容器里面啟動(dòng)的時(shí)候,我們要聲明容器的日志信息,fluentd-pilot會(huì)自動(dòng)感知所有容器的配置。每次啟動(dòng)容器或者刪除容器的時(shí)候,它能夠看得到,當(dāng)看到容器有新容器產(chǎn)生之后,它就會(huì)自動(dòng)給新容器按照你的配置生成對(duì)應(yīng)的配置文件,然后去采集,最后采集回來(lái)的日志同樣也會(huì)根據(jù)配置發(fā)送到后端存儲(chǔ)里面去,這里面后端主要指的elasticsearch或者是SLS這樣的系統(tǒng),接下來(lái)你可以在這個(gè)系統(tǒng)上面用一些工具來(lái)查詢等等。

可根據(jù)實(shí)際情況,在每臺(tái)Agent定義主機(jī)標(biāo)簽,通過(guò)主機(jī)標(biāo)簽在每臺(tái)RancherAgent主機(jī)上跑一個(gè)pilot容器。用這個(gè)命令來(lái)部署,其實(shí)現(xiàn)在它是一個(gè)標(biāo)準(zhǔn)的Docker鏡像,內(nèi)部支持一些后端存儲(chǔ),可以通過(guò)環(huán)境變量來(lái)指定日志放到哪兒去,這樣的配置方式會(huì)把所有的收集到的日志全部都發(fā)送到elasticsearch里面去,當(dāng)然兩個(gè)掛載是需要的,因?yàn)樗B接Docker,要感知到Docker里面所有容器的變化,它要通過(guò)這種方式來(lái)訪問(wèn)宿主機(jī)的一些信息。在Rancher環(huán)境下使用以下docker-compose.yml 應(yīng)用---->添加應(yīng)用,在可選docker-compose.yml中添加一下內(nèi)容。

version: '2'
services:
  pilot:
    image: registry.cn-hangzhou.aliyuncs.com/acs-sample/fluentd-pilot:0.1
    environment:
      ELASTICSEARCH_HOST: elasticsearch
      ELASTICSEARCH_PORT: '9200'
      FLUENTD_OUTPUT: elasticsearch
    external_links:
    - es-cluster/es-master:elasticsearch
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - /:/host
    labels:
      aliyun.global: 'true'

配置好之后啟動(dòng)自己的應(yīng)用(例子:tomcat),我們看應(yīng)用上面要收集的日志,我該在上面做什么樣的聲明?關(guān)鍵的配置有兩個(gè),一是label catalina,聲明的是要收集容器的日志為什么格式(標(biāo)準(zhǔn)格式等,也可以是文件。),所有的名字都可以;二是聲明access,這也是個(gè)名字,都可以用你喜歡的名字。這樣一個(gè)路徑的地址,當(dāng)你通過(guò)這樣的配置來(lái)去啟動(dòng)fluentd-pilot容器之后,它就能夠感覺(jué)到這樣一個(gè)容器的啟動(dòng)事件,它會(huì)去看容器的配置是什么,要收集這個(gè)目錄下面的文件日志,然后告訴fluentd-pilot去中心配置并且去采集,這里還需要一個(gè)卷,實(shí)際上跟Logs目錄是一致的,在容器外面實(shí)際上沒(méi)有一種通用的方式能夠獲取到容器里面的文件,所有我們主動(dòng)把目錄從宿主機(jī)上掛載進(jìn)來(lái),這樣就可以在宿主機(jī)上看到目錄下面所有的東西。

如何使用開(kāi)源工具fluentd-pilot收集容器日志 如何使用開(kāi)源工具fluentd-pilot收集容器日志

當(dāng)你通過(guò)部署之后,他會(huì)自己在elasticsearch創(chuàng)建索引,就可以在elasticsearch的kopf上面看到會(huì)生成兩個(gè)東西,都是自動(dòng)創(chuàng)建好的,不用管一些配置,你唯一要做的事是什么呢?就可以在kibana上創(chuàng)建日志index pattern了。然后到日志搜索界面,可以看到從哪過(guò)來(lái)的,這條日志的內(nèi)容是什么,這些信息都已經(jīng)很快的出現(xiàn)了。

如何使用開(kāi)源工具fluentd-pilot收集容器日志 如何使用開(kāi)源工具fluentd-pilot收集容器日志

Lable說(shuō)明

啟動(dòng)tomcat的時(shí)候,我們聲明了這樣下面兩個(gè),告訴fluentd-pilot這個(gè)容器的日志位置。

aliyun.logs.tomcat1-access   /opt/apache-tomcat-8.0.14/logs/localhost_access_log.*.txt 
aliyun.logs.catalina   stdout

你還可以在應(yīng)用容器上添加更多的標(biāo)簽

aliyun.logs.$name = $path

  • 變量name是日志名稱,具體指隨便是什么,你高興就好。只能包含0-9a-zA-Z_和-

  • 變量path是要收集的日志路徑,必須具體到文件,不能只寫目錄。文件名部分可以使用通配符。/var/log/he.log和/var/log/*.log都是正確的值,但/var/log不行,不能只寫到目錄。stdout是一個(gè)特殊值,表示標(biāo)準(zhǔn)輸出

aliyun.logs.$name.format,日志格式,目前支持

  • none 無(wú)格式純文本

  • json: json格式,每行一個(gè)完整的json字符串

  • csv: csv格式

aliyun.logs.$name.tags: 上報(bào)日志的時(shí)候,額外增加的字段,格式為k1=v1,k2=v2,每個(gè)key-value之間使用逗號(hào)分隔,例如

  • aliyun.logs.access.tags="name=hello,stage=test",上報(bào)到存儲(chǔ)的日志里就會(huì)出現(xiàn)name字段和stage字段

  • 如果使用elasticsearch作為日志存儲(chǔ),target這個(gè)tag具有特殊含義,表示elasticsearch里對(duì)應(yīng)的index

到此,相信大家對(duì)“如何使用開(kāi)源工具fluentd-pilot收集容器日志”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向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