logstash
文章目录
1、为什么使用ELK
ELK=Elasticsearch+Logstash+Kibana
E:数据的存储和搜索。
L:日志数据的过滤和收集。
K:web方式的前端展现。
传统获取和分析日志的方法繁琐而且不高效。
使用ELK能灵活过滤日志。
使用ELK能实时分析日志。
使用ELK能直观展示分析的结果,很轻松的出各种报表。
2、什么是Logstash?
Logstash是一个开源的数据收集引擎,它具有备实时数据传输能力。
它可以统一过滤来自不同源的数据,并按照开发者制定的规范输出到目的地,
支持正则表达式。
由于日志文件来源多(如:系统日志、服务器日志、tomcat日志、nginx日志等),
且内容杂乱,不便于人类进行观察。
因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容
3.安装logstash
3.1、下载
下载地址:https://www.elastic.co/cn/downloads/
- 将logstash下载并上传到Linux中,解压到需要安装的目录。这里安装在:/usr/local中
3.2、修改jvm.options配置文件
进入cd config/目录
jvm.options配置文件
如果是虚拟机或者服务器的内存地址较小,这里可以修改成512m
-Xms512m
-Xmx512m
进入bin目录
3.2.1、启动测试
简单的启动测试一波,是否可以使用。
启动很慢,需要等待。
./logstash -e 'input {stdin{}} output{stdout{}}'
-e后面的是配置文件,stdin标准输入,stdout标准输出。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191127151826768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODUzNDQ3,size_16,color_FFFFFF,t_70)
这样就启动成功。
- 测试一下
在屏幕上输入什么就会在屏幕上输出什么。
@timestamp 输出的时间
host 主机名称
message 输出的数据
3.3、复制logstash-sample.conf为logstash.conf配置文件并修改
复制logstash-sample.conf配置文件,修改名称为:logstash.conf,启动的收就使用该配置文件。
cp logstash-sample.conf logstash.conf
将logstash.conf中的数据全部删除,重新复制下面的数据。
input {
# 从文件读取日志信息
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
filter {
}
output {
# 标准输出
stdout {}
}
input、filter、output都数据插件。
input:输入插件
filter:过滤插件
output:输出插件
3.4、启动
进入/usr/local/logstash-7.3.2目录,启动是指定logstash.conf配置文件
创建启动脚本
touch startup.sh
#!/bin/bash
nohup /usr/local/logstash-7.3.2/bin/logstash -f /usr/local/logstash-7.3.2/config/logstash.conf >> /usr/local/logstash-7.3.2/output.log 2>&1 &
或者
./bin/logstash -f config/logstash.conf
4、logstash插件
插件地址:https://github.com/logstash-plugins
4.1、Gemfile文件
Gemfile是logstash的插件保存文件,Gemfile在logstash根目录下。
- 指定插件名查询
cat Gemfile | grep 插件名
4.2、安装gem和ruby
注意:安装插件需要使用到 gem 工具,而 gem 工具需要使用 ruby,所以先安装ruby。
4.2.1、安装 ruby
yum install ruby
4.2.2、安装 gem
建议安装2.6.x以上版本,因为需要切换国内源问题。
- 上传到/opt文件下,并解压。
cd rubygems-2.6.12
- 安装命令
ruby setup.rb
- 查询版本
gem -v
- 查看源
gem sources -l
- 切换源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
- 忽略SSL认证
因为国内源是https的,所以需要忽略SSL认证
在root目录下有一个 .gemrc 的隐藏文件下添加 ssl_verify_mode: 0
vim .gemrc
4.3、安装mongdb插件
插件地址:https://github.com/logstash-plugins
cd bin/
安装命令:
./logstash-plugin install logstash-output-mongodb
- 到logstash根目录Gemfile文件查看是否存在mongodb
cat Gemfile | grep mongodb
5、logstash.conf配置讲解
插件详细地址:https://www.elastic.co/guide/en/logstash/6.6/index.html
查看插件文档时,需要找到logstash相应的版本。
- 数据处理流程
input->解码->filter->编码->output
这里的input、filter、output都属于插件。
先输入,解码,过滤,编码,输出(可以输入到屏幕、elasticsearch等)
5.1、input插件
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
filter {
}
output {
stdout {
}
}
input中的path是读取日志的路径,/var/log/messages表示系统日志。
type随便写,表示该日志读取出来起一个名字,如果数据是写入elastic search中好区分。
- 测试一下:
将logstash.conf复制一份,命名为logstash2.conf,并写入配置文件信息。
启动:
./bin/logstash -f config/logstash2.conf
这样就将/var/log/messages(系统配置文件)文件中的信息全部读取出来了。
5.2、filter插件
复制logstash.conf配置文件,命名为logstash3.conf,并写入一下配置文件。
input {
stdin {
}
}
filter {
mutate {
split => ["message", "|"]
}
}
output {
stdout {
}
}
在屏幕上出入数据,以“|”分割成数组输出
- 启动:
./bin/logstash -f config/logstash3.conf
在屏幕上输入带“|”的数据
例如:
这里会以|分割数据|不信就来测试一下|如果真的分割|你一个要仔细观看文档|我并没有欺骗你|知道了吗
5.3、output插件
将数据输入到elasticsearch中
-
首先启动elasticsearch https://blog.csdn.net/qq_41853447/article/details/103201684#Elasticsearch_228
-
在启动kibana: https://blog.csdn.net/qq_41853447/article/details/103201684#kibana_799
kibana的使用:https://blog.csdn.net/qq_41853447/article/details/103199435
- 将logstash.conf文件复制一份,命名为logstash4.conf,写入一下配置文件。
input {
# 从文件读取日志信息
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
filter {
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "msg-%{+YYYY.MM.dd}"
}
}
hosts:表示elastic search的地址和端口号。
index:表示创建索引。