目錄
一、Filebeat收集單個日志
1.配置收集日志到文件
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
output.file:
path: "/tmp"
filename: "filebeat.log"
2.配置收集日志到ES
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
3.配置收集日志為json格式
1)配置
#由於收集日志內容還是寫到了message,沒有辦法作圖
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
# keys_under_root
默認情況下,解碼后的JSON放在輸出文檔中的“json”鍵下。 如果啟用此設置,則會將鍵復制到輸出文檔的頂層。 默認值是false。
# overwrite_keys
如果啟用了keys_under_root和此設置,則來自解碼的JSON對象的值會覆蓋Filebeat通常添加的字段(類型,源,偏移量等)以防沖突。
2)修改Nginx日志格式
#filebeat只支持某種json格式寫法
[root@web01 ~]# vim /etc/nginx/nginx.conf
... ...
log_format log_json '{ "time_local": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"upstream_time": "$upstream_response_time",'
'"request_time": "$request_time" }';
... ...
3)重啟
1.重啟Nginx
2.重啟Filebeat
3.刪除原來的索引
4.清空Nginx日志
4.收集日志配置指定索引名稱
1)配置
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
index: "nginx_log_%{+YYYY-MM-dd}"
setup.template.enabled: false
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
#模板的名稱
setup.template.name: "nginx"
#模板模式,通配符-*用於匹配每日索引
setup.template.pattern: "nginx-*"
#是否覆蓋現有模板
setup.template.overwrite: false
#禁用模板加載
setup.template.enabled: false
2)指定分片數
[root@web01 ~]# vim /etc/filebeat/filebeat.yml.bak
setup.template.settings:
index.number_of_shards: 3
5.收集日志到redis
1)配置
# 這里指定redis的密碼為123
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.redis:
hosts: ["172.16.1.51"]
port: "6379"
key: "nginx_access"
password: 123
db: 0
2)查看redis
#訪問Nginx頁面后,查看redis是否有數據
127.0.0.1:6379> keys *
1) "nginx_access"
127.0.0.1:6379> TYPE nginx_access
list
127.0.0.1:6379> LLEN nginx_access
(integer) 8
127.0.0.1:6379> LRANGE nginx_access 0 -1
6.使用logstash將redis數據取出到ES
# 建議redis的數據通過logstash進行取出,不要使用filebeat,因為logstash可以對具體索引拿取數據,而不是像filebeat只能指定host。
[root@web01 conf.d]# vim redis_to_es.conf
input {
redis {
host => "172.16.1.51"
port => "6379"
db => "0"
data_type => "list"
key => "nginx_access"
password => "123"
}
}
output {
elasticsearch {
hosts => ["10.0.0.51:9200"]
index => "nginx_access_%{+YYYY-MM-dd}"
}
}
7.filebeat收集日志到logstash
1)配置收集日志到logstash
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.logstash:
hosts: ["172.16.1.52:3456"]
#如果啟動失敗,查看日志,應該是172.16.1.52服務器的3456端口沒有啟動,需要先啟動52的logstash
2)配置logstash收集日志到ES
[root@db02 ~]# vim /etc/logstash/conf.d/filebeat_logstash_es.conf
input {
beats {
port => 3456
codec => "json"
}
}
output {
elasticsearch {
hosts => ["10.0.0.51:9200"]
index => "nginx_filebeat_logstash_es"
}
}
3)查看es數據
二、filebeat收集多日志
1.收集多日志到ES
1)方式一:
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
- type: log
enable: true
paths:
- /var/log/messages
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
indices:
- index: "nginx_%{+YYYY-MM-dd}"
when.contains:
source: "/var/log/nginx/access.log"
- index: "message_%{+YYYY-MM-dd}"
when.contains:
source: "/var/log/messages"
setup.template.enabled: false
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
2)方式二:
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["nginx"]
- type: log
enable: true
paths:
- /var/log/messages
tags: ["messages"]
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
indices:
- index: "nginx_%{+YYYY-MM-dd}"
when.contains:
tags: "nginx"
- index: "message_%{+YYYY-MM-dd}"
when.contains:
tags: "messages"
setup.template.enabled: false
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
三、filebeat收集java報錯
1)配置
[root@web01 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/nginx/access.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
output.elasticsearch:
hosts: ["10.0.0.51:9200"]
index: "tomca_error_%{+YYYY-MM-dd}"
setup.template.enabled: false
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
2)導入錯誤日志查看