系列文章目录
`
文章目录
- 系列文章目录
- 一、Filebeat+ELK
- 1.Filebeat+ELK 部署
- 2.Filebeat 节点上操作
- 二、Filter
- 1.内置正则表达式调用
- 总结
一、Filebeat+ELK
1.Filebeat+ELK 部署
Node1节点(2C/4G):node1/192.168.169.10 Elasticsearch
Node2节点(2C/4G):node2/192.168.169.20 Elasticsearch
Apache节点:apache/192.168.169.30 Logstash Kibana Apache
Filebeat节点:filebeat/192.168.169.40 Filebeat
先在Filebeat节点添加网页文件
2.Filebeat 节点上操作
1.安装 Filebeat
#上传软件包 filebeat-6.7.2-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64/ /usr/local/filebeat
2.设置 filebeat 的主配置文件
cd /usr/local/filebeat
vim filebeat.yml
filebeat.inputs:
- type: log #指定 log 类型,从日志文件中读取消息enabled: truepaths:- /var/log/httpd/access_log #指定监控的日志文件
tags: ["filebeat"] #设置索引标签
fields: #可以使用 fields 配置选项设置一些参数字段添加到 output 中service_name: httpdlog_type: accessfrom: 192.168.169.30 #要收集日志的来源
--------------Elasticsearch output-------------------
(全部注释掉)
----------------Logstash output---------------------
output.logstash:hosts: ["192.168.169.20:5044"] #指定 logstash 的 IP 和端口
#启动 filebeat
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
#-e:输出到标准输出,禁用syslog/文件输出
#-c:指定配置文件
#nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行
4.在 Logstash 组件所在节点上新建一个 Logstash 配置文件
cd /etc/logstash/conf.d
vim filebeat.conf
input {beats {port => "5044"}
}
filebeat发送给logstash的日志内容会放到message字段里面,logstash使用grok插件正则匹配message字段内容进行字段分割
Kibana自带grok的正则匹配的工具:http://:5601/app/kibana#/dev_tools/grokdebugger
#%{IPV6}|%{IPV4} 为 logstash 自带的 IP 常量
filter {grok {match => ["message", "(?<remote_addr>%{IPV6}|%{IPV4})[\s\-]+\[(?<logTime>.*)\]\s+\"(?<method>\S+)\s+(?<url_path>.+)\"\s+(?<rev_code>\d+) \d+ \"(?<req_addr>.+)\" \"(?<content>.*)\""]}
}
output {elasticsearch {hosts => ["192.168.169.10:9200","192.168.169.20:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}
#启动 logstash
logstash -f filebeat.conf
5.浏览器访问 http://192.168.169.10:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引“httpd-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
二、Filter
表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
grok 对若干个大文本字段进行再分割成一些小字段 (?<字段名>正则表达式) 字段名: 正则表达式匹配到的内容
date 对数据中的时间格式进行统一和格式化
mutate 对一些无用的字段进行剔除,或增加字段
mutiline 对多行数据进行统一编排,多行合并或拆分
grok 正则捕获插件
grok 使用文本片段切分的方式来切分日志事件
1.内置正则表达式调用
SYNTAX代表匹配值的类型,例如,0.11可以NUMBER类型所匹配,10.222.22.25可以使用IP匹配
SEMANTIC表示存储该值的一个变量声明,它会存储在elasticsearch当中方便kibana做字段搜索和统计,你可以将一个IP定义为客户端IP地址client_ip_adress,
如%{IP:client_ip_address},所匹配到的值就会存储到client_ip_address这个字段里边,类似数据库的列名,也可以把event log
中的数字当成数字类型存储在一个指定的变量当中,比如响应时间http_response_time,假设event log record 如下:
messages: 192.168.169.10 GET /index.html 15824 0.043
可以使用如下grok pattern来匹配这种记录
%{IP:client_id_address} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:http_response_time}