ELK 上手4 安装filebeat并读取日志写入Redis
- 一、准备环境
- 二、安装filebeat
- 三、logstash设置
- 四、启动filebeat调试
- 五、到kibana建一个索引,名称与自己建的索引名称一致
- 六、filebeat配置多行日志选项
一、准备环境
- CentOS
- 已安装ELK
二、安装filebeat
官网下载地址:
 https://www.elastic.co/cn/downloads/beats/filebeat
cd ~/
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.2-linux-x86_64.tar.gz
tar -xzvf filebeat-7.16.2-linux-x86_64.tar.gz
rm filebeat-7.16.2-linux-x86_64.tar.gz
cd filebeat-7.16.2-linux-x86_64/
# 修改配置文件 
vim filebeat.yml直接连接logstash:
 设置:
filebeat.inputs:
- type: filestream
  enabled: true
  paths:
    - ./sample.log
 
output.logstash:
  hosts: ["localhost:9600"]显示结果:
[root@local filebeat-7.16.2-linux-x86_64]$ ./filebeat test output
logstash: localhost:9600...
  connection...
    parse host... OK
    dns lookup... OK
    addresses: ::1, 127.0.0.1
    dial up... OK
  TLS... WARN secure connection disabled
  talk to server... OK三、logstash设置
input {
  beats {
    port => 9600
  }
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "你的索引名称_%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}这里定义了4561接收日志,并输出到elasticsearch。
 重新加载logstash。
四、启动filebeat调试
./filebeat -e -c filebeat.yml# 后台启动
nohup ./filebeat -e -c filebeat.yml > /dev/null &五、到kibana建一个索引,名称与自己建的索引名称一致
 然后去Discover,发现这时可以看到日志了,但格式不太友好。
然后去Discover,发现这时可以看到日志了,但格式不太友好。
六、filebeat配置多行日志选项
配置多行日志配置项示例:
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after上面意思是将所有不是以[开头的行与之前行进行合并 。
参数讲解:
multiline.pattern 匹配多行的正则表达式
multiline.negate 多行模式是否禁用,默认为false
multiline.match 如何合并,可选的值是 after 或者 before。
multiline.flush_pattern 指定一个正则表达式,多行将从内存刷新到磁盘。
multiline.max_lines  可以合并成一个事件的最大行数,超出将丢弃,默认值500。正则表达式可以使用:space:表示空格,如:
multiline.pattern: '^[[:space:]]'表示合并以空格开始的行。
可以使用|来表示或操作:
multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'上面表示空格开头或以Caused by:开头的进行合并。
下面是合并反斜杠结束的行,使用一个\转义。$是代表结束符
multiline.pattern: '\\$'针对ThinkPHP日志特点,起始行会有一排 -----,所以可以设置多行匹配模式如下:
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
  multiline.pattern: '^-'
  multiline.negate: true
  multiline.match: after
  encoding: utf-8这时再去kibana看日志显示,点击左侧message,只显示message内容 ,这时右边显示就友好多了:
                
                










