FR+ELK Lession2 Filebeat設定 = ###### tags: `elk` `docker` ![](https://i.imgur.com/C15Rfhh.png) ##### filebeat是什麼? filebeat 日誌檔案託運工具,在你的伺服器上安裝客戶端後,filebeat會監控日誌目錄或者指定的日誌檔案,追蹤讀取這些檔案(追蹤檔案的變化,不停的讀),並且轉發這些資訊到elasticsearch或者redis(庫)存放。 ##### 為什麼要用filebeat filebeat會先篩選我要的資料,不會一股腦的所有資料全部接收 ##### 如何實作? 此範例會以抓取iis 的log 來做實驗 這邊安裝方式會有點小多 使用Docker安裝 #### 檔案配置圖 ![](https://i.imgur.com/wZDDCle.png) ![](https://i.imgur.com/nhsg1sj.png) ##### 1.先建立新的Dockerfile # 基礎版本 FROM docker.elastic.co/beats/filebeat:7.16.2 # 複製設定檔 COPY /yml /yml #先把本機的filebeat.yml映射到容器裡面 # 調整設定檔權限 filebeat設定檔 需要 如果不設定會無法寫入 USER root #賦予映射進去的yml檔權限 RUN bash -c 'chown root:filebeat /yml/filebeat.yml' #啟動映射進去的yml檔 CMD /usr/share/filebeat/filebeat -e -c /yml/filebeat.yml USER filebeat ##### 2.先在本機設定好要映射進去容器裡的filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /iislog/iissuccess/*/*.log fields: type: iisaccesslog multiline.pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}' multiline.negate: true multiline.match: after - type: log enabled: true paths: - /iislog/iiserror/*.log fields: type: iiserrorlog multiline.pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}' multiline.negate: true multiline.match: after fields: env: iis output.redis: enabled: true hosts: ["redis:6379"] key: "iislog" output.console: enabled: false pretty: true 主要設定 #### 拿的地方 iis的正常log和錯誤log #### 存的地方 存進redis 使用docker run filebeat 有幾點事情需要注意 1.filebeat.yml 這個檔案要由外部映射進去容器裡面 2.filebeat.yml 因為是映射進去的 所以裡面的路徑 - /iislog/iissuccess/*/*.log - /iislog/iiserror/*.log 要記得不是用本機的路徑 否則永遠抓不到log ##### 3.建立docker-compose version: '3' services: filebeat: build: D:\filebeattest #dockerfile放在這目錄底下一起做build image: filebeatmy:1 container_name: filebeat-test volumes: - C:/inetpub/logs/LogFiles:/iislog/iissuccess #iislog檔 - C:/Windows/System32/LogFiles/HTTPERR:/iislog/iiserror #iiserrorlog檔 networks: - elknew redis: container_name: redis image: redis:6 ports: - "6379:6379" networks: - elknew networks: elknew: p.s filebeat.yml 這邊有兩種映射進去的方式 1.dockerfile copy 2.docker-compose -v 以上兩種都可以 iis的檔案要映射到 filebeat的容器裡面才抓得到 ) 最後可以到容器裡面檢查資料夾在不在 ![](https://i.imgur.com/cMLiFZj.png) ![](https://i.imgur.com/vREbxv3.png) 這邊也順便加上redis的設定 下一章會提到 chown用法 用來更改某個目錄或文件的用戶名和用戶組的 chown 用戶名:組名 文件路徑(可以是就對路徑也可以是相對路徑) 例1:chown root:root /tmp/tmp1 就是把tmp下的tmp1的用戶名和用戶組改成root和root(只修改了tmp1的屬組). 例2:chown -R root:root /tmp/tmp1 就是把tmp下的tmp1下的所有文件的屬組都改成root和root。