我们大多数人已经熟悉 Elastic 产品。 在此博客中,我们将逐步介绍配置 Logstash 以使用多个管道摄取和处理数据的步骤。
Logstash 是一种开源数据处理管道,可让你摄取、转换和输出数据。 它是从各种来源收集和处理大量数据的强大工具,可用于管理和分析日志、指标和其他类型的数据。
更多关于 Logstash 的介绍,请阅读我之前的文章 “Logstash:Logstash 入门教程 (一)”。关于 Logstash 如何处理多个 inputs,请阅读之前的文章 “Logstash:处理多个 input”。
安装
如果你还没有安装好自己的 Logstash,请参考文章 “Logstash:在各个操作系统下安装 Logstash”。
配置
今天,我们将测试系统日志和文件输入的配置。 为此,首先,你需要创建两个配置文件,每个管道一个。
步骤一:创建输入配置文件
对于 deb/rpm 包,转到 /etc/logstash/conf.d/ 目录并创建两个文件:syslog.conf 和 file.conf。
cd /etc/logstash/conf.d
touch syslog.conf file.conf
步骤二:配置 Syslog 管道
在syslog.conf文件中,添加如下配置:
input {
syslog {
port => 514
}
}
filter {
# Add any filters you need here
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "firewall-%{+YYYY.MM.dd}"
}
}
此配置指定 Logstash 应在端口 514 上侦听系统日志数据,应用你需要的任何过滤器,然后使用基于当前日期的索引名称将输出发送到 Elasticsearch。有关 filter 的设计部分,你可以阅读文章 “Logstash:实用 Logstash 收集 Syslog 日志指南” 或者文章 “Logstash:日志解析的 Grok 模式示例”。
步骤三:配置 file input 管道
在 file.conf 文件中,添加如下配置:
input {
file {
path => "my_log_path"
}
}
filter {
# Add any filters you need here
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
此配置指定 Logstash 应从你需要的 my_log_path 目录读取日志文件,应用你需要的任何过滤器,然后使用基于当前日期的索引名称将输出发送到 Elasticsearch。
步骤四:更新管道 YML 文件中的配置
在 /etc/logstash/ 目录下的 pipeline.yml 中添加上述配置的路径。
- pipeline.id: syslog
path.config: "/etc/logstash/conf.d/syslog.conf"
- pipeline.id: file-input
path.config: "/etc/logstash/conf.d/file.conf"
步骤五:使用多个管道启动 Logstash
要使用多个管道启动 Logstash,请启动服务并验证输出是否有任何错误(如果有)
systemctl start logstash
sudo tail -f /var/log/logstash/logstash-plain.log
Logstash 会自动检测并加载指定目录下的所有配置文件。 它还将为每个配置文件创建单独的管道。
提示:在运行 logstash 服务之前,我们甚至可以使用以下命令测试我们的 Logstash 配置:
sudo /usr/share/logstash/bin/logstash --config.test_and_exit -f <path_to_config_files>
总之,Logstash 对多管道的支持允许你使用不同的配置来处理不同类型的数据。