logstash简介
logstash简介
logstash是一个开源的数据采集工具,通过数据源采集数据.然后进行过滤,并自定义格式输出到目的地。
数据分为:
-
结构化数据 如:mysql数据库里的表等
-
半结构化数据 如: xml,yaml,json等
-
非结构化数据 如:文档,assets,音频,视频等
logstash可以采集任何格式的数据,当然我们这里主要是讨论采集系统日志,服务日志等日志类型数据。
官方产品介绍:https://www.elastic.co/cn/products/logstash
input插件: 用于导入日志源 (==配置必须==)
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
filter插件: 用于过滤(==不是配置必须的==)
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
output插件: 用于导出(==配置必须==)
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
logstash部署
在logstash服务器上确认openjdk安装
[root@vm3 ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
在logstash服务器上安装logstash
[root@vm3 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.5-x86_64.rpm
[root@vm3 ~]# rpm -ivh logstash-7.17.5-x86_64.rpm
配置logstash主配置文件
#创建一个子配置文件的目录
[root@logstash ~]#mkdir -p /etc/logstash/conf.d
[root@vm3 ~]# cat /etc/logstash/logstash.yml |grep -v '#' |grep -v '^$'
path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d/ 打开注释,并加上配置目录路径
path.logs: /var/log/logstash
http.host: "10.1.1.13" # 打开注释,并改为本机IP(这是用于xpack监控用,但要收费,所以在这里不配置也可以)
启动测试
[root@vm3 ~]# cd /usr/share/logstash/bin
使用下面的空输入和空输出启动测试一下
[root@vm3 bin]# ./logstash -e 'input {stdin {}} output {stdout {}}'
运行后,输入字符将被stdout做为标准输出内容输出
关闭启动
测试能启动成功后,ctrl+c取消,则关闭了
#启动
[root@logstash ~]#systemctl start logstash.service
[root@logstash ~]#systemctl status logstash.service
另一种验证方法:
#上述测试还可以使用如下方法进行:
[root@vm3]# vim /etc/logstash/conf.d/test.conf
input {
stdin {
}
}
filter {
}
output {
stdout {
codec => rubydebug #省略, =>
}
}
[root@vm3 bin]# pwd
/usr/share/logstash/bin
[root@vm3 bin]# ./logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test.conf -t
......
Config Validation Result: OK. Exiting Logstash
--path.settings 指定logstash主配置文件目录
-f 指定片段配置文件
-t 测试配置文件是否正确
codec => rubydebug这句可写可不定,默认就是这种输出方式
#测试了配置文件是正确的,是不是要测试一下,采集--》数据清洗【没有写代码】--》输出
#stdin -->filter(空)-->stdou
#-r参数很强大,会动态装载配置文件,也就是说启动后,可以不用重启修改配置文件
[root@vm3 bin]# ./logstash --path.settings /etc/logstash -r -f /etc/logstash/conf.d/test.conf
......此处省略提示1万行....
The stdin plugin is now waiting for input:
haha #stdin
{ #下面一堆事stdout
"@timestamp" => 2019-07-02T10:40:10.839Z,
"message" => "haha",
"host" => "vm3.cluster.com",
"@version" => "1"
}
hehe
{
"@timestamp" => 2019-07-02T10:40:11.794Z,
"message" => "hehe",
"host" => "vm3.cluster.com",
"@version" => "1"
}
#退出:CTRL+D/C
日志采集
采集messages日志
这里以/var/log/messages为例,只定义input输入和output输出,不考虑过滤
[root@vm3 bin]# vim /etc/logstash/conf.d/test.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts => ["es02:9200"]
index => "test-%{+YYYY.MM.dd}"
}
}
[root@vm3 bin]# ./logstash --path.settings /etc/logstash/ -r -f /etc/logstash/conf.d/test.conf &
后台运行如果要杀掉,请使用pkill java或ps查看PID再kill -9清除
通过浏览器访问es-head验证
项目实践:
1, 在logstash那台服务器上做一些操作(比如,重启下sshd服务), 让/var/log/message有新的日志信息,然后验证es-head里的数据。
结果: 会自动更新, 浏览器刷新就能在es-head上看到更新的数据。
2, kill掉logstash进程(相当于关闭), 也做一些操作让/var/log/message日志有更新,然后再次启动logstash。
结果: 会自动连上es集群, es-head里也能查看到数据的更新。
采集多日志源
[root@vm3 bin]# vim /etc/logstash/conf.d/test.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
type => "messages"
}
file {
path => "/var/log/yum.log"
start_position => "beginning"
type => "yum"
}
}
filter {
}
output {
if [type] == "messages" {
elasticsearch {
hosts => ["es02:9200","es01:9200"]
index => "messages-%{+YYYY-MM-dd}"
}
}
if [type] == "yum" {
elasticsearch {
hosts => ["es02:9200","es01:9200"]
index => "yum-%{+YYYY-MM-dd}"
}
}
}
#作业:
nigix php zabbix
- 点赞
- 收藏
- 关注作者
评论(0)