2018年04月6日网站服务器迁移完成……

centos6.5 安装logstash

技术流 苏 demo 116℃

写在前面的介绍:

Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。

环境依赖:Java,建议jdk1.8

(这里省略jdk1.8和es安装步骤,详细可以参考https://www.libaocai.com/search/elasticsearch)

一、下载安装logstash

下载:wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.3.tar.gz

tar -zxvf logstash-5.6.3.tar.gz -C /usr

cd /usr/logstash-5.6.3

bin/logstash #启动

二、配置相关

Logstash 通过管道进行运作,管道有两个必需的元素,输入和输出,还有一个可选的元素,过滤器。

输入插件从数据源获取数据,过滤器插件根据用户指定的数据格式修改数据,输出插件则将数据写入到目的地。

示例:
bin/logstash -e ‘input { stdin { } } output { stdout {} }’

Sending Logstash logs to /usr/logstash-6.5.3/logs which is now configured via log4j2.properties
[2018-12-12T10:59:55,593][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>”path.queue”, :path=>”/usr/logstash-6.5.3/data/queue”}
[2018-12-12T10:59:55,611][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>”path.dead_letter_queue”, :path=>”/usr/logstash-6.5.3/data/dead_letter_queue”}
[2018-12-12T10:59:56,288][WARN ][logstash.config.source.multilocal] Ignoring the ‘pipelines.yml’ file because modules or command line options are specified
[2018-12-12T10:59:56,326][INFO ][logstash.runner ] Starting Logstash {“logstash.version”=>”6.5.3”}
[2018-12-12T10:59:56,370][INFO ][logstash.agent ] No persistent UUID file found. Generating new UUID {:uuid=>”27979ac2-7e30-449b-8b09-90bfd4f15be8″, :path=>”/usr/logstash-6.5.3/data/uuid”}
[2018-12-12T10:59:59,826][INFO ][logstash.pipeline ] Starting pipeline {:pipeline_id=>”main”, “pipeline.workers”=>4, “pipeline.batch.size”=>125, “pipeline.batch.delay”=>50}
[2018-12-12T10:59:59,967][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>”main”, :thread=>”#”}
The stdin plugin is now waiting for input:
[2018-12-12T11:00:00,056][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-12-12T11:00:00,587][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}

随机输入字符:sudemo

显示示例:

关于logstash配置文件

在生产环境中,Logstash 的管道要复杂很多,可能需要配置多个输入、过滤器和输出插件。
因此,需要一个配置文件管理输入、过滤器和输出相关的配置。

输入插件允许一个特定的事件源可以读取到 Logstash 管道中,配置在 input {} 中,且可以设置多个。

输出插件将事件数据发送到特定的目的地,配置在 output {} 中,且可以设置多个。

cd /usr/logstash-5.6.3 

vim logstash.conf

配置格式示例:以系统日志示例

input {
# 从文件读取日志信息
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
# filter {
#
# }
output {
# 标准输出
stdout { codec => rubydebug }
# 输出到 elasticsearch
elasticsearch {
hosts => ["172.16.100.10:9200"]
index => "error-%{+YYYY.MM.dd}"
}
}

启动:bin/logstash -f logstash.conf

结果示例:

编码解码插件本质是一种流过滤器,配合输入插件或输出插件使用。

安装Multiline codec 插件  
bin/logstash-plugin install logstash-codec-multiline

配置示例:

input {
# 从文件读取日志信息
file {
path => "/var/log/error.log"
type => "error"
start_position => "beginning"
# 使用 multiline 插件
codec => multiline {
# 通过正则表达式匹配,具体配置根据自身实际情况而定
pattern => "^\d"
negate => true
what => "previous"
}
}
}
# filter {
#
# }
output {
# 输出到 elasticsearch
elasticsearch {
hosts => ["172.16.100.10:9200"]
index => "error-%{+YYYY.MM.dd}"
}
}

过滤器插件位于 Logstash 管道的中间位置,对事件执行过滤处理,配置在 filter {},且可以配置多个,安装命令:
bin/logstash-plugin install logstash-filter-grok

示例:

input {
stdin {}
}
filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER
:duration}" }
}
}
output {
stdout {
codec => "rubydebug"
}
}
打赏

转载请注明:苏demo的博客 » centos6.5 安装logstash

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)