Logstash简介
在分布式的生产环境下我们会有非常多的数据需要从各个服务器中进行采集、汇总。Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。同类产品如flume也是一款日志采集工具,这里不做展开。
组成结构
Logstash 通过管道进行运作,管道有两个必需的元素,输入和输出,还有一个可选的元素,过滤器。
输入
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
过滤器
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。(已包含了上百总插件可直接使用)
Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 整体处理不受数据源、格式或架构的影响
输出
Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。如Elasticsearch、HDFS
第一个HelloWorld
1、下载安装
地址:https://www.elastic.co/cn/downloads/logstash
2、编写配置文件
创建hello.conf:
input { stdin { } }
output {
stdout { codec => rubydebug }
}
配置文件指定了通过控制台的方式进行结果的输入和输出
3、运行查看效果
运行命令,指定刚才编写的conf文件
.\bin\logstash -f .\conf_data\hello.conf
在控制台上输入hello发现会立刻响应一条json数据,其中message属性的内容就是输入的“hello”。Logstash可支持多个输入源和多个输出源,通过对输入数据的清洗加工,转存到如Elasticsearch、HDFS进行数据的检索和分析处理
更多的配置demo可查看:https://www.elastic.co/guide/en/logstash/current/config-examples.html
生产环境架构
生产环境中通常需要对每台服务器进行日志文件的采集汇总,由于Logstash自身采集和处理数据需要耗费大量资源,如果和应用服务部署在一起会造成资源的竞争,因此官方也推出了一个轻量级的采集工具filebeat,专门用于采集服务器产生的日志文件。
Logstash的简单介绍就到这里,后续将对Kafka、Elasticsearch等分布式环境下的常用服务进行介绍和入门,喜欢的朋友欢迎订阅关注我