0
点赞
收藏
分享

微信扫一扫

ELK 上手4 安装filebeat并读取ThinkPHP5日志写入logstash


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建一个索引,名称与自己建的索引名称一致

ELK 上手4 安装filebeat并读取ThinkPHP5日志写入logstash_elk然后去Discover,发现这时可以看到日志了,但格式不太友好。
ELK 上手4 安装filebeat并读取ThinkPHP5日志写入logstash_elasticsearch_02

六、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内容 ,这时右边显示就友好多了:
ELK 上手4 安装filebeat并读取ThinkPHP5日志写入logstash_正则表达式_03


举报

相关推荐

0 条评论