logstash概述
什么是logstash
-是一个数据采集、加工处理以及传输的工具
特点
-所有类型的数据集中处理
-不同模式和格式数据的正常化
-自定义日志格式的迅速扩展
-为自定义数据源轻松添加插件
为什么使用logstash
将日志转化为json使elasticasearch可读
下载
#logstash的配置文件需要在执行文件目录中,但是redhat下载可能会分散文件,所以需要手动将连接放到目录下
ln -s /etc/logstash /usr/share/logstash/config
#查看插件
/usr/share/logstash/bin/logstash-plugin list
#开始
/usr/share/logstash/bin/logstash
配置模块
配置文件位于
/etc/logstash/conf.d/【自定义】.conf 文件名自定义
设置
input {
file {
path => ["/tmp/c.log"]
start_position => "beginning"
sincedb_path => "/var/lib/logstash/sincedb"
}
}
filter{
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
remove_field => ["message"]
}
}
output{
stdout{ codec => "rubydebug" }
elasticsearch {
hosts => ["es-0002:9200","es-0003:9200"]
index => "weblog-%{+YYYY.MM.dd}"
}
}
input
- file插件start_position这个参数指示Logstash从日志文件的开头开始读取数据。如果设置为 "beginning",无论Logstash之前是否处理过该文件,它都会从文件的第一行开始重新读取。
- file插件sincedb是Logstash用来记录每个被监控日志文件的读取位置(即最后一次读到哪一行),如果你希望Logstash每次启动都从日志文件的开头读取,可以把这个路径设为 /dev/null,这样Logstash就会忽略之前保存的读取位置信息。
filter - grok插件的宏定义,可以正则匹配http的日志格式,还有其他宏文件位于/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.3.4/patterns/
- elasticsearch插件,hosts => 指定监听的elasticasearch服务器, index =>以天为单位生成索引
结果
附注
遇到一次目录文件无法被写入的情况,发现问题在于logstash目录权限,如果不属于logstash需要手动改变目录权限
chown -R logstash: /var/log/logstash /var/lib/logstash
systemctl restart logstash.service
web日志实时分析
我们需要将网站服务器的日志实时的被logstash读取
为什么是filebeat?
如果使用nfs共享日志目录到logstash,对nfsIO消耗巨大
如果直接将logstash装到网站服务器,将消耗网站服务器资源
所以使用网站服务器上安装filebeat的方法传送日志内容
什么是filebeat?
-filebeat 是使用 Golang 实现的轻量型日志采集器,也是
Elasticsearch stack 里面的一员。
-filebeat 占用资源非常小,可以忽略不计
-filebeat 本质上是一个agent,可以安装在应用服务器各
个节点上,根据配置读取对应位置的日志文件,并通过网络
上报到相应的服务中
beats 插件概述
-beats 是 logstash input 模块的插件
-配合filebeat,专门用来接收 filebeat 发送过来的日志
-默认监听在 5044 端口上
-可以同时接收多台不同主机发送过来的日志信息
配置filebeat
dnf install -y filebeat
systemctl enable filebeat
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: my-filestream-id # 如果同时配置多个收集器,id不能重复
enabled: true # 打开收集模块
paths:
- /var/log/httpd/access_log # 日志文件路径
...略
# 注释掉 Elasticsearch 配置
# 注释掉 Elasticsearch 配置
...略
output.logstash: # 设置输出模块
hosts: ["192.168.1.27:5044"] # 输出给logstash
...略
# 设置识别标签
fields:
logtype: apache_log
...略
# 清理冗余数据
: processors:
- drop_fields:
fields:
- log
- offset
- agent
- ecs
# 后面内容是发送本机信息的,如不需要可注释掉
rm -f /var/log/httpd/*
systemctl restart filebeat httpd
# 测试验证: 访问页面,观察 logstash 是否能够获取数据
curl http://192.168.1.11/info.php
在logstash上配置
刚才的配置文件只需要改变input即可
input {
beats {
port => 5044
}
}
/usr/share/logstash/bin/logstash #开始调试
标签:ELK,filebeat,log,插件,笔记,input,日志,logstash
From: https://www.cnblogs.com/ling-2945/p/18073343