久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何使用開源工具fluentd

202次閱讀
沒有評論

共計 2912 個字符,預計需要花費 8 分鐘才能閱讀完成。

本篇內容主要講解“如何使用開源工具 fluentd-pilot 收集容器日志”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“如何使用開源工具 fluentd-pilot 收集容器日志”吧!

fluentd-pilot 簡介

fluentd-pilot 是阿里開源的 docker 日志收集工具,Github 項目地址。你可以在每臺機器上部署一個 fluentd-pilot 實例,就可以收集機器上所有 Docker 應用日志。

fluentd-pilot 具有如下特性:

一個單獨的 fluentd 進程收集機器上所有容器的日志。不需要為每個容器啟動一個 fluentd 進程。

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

聲明式配置。當您的容器有日志要收集,只要通過 label 聲明要收集的日志文件的路徑,無需改動其他任何配置,fluentd-pilot 就會自動收集新容器的日志。

支持多種日志存儲方式。無論是強大的阿里云日志服務,還是比較流行的 elasticsearch 組合,甚至是 graylog,fluentd-pilot 都能把日志投遞到正確的地點。

rancher 使用 fluentd-pilot 收集日志

我們既然要用 fluentd-pilot,就得先把它啟動起來。還要有一個日志系統,日志要集中收集,必然要有一個中間服務去收集和存儲,所以要先把這種東西準備好。Rancher 中我們要如何做?如圖,首先我們選擇 Rancher 的應用商店中的 Elasticsearch 和 Kibana。版本沒有要求,下面使用 Elasticsearch3.X 和 Kibana4。

其次在 RancherAgent 主機上面部署一個 fluentd-pilot 容器,然后在容器里面啟動的時候,我們要聲明容器的日志信息,fluentd-pilot 會自動感知所有容器的配置。每次啟動容器或者刪除容器的時候,它能夠看得到,當看到容器有新容器產生之后,它就會自動給新容器按照你的配置生成對應的配置文件,然后去采集,最后采集回來的日志同樣也會根據配置發送到后端存儲里面去,這里面后端主要指的 elasticsearch 或者是 SLS 這樣的系統,接下來你可以在這個系統上面用一些工具來查詢等等。

可根據實際情況,在每臺 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 目錄是一致的,在容器外面實際上沒有一種通用的方式能夠獲取到容器里面的文件,所有我們主動把目錄從宿主機上掛載進來,這樣就可以在宿主機上看到目錄下面所有的東西。

當你通過部署之后,他會自己在 elasticsearch 創建索引,就可以在 elasticsearch 的 kopf 上面看到會生成兩個東西,都是自動創建好的,不用管一些配置,你唯一要做的事是什么呢?就可以在 kibana 上創建日志 index pattern 了。然后到日志搜索界面,可以看到從哪過來的,這條日志的內容是什么,這些信息都已經很快的出現了。

Lable 說明

啟動 tomcat 的時候,我們聲明了這樣下面兩個,告訴 fluentd-pilot 這個容器的日志位置。

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

你還可以在應用容器上添加更多的標簽

aliyun.logs.$name = $path

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

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

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

none 無格式純文本

json: json 格式,每行一個完整的 json 字符串

csv: csv 格式

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

aliyun.logs.access.tags= name=hello,stage=test,上報到存儲的日志里就會出現 name 字段和 stage 字段

如果使用 elasticsearch 作為日志存儲,target 這個 tag 具有特殊含義,表示 elasticsearch 里對應的 index

到此,相信大家對“如何使用開源工具 fluentd-pilot 收集容器日志”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2912字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 白玉县| 威宁| 余江县| 延庆县| 揭西县| 古蔺县| 庆云县| 荆州市| 焦作市| 分宜县| 体育| 达州市| 寿阳县| 凤翔县| 顺昌县| 静宁县| 连州市| 长春市| 堆龙德庆县| 定结县| 慈利县| 绿春县| 花莲县| 扬中市| 来宾市| 峨眉山市| 顺平县| 霸州市| 邵武市| 西平县| 巴塘县| 横峰县| 怀化市| 汤原县| 阿克苏市| 盐津县| 来宾市| 大城县| 石棉县| 绥芬河市| 枣强县|