來自用戶的最佳實踐分享,如何用阿里開源的Docker日誌收集工具fluentd-pilot收集機器上全部Docker應用日誌。git
fluentd-pilot是阿里開源的docker日誌收集工具,Github項目地址 。你能夠在每臺機器上部署一個fluentd-pilot實例,就能夠收集機器上全部Docker應用日誌。github
fluentd-pilot 具備以下特性:docker
咱們既然要用fluentd-pilot,就得先把它啓動起來。還要有一個日誌系統,日誌要集中收集,必然要有一箇中間服務去收集和存儲,因此要先把這種東西準備好。Rancher中咱們要如何作?如圖,首先咱們選擇Rancher的應用商店中的Elasticsearch和Kibana。版本沒有要求,下面使用Elasticsearch2.X和Kibana4。apache
其次在RancherAgent主機上面部署一個fluentd-pilot容器,而後在容器裏面啓動的時候,咱們要聲明容器的日誌信息,fluentd-pilot會自動感知全部容器的配置。每次啓動容器或者刪除容器的時候,它可以看獲得,當看到容器有新容器產生以後,它就會自動給新容器按照你的配置生成對應的配置文件,而後去採集,最後採集回來的日誌一樣也會根據配置發送到後端存儲裏面去,這裏面後端主要指的elasticsearch或者是SLS這樣的系統,接下來你能夠在這個系統上面用一些工具來查詢等等。json
可根據實際狀況,在每臺Agent定義主機標籤,經過主機標籤在每臺RancherAgent主機上跑一個pilot容器。用這個命令來部署,其實如今它是一個標準的Docker鏡像,內部支持一些後端存儲,能夠經過環境變量來指定日誌放到哪兒去,這樣的配置方式會把全部的收集到的日誌所有都發送到elasticsearch裏面去,固然兩個掛載是須要的,由於它鏈接Docker,要感知到Docker裏面全部容器的變化,它要經過這種方式來訪問宿主機的一些信息。在Rancher環境下使用如下docker-compose.yml 應用---->添加應用,在可選docker-compose.yml中添加一下內容。後端
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'
配置好以後啓動本身的應用(例子:tomcat),咱們看應用上面要收集的日誌,我該在上面作什麼樣的聲明?關鍵的配置有兩個,一是label catalina,聲明的是要收集容器的日誌爲何格式(標準格式等,也能夠是文件。),全部的名字均可以;二是聲明access,這也是個名字,均可以用你喜歡的名字。這樣一個路徑的地址,當你經過這樣的配置來去啓動fluentd-pilot容器以後,它就可以感受到這樣一個容器的啓動事件,它會去看容器的配置是什麼,要收集這個目錄下面的文件日誌,而後告訴fluentd-pilot去中心配置而且去採集,這裏還須要一個卷,實際上跟Logs目錄是一致的,在容器外面實際上沒有一種通用的方式可以獲取到容器裏面的文件,全部咱們主動把目錄從宿主機上掛載進來,這樣就能夠在宿主機上看到目錄下面全部的東西。tomcat
當你經過部署以後,他會本身在elasticsearch建立索引,就能夠在elasticsearch的kopf上面看到會生成兩個東西,都是自動建立好的,不用管一些配置,你惟一要作的事是什麼呢?就能夠在kibana上建立日誌index pattern了。而後到日誌搜索界面,能夠看到從哪過來的,這條日誌的內容是什麼,這些信息都已經很快的出現了。運維
啓動tomcat的時候,咱們聲明瞭這樣下面兩個,告訴fluentd-pilot這個容器的日誌位置。elasticsearch
aliyun.logs.tomcat1-access /opt/apache-tomcat-8.0.14/logs/localhost_access_log.*.txt aliyun.logs.catalina stdout
你還能夠在應用容器上添加更多的標籤ide
aliyun.logs.$name = $path
aliyun.logs.$name.format,日誌格式,目前支持
aliyun.logs.$name.tags: 上報日誌的時候,額外增長的字段,格式爲k1=v1,k2=v2,每一個key-value之間使用逗號分隔,例如
翟坤,隨行付支付有限公司資深運維工程師。本文版權歸做者全部,轉載請後臺留言。