本文介绍通过修改配置文件的方式处理部分常见的采集问题的流程。通用的采集问题处理方式请参考LoongCollector采集异常问题汇总排查。
日志传输网络延迟高、传输不稳定
发生日志丢失或重复发送,LoongCollector 发送日志时频繁重试,网络连接中断或波动频繁等现象。可能的原因是:
网络带宽不足:当采集的日志量较大时,若网络带宽不足以支撑传输需求,会导致日志堆积、延迟增加。
网络环境不稳定:跨区域、跨网络可能导致网络延迟或丢包。
解决方案
利用阿里云CDN边缘节点进行日志采集加速,相对公网采集在网络延迟、稳定性上具有很大优势。开启该功能将根据实际传输的数据量进行额外计费。
需要先打开Project的日志跨域传输加速功能。
停止LoongCollector:登录安装LoongCollector的服务器,执行
sudo /etc/init.d/loongcollectord stop命令。修改传输域名:替换
/usr/local/ilogtail/ilogtail_config.json中data_servers参数下的endpoint_list参数的值为log-global.aliyuncs.com。这表明将数据传输所使用的域名变更为传输加速域名。启动LoongCollector:执行
sudo /etc/init.d/loongcollectord start命令。
单条日志过大被截断
发生单条日志长度过大,采集后日志被截断的现象,原因是每条日志读取的最大值默认为524288(512 KB),若超过该值日志服务将截断日志。多行日志按行首正则表达式划分后,每条日志大小限制仍为512 KB,若超限会被强制拆分为多条进行采集。
解决方案
在
/usr/local/ilogtail/ilogtail_config.json中修改max_read_buffer_size参数的值,若该参数不存在则新增。该参数取值最大为8388608(8 MB)。请注意内存占用线性增长,需预留
max_read_buffer_size*文件并发数内存。重启LoongCollector:执行
sudo /etc/init.d/loongcollectord restart命令。
传输时发生间隔15分钟以上日志丢失
发生采集日志时可以正常传输,但部分日志丢失,且丢失日志时间戳与当前日志服务服务端时间相差15分钟以上的情况,原因可能是出于数据安全考虑,日志服务会对请求(包括LoongCollector发起的请求)所携带的时间进行校验,拒绝与日志服务端时间相差超过15分钟的请求。当服务器本地时间被修改后(例如某些测试场景下需要调整本地时间为未来时间),则导致请求被拒绝,写入数据失败。
解决方案
在
/usr/local/ilogtail/ilogtail_config.json中修改enable_log_time_auto_adjust参数的值为true,若该参数不存在则新增。设置后日志时间可自适应服务器本地时间。开启该功能后,日志时间将被加上日志服务端的时间与服务器本地时间的偏移量。由于偏移量只在请求被日志服务端拒绝时更新,因此可能出现日志服务端所查询到的日志的时间和日志实际的写入时间不一致的情况。
重启LoongCollector:执行
sudo /etc/init.d/loongcollectord restart命令。
切换至其他地域Project
由于某些原因,在服务器上采集的日志需要存储到新的Project中。
解决方案
若需要复用采集配置,请先保存采集配置文件中内容,卸载操作会删除该文件。
卸载服务器上的LoongCollector。
根据新Project与服务器的关系,选择对应的LoongCollector安装方案。
如果要将历史数据也一并转移到新Project,此处提供两种方式:
日志传输延时过长优化
发生日志服务的日志时间戳和服务器生产日志的时间相差在三秒以上的情况,原因可能是:
同时采集的文件数超过100个或者监控的目录下的文件数超过5000个,占用大量内存。
日志数据流量大(例如极简模式下超过2 MB/s,正则模式下超过1 MB/s),CPU占用率过高。
开通CloudLens for SLS,在采集监控可以查看当前主机的CPU占用率。
LoongCollector发送数据到日志服务的速率超过10MB/s。
开通CloudLens for SLS,在采集监控可以查看当前主机的采集速率。
解决方案
参考上述可能原因调整文件数量或数据流量。如果无法减少内存使用或降低传输流量,建议参考采集性能配置规划调整采集性能。