Logstash
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
集中、转换和存储你的数据
Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsearch)
INPUTS (输入插件): 采集各种格式、大小和来源的数据
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
FILTERS (过滤器插件):实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 整体处理不受数据源、格式或架构的影响
我们丰富的过滤库给数据过滤提供了无限的可能性。
OUTPUTS(输出插件):选择你的存储,导出你的数据
尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
安装Logstach
1、安装JDK
Logstach是基于Java开发是一个Java程序,运行在Jvm中,所以第一步要安装JDK。
yum install -y java-1.8.0-openjdk-devel
2、下载Logstach
https://www.elastic.co/cn/downloads/logstash,是Logstach的官方站点,如果需要下载最新的版本,进入官网下载即可。可以下载到本地电脑然后再导入CentOS中,也可以直接在CentOS中下载。
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.rpm
2、安装Logstach
# 执行安装命令
rpm -ivh logstash-6.5.4.rpm
warning: logstash-6.5.4.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ########################################### [100%]
1:logstash ########################################### [100%]
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
# 查看下logstash的安装目录
rpm -ql logstash
# 创建一个软连接,每次执行命令的时候不用在写安装路劲(默认安装在/usr/share下)
ln -s /usr/share/logstash/bin/logstash /bin/
好,马上开始我们的第一个例子:
首先,让我们通过最基本的Logstash管道来测试一下刚才安装的Logstash。Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入插件从数据源那里消费数据,过滤器插件根据你的期望修改数据,输出插件将数据写入目的地。
接下来我们输入最基本的管道,例如:
# 执行logstash的命令
logstash -e 'input { stdin { } } output { stdout {} }' # -e是允许命令行指定配置
# 运行成功以后输入:
hello world
然后启动后,输入hello world
# 注:
# -e 执行操作
# input 标准输入
# { input } 插件
# output 标准输出
# { stdout } 插件
#
# 通过rubydebug来输出下更详细的信息
logstash -e 'input { stdin { } } output { stdout {codec => rubydebug} }'
# 执行成功输入:
爱上一匹野马,可我家里没有草原
# stdout输出的结果:
# 如果标准输出还有Elasticsearch中都需要保留应该怎么玩,看下面
logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["192.168.1.111:9200"] } stdout { codec => rubydebug }}'
# 运行成功以后输入:
爱上一匹野马,可我的家里没有草原
# 返回的结果(标准输出中的结果):