🌟Filebeat采集數據的原理
Filebeat默認按行采集數據,如果數據沒有換行,則該條數據無法采集到
屬于有狀態服務,可以記錄上一次采集數據的位置點信息
修改配置文件
vim /etc/filebeat/config/03-log-to-console.yaml
filebeat.inputs:
- type: logpaths:- /tmp/student.jsonoutput.console:pretty: true
啟動Filebeat
filebeat -e -c /etc/filebeat/config/03-log-to-console.yaml
發送測試數據
echo haha >> /tmp/student.json
offset記錄的是上一次采集數據的位置點,haha是第一行,所以offset偏移量是0
echo www >> /tmp/student.json[root@elk92 ~]# tail -1 /var/lib/filebeat/registry/filebeat/log.json
{"k":"filebeat::logs::native::1703963-2052","v":{"id":"native::1703963-2052","source":"/tmp/student.json","timestamp":[45803107,1756344477],"identifier_name":"native","FileStateOS":{"inode":1703963,"device":2052},"prev_id":"","offset":0,"ttl":-1,"type":"log"}}
echo -n .zhubl. >> /tmp/student.json
echo xyz >> /tmp/student.json
🌟Filebeat采集nginx日志
安裝nginx
apt -y install nginx
systemctl start nginx
ss -ntl | grep 80
訪問nginx測試
http://10.0.0.92
編寫Filebeat采集nginx日志
vim /etc/filebeat/config/04-nginx-to-es.yaml
filebeat.inputs:
- type: logpaths:- /var/log/nginx/access.log*#output.console:
# pretty: true# 將數據寫入到ES集群
output.elasticsearch:# 指定ES集群地址hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]# 指定ES的索引名稱index: zhu-nginx# 禁用索引的生命周期,否則自定義索引名稱無效
setup.ilm.enabled: false
# 定義索引模板
setup.template.name: "zhu-nginx"
# 定義索引模板的匹配模式
setup.template.pattern: "zhu-nginx*"
# 如果索引模板已經存在是否覆蓋
setup.template.overwrite: false
# 配置索引模板
setup.template.settings:# 指定分片數量index.number_of_shards: 3# 指定副本數量index.number_of_replicas: 0
啟動Filebeat
filebeat -e -c /etc/filebeat/config/04-nginx-to-es.yaml
Kibana查看數據
🌟Filebeat采集tomcat日志案例
下載tomcat
官網下載tomcat:https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.10/bin/apache-tomcat-11.0.8.tar.gz
wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.10/bin/apache-tomcat-11.0.8.tar.gz
解壓軟件包
tar xf apache-tomcat-11.0.8.tar.gz -C /usr/local/
添加環境變量
1.編輯環境變量配置文件
vim /etc/profile.d/tomcat.sh
#!/bin/bash
export TOMCAT_HOME=/usr/local/apache-tomcat-11.0.8
export JAVA_HOME=/usr/share/elasticsearch/jdk
export PATH=$PATH:$TOMCAT_HOME/bin:$JAVA_HOME/bin2.加載環境變量配置文件
source /etc/profile.d/tomcat.sh
啟動tomcat
startup.sh
瀏覽器訪問
http://10.0.0.93:8080/
編寫Filebeat的配置文件
vim /etc/filebeat/config/05-tomcat-to-es.yml
filebeat.inputs:
- type: logpaths:- /usr/local/apache-tomcat-11.0.8/logs/localhost_access_log.*.txt#output.console:
# pretty: true# 將數據寫入到ES集群
output.elasticsearch:# 指定ES集群地址hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]# 指定ES的索引名稱index: zhu-tomcat# 禁用索引的生命周期,否則自定義索引名稱無效
setup.ilm.enabled: false
# 定義索引模板
setup.template.name: "zhu-tomcat"
# 定義索引模板的匹配模式
setup.template.pattern: "zhu-tomcat*"
# 如果索引模板已經存在是否覆蓋
setup.template.overwrite: false
# 配置索引模板
setup.template.settings:# 指定分片數量index.number_of_shards: 3# 指定副本數量index.number_of_replicas: 0
啟動Filebeat
filebeat -e -c /etc/filebeat/config/06-tomcat-to-es.yaml
Kibana查看數據
🌟Filebeat多實例
如果在工作中需要啟動多個Filebeat實例,則可以使用" --path.data"參數指定不同的數據目錄,若目錄不存在則會自動創建
如果工作中Filebeat停止可以使用kill命令操作來停止服務
啟動實例一
filebeat -e -c /etc/filebeat/config/04-nginx-to-es.yml
啟動實例二
filebeat -e -c /etc/filebeat/config/05-tomcat-to-es.yaml --path.data /tmp/xixi
查看進程信息
ps -ef | grep filebeat
🌟Filebeat采集多種業務日志
編寫Filebeat配置文件
vim /etc/filebeat/config/06-multiple_input-to-es.yaml
filebeat.inputs:
- type: logpaths:- /var/log/nginx/access.log*tags: "nginx"
- type: logpaths:- /usr/local/apache-tomcat-11.0.8/logs/localhost_access_log.*.txttags: "tomcat"output.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]# 根據條件判斷,將數據寫入不同的索引indices:# 指定索引的名稱- index: "zhu-contains-nginx-%{+yyyy.MM.dd}"# 指定匹配條件when.contains:tags: "nginx"- index: "zhu-contains-tomcat-%{+yyyy.MM.dd}"when.contains:tags: "tomcat"setup.ilm.enabled: false
setup.template.name: "zhu-contains"
setup.template.pattern: "zhu-contains*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 0
啟動實例
filebeat -e -c /etc/filebeat/config/06-multiple_input-to-es.yaml
kibana出圖展示
🌟Filebeat采集docker日志
安裝Filebeat
dpkg -i filebeat-7.17.29-amd64.deb
編寫Filebeat配置文件
vim /etc/filebeat/docker-to-es.yaml
filebeat.inputs:
- type: containerpaths: - '/var/lib/docker/containers/*/*.log'# 添加處理器。
processors:# 添加docker的元數據信息。- add_docker_metadata:# 找本地的套接字文件。host: "unix:///var/run/docker.sock"output.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]index: zhu-dockersetup.ilm.enabled: false
setup.template.name: "zhu-docker"
setup.template.pattern: "zhu-docker*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 6index.number_of_replicas: 0
啟動實例
filebeat -e -c /etc/filebeat/docker-to-es.yaml
kibana查詢
🌟Filebeat排除不必要的行exclude_lines
編寫Filebeat配置文件
vim /etc/filebeat/docker-to-es.yaml
filebeat.inputs:
- type: containerpaths: - '/var/lib/docker/containers/*/*.log'# 排除不必要的行。exclude_lines: ['.*notice','.*entrypoint','.*listen']# 添加處理器。
processors:# 添加docker的元數據信息。- add_docker_metadata:# 找本地的套接字文件。host: "unix:///var/run/docker.sock"output.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]index: zhu-dockersetup.ilm.enabled: false
setup.template.name: "zhu-docker"
setup.template.pattern: "zhu-docker*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 6index.number_of_replicas: 0
啟動Filebeat實例
filebeat -e -c /etc/filebeat/docker-to-es.yaml
Kibana出圖展示
🌟Kibana分析容器的相關指標
創建可視化
選擇基于聚合
選擇指標
選擇docker
計數顯示記錄的日志總數
顯示容器的數量
🌟Filebeat模塊應用案例
啟用模塊
filebeat modules enable nginx tomcat
修改nginx的模塊文件
vim /etc/filebeat/modules.d/nginx.yml
- module: nginxaccess:enabled: truevar.paths: ["/var/log/nginx/access.log*"]error:enabled: truevar.paths: ["/var/log/nginx/error.log*"]ingress_controller:enabled: false
修改tomcat的模塊文件
vim /etc/filebeat/modules.d/tomcat.yml
- module: tomcatlog:enabled: truevar.input: filevar.paths:- /usr/local/apache-tomcat-11.0.8/logs/localhost_access_log.*.txt
修改Filebeat的配置文件
vim /etc/filebeat/config/07-modules-to-es.yaml
# 啟用Filebeat模塊
filebeat.config.modules:# 指定模塊的路徑path: ${path.config}/modules.d/*.yml# 是否支持熱加載配置reload.enabled: trueoutput.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]index: zhu-modules-xixisetup.ilm.enabled: false
setup.template.name: "zhu-modules"
setup.template.pattern: "zhu-modules*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 0
啟動Filebeat實例
filebeat -e -c /etc/filebeat/config/07-modules-to-es.yaml
🌟基于Filebeat的模塊分析nginx訪問日志
Filebeat模塊配置
vim /etc/filebeat/modules.d/nginx.yml
- module: nginxaccess:enabled: truevar.paths: ["/root/access.log*"]error:enabled: falsevar.paths: ["/var/log/nginx/error.log*"]ingress_controller:enabled: false
編寫Filebeat配置文件
vim /etc/filebeat/config/08-modules_nginx-to-es.yaml
filebeat.config.modules:path: ${path.config}/modules.d/nginx.ymlreload.enabled: trueoutput.elasticsearch:hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]index: zhu-modules-efk-nginxsetup.ilm.enabled: false
setup.template.name: "zhu-modules"
setup.template.pattern: "zhu-modules*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 0
啟動Filebeat實例
filebeat -e -c /etc/filebeat/config/08-modules_nginx-to-es.yaml
Kibana出圖分析指標
wc -l /root/access.log