当Logstash管道配置出现错误时,可能导致输出数据结果不符合预期,需要反复去目标端确认数据格式,再返回控制台修改配置,这样会耗费大量的时间和人力。对于这种情况,您可以通过阿里云Logstash提供的管道配置调试功能,在管道配置完成后,直接在控制台上查看管道配置的输出结果,降低调试成本。本文介绍具体的实现方法。
前提条件
已安装logstash-output-file_extend插件。如果还未安装,请先安装该插件,安装方法请参见安装或卸载插件。
操作步骤
- 进入阿里云Elasticsearch控制台的Logstash页面。
- 在顶部菜单栏处,选择地域。
在顶部菜单栏处,选择地域,然后在实例列表中单击目标实例ID。
在左侧导航栏,单击管道管理。
单击创建管道。
配置并启动管道。
在Config配置中,填写管道ID和Config配置。
参数
说明
管道ID
自定义输入。输入后,管道ID会自动映射到file_extend的path路径下。
Config配置
Config配置由三部分组成:
input:指定待读取的数据源,支持Logstash自带的input plugins(除过file插件)。
filter:进一步加工处理数据源采集到的数据,支持丰富的Filter plugins。
output:将过滤后的数据发送到特定的目的端。阿里云Logstash不仅支持开源的 Logstash output plugins,还可通过配置特有的file_extend插件,开启调试日志功能,即可在管道部署完成后直接查看输出结果,并进行验证与调试。
config配置示例如下。
input { elasticsearch { hosts => "http://es-cn-0pp1jxv000****.elasticsearch.aliyuncs.com:9200" user => "elastic" index => "twitter" password => "<YOUR_PASSWORD>" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-000000000i****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "<your_password>" index => "%{[@metadata][_index]}" document_id => "%{[@metadata][_id]}" } file_extend { path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test" } }
重要output中的file_extend配置默认为注释状态,如果需要使用调试功能,请先删除注释。
file_extend中的path参数默认为系统指定路径,请勿修改。您也可以单击开启配置调试获取path路径。
path中的{pipelineid}将自动映射为管道ID,请勿修改为其他名称,否则无法获取调试日志。
Elasticsearch input插件可以根据配置的查询语句,从Elasticsearch集群读取文档数据,适用于批量导入测试日志等操作。默认读取完数据后,同步动作会自动关闭,而阿里云Logstash需保证进程一直运行,关闭后将会重新启动进程,导致某些单一任务场景(如logstash input es)存在重复写数据的情况。设置长时间范围的定时任务可绕过写重复的情况,如每年3月5日13点20分触发任务执行,执行完第一次任务后停止管道运行,可避免重复写情况。可以通过cron语法配合schedule参数实现,详情请参见Logstash官网Scheduling介绍。
例如,设置3月5日13点20分执行任务:
schedule => "20 13 5 3 *"
单击下一步,配置管道参数。
管道配置参数的详细信息,请参见通过配置文件管理管道。
保存并部署管道。
保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。
保存并部署:保存并且部署后,会触发实例重启,使配置生效。
在创建成功提示框中,单击确认。
查看调试日志。
等待实例重启完成后,在管道列表中,单击目标管道右侧操作列下的查看调试日志。
在日志查询页面的调试日志页签中,获取管道处理后的输出数据。
对于多个管道,您可在搜索框中输入pipelineId: <管道ID>过滤对应的日志。