版本1.5.5,模拟http接收端失败后,在ft_log目录下发现backup_local_save.diskqueue.000000.dat的文件,开启http接收端后,日志正常采集,正常发送。但backup_local_save.diskqueue.000000.dat文件大小一直没有改变。 是我的配置文件有错误么?
Bug Report
版本1.5.5,模拟http接收端失败后,在ft_log目录下发现backup_local_save.diskqueue.000000.dat的文件,开启http接收端后,日志正常采集,正常发送。但backup_local_save.diskqueue.000000.dat文件大小一直没有改变。 是我的配置文件有错误么?
logkit 相关配置:
{ "name": "runner.test02", "batch_interval": 60, "batch_size": 2048, "extra_info": false, "reader": { "log_path": "/_data/file/dhcp.202*", "meta_path":"./meta", "file_done":"/_data/file/backup", "donefile_retention":"3", "read_from": "newest", "encoding": "UTF-8", "_datasource_tag": "_datasource", "expire": "1h", "readio_limit": "30", "expire_delete": "false", "max_open_files": "5", "stat_interval": "5s", "mode": "tailx" }, "cleaner": { "delete_enable": "false", "delete_interval": "86400", "reserve_file_number": "7", "reserve_file_size": "2048" }, "parser": { "type": "raw", "timestamp": "false", "name": "raw_parser", "labels": "basename hbjyh_ipoe01" }, "transforms": [ { "type": "pick", "key": "|iptv|", "stage":"before_parser" }, { "type":"discard", "key":"||iptv|", "stage":"before_parser" } ], "senders": [ { "sender_type": "http", "http_sender_url": "192.168.1.18:19888", "http_sender_gzip": "false", "http_sender_protocol": "body_json", "http_sender_timeout": "30s", "ft_save_log_path": "./ft_log", "ft_strategy": "always_save", "ft_procs": "2", "ft_discard_failed__data": "false", "ft_memory_channel": "true", "ft_memory_channel_size": "100", "ft_long__data_discard": "false", "max_disk_used_bytes": "524288000", "max_size_per_file": "104857600" } ] }
运行环境:
redhat 6.5企业版
logkit 版本:
1.5.5
操作系统版本:
redhat 6.5企业版
复现过程操作步骤:
- 模拟http接收端失败后,在ft_log目录下发现backup_local_save.diskqueue.000000.dat的文件
- 开启http接收端后,日志正常采集,正常发送。但backup_local_save.diskqueue.000000.dat文件大小一直没有改变。
- 失败的数据没有继续尝试发送成功
预期表现:
失败的数据,再http接受端正常后,继续尝试发送成功
实际情况:
失败的数据,再http接受端正常后,没有继续尝试发送成功
相关日志等其他信息:
模拟http接收端失败后,日志有输出说是要继续重发失败的数据 http接收端恢复正常,并且logkit继续正常采集、发送日志后,没有输出相关的继续发送的日志
这个应该是你的配置问题导致的,backup_local_save.diskqueue.000000.dat和streamb_local_save.diskqueue.000000.dat,只是两种发送方式的本地数据存储,这两个文件你可以不用关注。
你的配置文件是有问题的,所以导致对端没有数据接收。 "parser": { "type": "raw", "timestamp": "false", "name": "raw_parser", "labels": "basename hbjyh_ipoe01" }, "transforms": [ { "type": "pick", "key": "|iptv|", "stage":"before_parser" }, { "type":"discard", "key":"||iptv|", "stage":"before_parser" } ],
问题原因: parser配置为原始数据,那么输出的数据格式(你可以在解析样例数据中查看) raw :“你的全部数据“ transforms 配置为pick和diskard,你会发现没有你的字段,所以最后都没有数据 重点:目前数据只有”raw“ 和”系统加的默认字段“,所以pick不到你需要的字段,所以就输出为空
解决方案: 你可以自己先把你的transform配置删除,实验一下,验证这个问题的时候解决。然后研究相关配置,获取自己期望的数据