部署环境:
node1节点(2C/4G):192.168.44.20 (Elasticsearch)
Node2节点(2C/4G):192.168.44.30 (Elasticsearch)
Apache节点:192.168.44.40 (Logstash Kibana Apache)
Filebeat节点:192.168.44.40 (Filebeat)
ELFK集群环境下,Logstash 组件所在节点的/etc/logstash/conf.d目录下,不需要创建system.conf配置文件,即Logstash不需要收集系统日志,因为系统日志将由filebeat收集后发送给Logstash。(安装filebeat后,Logstash会创建filebeat.conf配置文件获取filebeat传来的数据)
#上传软件包 filebeat-6.2.4-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz#更换目录名称为filebeat
mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat
cd /usr/local/filebeatcp filebeat.yml{,.bak}vim filebeat.yml
filebeat.prospectors:
- type: log #指定 log 类型,从日志文件中读取消息enabled: true #修改为truepaths:- /var/log/messages #指定监控的日志文件- /var/log/*.logtags: ["fulebeat"] #设置索引标签fields: #可以使用 fields 配置选项设置一些参数字段添加到 output 中service_name: httpdlog_type: access #日志类型from: 192.168.44.40 #源地址

output.logstash:hosts: ["192.168.44.40:5044"] #指定 logstash 的 IP 和端口#启动 filebeat
nohup ./filebeat -e -c filebeat.yml > filebeat.out & #nohup放入后台启动,并且不会因为终端退出而结束进程#-e:输出到标准输出,禁用syslog/文件输出
#-c:指定配置文件
#nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行

cd /etc/logstash/conf.dcp system.conf filebeat.conf
#复制出一个新的配置文件,对新的配置文件进行修改#修改文件filebeat。conf
vim filebeat.conf
input {beats {port => "5044" #原本是使用文件读取数据,现改为用filebeat读取}
}
output {elasticsearch {hosts => ["192.168.44.20:9200","192.168.44.30:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}" #用过filebeat.yml配置文件定义的字段获取名字}stdout {codec => rubydebug #设置为能输出到屏幕上}
}#启动 logstash
logstash -f filebeat.conf
浏览器访问http://192.168.44.20:9100/ 。

浏览器访问 http://192.168.44.40:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引“filebeat-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。


1、input {}
2、filter {}
常用插件:
3、ourput {}
而对于 Logstash 的 Filter,这个才是 Logstash 最强大的地方。Filter 插件也非常多,我们常用到的 grok、date、mutate、mutiline 四个插件。
对于 filter 的各个插件执行流程,可以看图:

这里就要用到 logstash 的 filter 中的 grok 插件。filebeat 发送给 logstash 的日志内容会放到message 字段里面,logstash 匹配这个 message 字段就可以了。
格式:
匹配格式:(?<字段名>正则表达式) #字段名:正则表达式匹配到的内容
实例1:
(?%{IPV6}|%{IPV4} )(?.+)#对数据进行分割ip字段名为remote_addr, 其他字段名为other_info
实例2:
(?%{IPV6}|%{IPV4} )[\s-]+[(?.+)](?.+)#添加匹配时间字段
实例3:
#分割多个字段(?%{IPV6}|%{IPV4})[\s-]+[(?.+)]\s+"(?\S+)\s+(?.+)"\s+(?\d+)(?.+)
实例4:
cd /etc/logstash/conf.d/cp filebeat.conf filter.confvim filter.confinput {beats {port => "5044"}}filter {grok {match =>["message","(?%{IPV6}|%{IPV4} )[\s-]+[(?.+)]\s+"(?\S+)\s+(?.+)"\s+(?\d+)(?.+)"]}}output {elasticsearch {hosts => ["192.168.44.20:9200","192.168.44.30:9200"]index => "{[filter][service_name]}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}}logstash -f filter.conf #启动
下一篇:基于matlab的排队系统仿真