logstash数据采集
logstash简介• Logstash是一个开源的服务器端数据处理管道。• logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)• Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入:采集各种样式、大小和来源的数据• Logstash 支持各种输入选择 ,同时从
logstash简介
• Logstash是一个开源的服务器端数据处理管道。
• logstash拥有200多个插件,能够同时从多个来源采集数据,
转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多
都是 Elasticsearch。)
• Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。
输入:采集各种样式、大小和来源的数据
• Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。
• 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、
数据存储以及各种 AWS 服务采集数据。
过滤器:实时解析和转换数据
• 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,
识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、
更快速地分析和实现商业价值。
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 简化整体处理,不受数据源、格式或架构的影响
输出:选择您的存储库,导出您的数据
• 尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索
和分析带来无限可能,但它并非唯一选择。
• Logstash 提供众多输出选择,您可以将数据发送到您要指定的地
方,并且能够灵活地解锁众多下游用例。
Logstash安装与配置
软件下载
https://elasticsearch.cn/download/
logstash安装
[root@server5 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
[root@server5 ~]# rpm -ivh logstash-7.6.1.rpm
加到环境变量
[root@server5 ~]# vim .bash_profile
[root@server5 ~]# source .bash_profile
标准输入到标准输出
[root@server5 ~]# logstash -e 'input { stdin { } } output { stdout {} }'
file输出插件
[root@server5 ~]# vim /etc/logstash/conf.d/file.conf
input {
stdin { }
}
output {
file {
path => "/tmp/logstash.txt" # 输出的文件路径
codec => line { format => "custom format: %{message}"} # 定制数据格式
}
stdout { }
}
[root@server5 ~]# logstash -f /etc/logstash/conf.d/file.conf #指定配置文件运行
在标准输入中键入"hello world"后可以查看
[root@server5 ~]# cat /tmp/logstash.txt
custom format: hello world
标准文件输入日志文件
[root@server5 ~]# vim /etc/logstash/conf.d/file.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
}
}
output {
#file {
# path => "/tmp/logstash.txt"
# codec => line { format => "custom format: %{message}"}
#}
stdout { }
}
[root@server5 ~]# logstash -f /etc/logstash/conf.d/file.conf
logstash如何区分设备、文件名、文件的不同版本
logstash会把进度保存到sincedb文件中
# find / -name .sincedb*
/usr/share/logstash/data/plugins/inputs/file/.sincedb_452905a167cf4509fd08acb964fdb20c
# cd /usr/share/logstash/data/plugins/inputs/file/
[root@server5 file]# l.
. .. .sincedb_452905a167cf4509fd08acb964fdb20
[root@server5 file]# cat .sincedb_452905a167cf4509fd08acb964fdb20c
51010973 0 64768 58744 1615282030.717793 /var/log/messages
sincedb文件内容解释
[root@server5 file]# cat .sincedb_452905a167cf4509fd08acb964fdb20c
51010973 0 64768 58744 1615282030.717793 /var/log/messages
sincedb文件一共6个字段
- inode编号
- 文件系统的主要设备号
- 文件系统的次要设备号
- 文件中的当前字节偏移量
- 最后一个活动时间戳(浮点数)
- 与此记录匹配的最后一个已知路径
在运行时,只显示最新的日志,不显示之前的。
Syslog插件
root@server5 ~]# cd /etc/logstash/conf.d/
[root@server5 conf.d]# vim file.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
}
}
output {
#file {
# path => "/tmp/logstash.txt"
# codec => line { format => "custom format: %{message}"}
#}
elasticsearch {
hosts => ["172.25.3.1:9200"]
index => "syslog-%{+yyyy.MM.dd}"
}
stdout { }
}
[root@server5 conf.d]# logstash -f file.conf
命令行输出结果:
[root@server5 conf.d]# cat file.conf
input {
#file {
#path => "/var/log/messages"
#start_position => "beginning"
syslog {}
#}
}
output {
#file {
# path => "/tmp/logstash.txt"
# codec => line { format => "custom format: %{message}"}
#}
elasticsearch {
hosts => ["172.25.3.1:9200"]
index => "message-%{+yyyy.MM.dd}"
}
stdout { }
}
[root@server5 conf.d]# logstash -f file.conf
[root@server4 ~]# vim /etc/rsyslog.conf
*.* @@172.25.3.5:514
[root@server4 ~]# systemctl restart rsyslog.service
默认会开启514端口
多行过滤插件
多行过滤可以把多行日志记录合并为一行事件
[root@server5 conf.d]# cat demo.conf
input {
stdin {
codec => multiline {
pattern => "^EOF"
negate => "true"
what => "previous"
}
}
}
output {
stdout {}
}
[root@server5 conf.d]# logstash -f demo.conf
[root@server4 ~]# cd /var/log/elasticsearch/
[root@server4 elasticsearch]# scp my-es.log server5:/var/log/
[root@server5 conf.d]# vim file.conf
input {
file {
path => "/var/log/my-es.log"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => "true"
what => "previous"
}
}
#syslog {}
}
output {
#file {
# path => "/tmp/logstash.txt"
# codec => line { format => "custom format: %{message}"}
#}
elasticsearch {
hosts => ["172.25.3.1:9200"]
index => "my-es-%{+yyyy.MM.dd}"
}
stdout { }
}
[root@server5 conf.d]# logstash -f file.conf
grok过滤插件
apache服务日志过滤实战
[root@server5 conf.d]# cat apache.conf
input {
file {
path => "/var/log/httpd/access_log"
start_position => "beginning"
}
#syslog {}
}
filter{
grok {
match => {"message" => "%{HTTPD_COMBINEDLOG}"}
}
}
output {
#file {
# path => "/tmp/logstash.txt"
# codec => line { format => "custom format: %{message}"}
#}
elasticsearch {
hosts => ["172.25.3.1:9200"]
index => "apachelog-%{+yyyy.MM.dd}"
}
stdout { }
}
[root@server5 conf.d]# logstash -f apache.conf
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)