在使用LoongCollector进行数据采集时,可能会遇到采集异常问题。本文将介绍排查采集异常问题的流程,以及一些常见场景下的处理示例。
采集异常问题排查指引
采集异常问题的成因复杂多样,且不同原因可能导致相同表象,甚至有时异常无法及时发现。因此需要如下指引,以实现异常的及时识别、排查与分类诊断。
- 登录日志服务控制台,在日志应用区域单击CloudLens for SLS。在接入管理的SLS采集规则列表页签中,按照对话框提示开启功能。 - CloudLens for SLS 帮助监控与管理日志服务资源,提高问题定位的效率,及时感知与响应多维度指标的异常。 
- 回到Project列表中,单击目标Project。 
- 单击  日志存储,在日志库中,将鼠标悬浮于目标Logstore上,随后单击右侧的 日志存储,在日志库中,将鼠标悬浮于目标Logstore上,随后单击右侧的 图标,单击基础版诊断查看异常诊断信息。 图标,单击基础版诊断查看异常诊断信息。- 高级版诊断提供异常诊断仪表盘,并支持更长时间的异常信息查询。详情可参考LoongCollector运行情况诊断与监控。 
- 根据诊断显示的错误类型查阅下表,排查错误原因。或在 /usr/local/ilogtail/目录下的ilogtail.LOG与logtail_plugin.LOG中查看客户端日志详情。 
采集常见错误类型
| 错误码 | 错误说明 | 解决方法 | 
| LOG_GROUP_WAIT_TOO_LONG_ALARM | 数据包从产生到发送的过程中等待的时间较长。 | 检查发送是否正常,或是否存在数据量超过默认配置、配额不足或网络存在问题。 | 
| LOGFILE_PERMINSSION_ALARM | 无权限读取指定文件。 | 检查服务器LoongCollector的启动账号,建议以root方式启动。 | 
| SPLIT_LOG_FAIL_ALARM | 行首正则与日志行首匹配失败,无法对日志做分行。 | 检查行首正则正确性。 若是单行日志可以配置为 | 
| MULTI_CONFIG_MATCH_ALARM | 默认情况下,一个文件只能匹配一个配置。当多个配置匹配同一个文件时,只会生效一个。 Docker标准输出可以被多个配置采集。 | 
 详细的解决方案:使用CloudLens排查iLogtail文件重复配置问题。 | 
| REGEX_MATCH_ALARM | 完整正则模式下,日志内容和正则表达式不匹配。 | 复制错误信息中的日志样例重新匹配,并生成新的正则表达式。 | 
| PARSE_LOG_FAIL_ALARM | JSON、分隔符等模式下,由于日志格式不符合定义而解析失败。 | 单击错误信息,查看失败的详细报错。 | 
| CATEGORY_CONFIG_ALARM | 采集配置不合法。 | 常见的错误为正则表达式提取文件路径作为Topic失败。 详细的解决方案:使用CloudLens排查iLogtail采集配置错误问题。 | 
| LOGTAIL_CRASH_ALARM | 因超过服务器资源使用上限而崩溃。 | |
| REGISTER_INOTIFY_FAIL_ALARM | 在Linux系统中注册日志监听失败,可能由于没有文件夹权限或文件夹被删除。 | 检查采集器是否有权限访问该文件夹,或者该文件夹是否被删除。 | 
| DISCARD_DATA_ALARM | 配置使用的CPU资源不够或网络发送流控导致数据丢失 | |
| SEND_DATA_FAIL_ALARM | 发送数据失败,可能原因: 
 | 
 | 
| SEND_QUOTA_EXCEED_ALARM | 日志写入流量超出限制。 | 在控制台上增加Shard数量。 | 
| READ_LOG_DELAY_ALARM | 日志采集进度落后于日志产生进度,一般是由于配置使用的CPU资源不够或是网络发送流控导致。 | 导入历史数据时,短时间会采集大量数据,若出现该错误可忽略。 | 
| DROP_LOG_ALARM | 开始丢弃日志:日志采集进度落后于日志产生进度,且未处理的日志轮转超过20个,一般是由于配置使用的CPU资源不够或是网络发送流控导致。 | |
| LOGDIR_PERMINSSION_ALARM | 没有日志监控目录读取权限。 | 检查日志监控目录是否存在。如果存在,请检查目录权限设置。 | 
| ENCODING_CONVERT_ALARM | 编码转换失败。 | 检查日志编码格式配置是否与日志编码格式一致。 | 
| OUTDATED_LOG_ALARM | 过期的日志:日志时间落后12小时以上。可能原因: 
 | 查看是否存在READ_LOG_DELAY_ALARM。 
 
 | 
| STAT_LIMIT_ALARM | 日志采集配置目录中的文件数超限。 | 
 详细的解决方案:使用CloudLens排查文件、目录数超限问题。 | 
| DROP_DATA_ALARM | 进程退出时日志落盘到本地超时,此时会丢弃未落盘完成的日志。 | 该报错通常为采集严重阻塞导致,请修改CPU使用上限或网络发送并发限制。 | 
| INPUT_COLLECT_ALARM | 输入源采集异常。 | 根据错误提示处理。 | 
| HTTP_LOAD_ADDRESS_ALARM | HTTP数据采集配置中,设置的Addresses不合法。 | 检查Addresses合法性。 | 
| HTTP_COLLECT_ALARM | HTTP数据采集异常。 | 根据错误提示排查,一般超时导致。 | 
| FILTER_INIT_ALARM | 过滤器初始化异常。 | 一般由于过滤器的正则表达式非法导致,请根据提示修复。 | 
| INPUT_CANAL_ALARM | MySQL Binlog运行异常。 | 根据错误提示排查。在配置更新时,canal服务可能重启,服务重启的错误可以忽略。 | 
| CANAL_INVALID_ALARM | MySQL Binlog内部状态异常。 | 此错误一般由于运行时表的schema信息变更导致meta不一致。请确认报错期间是否修改过表的schema。 | 
| MYSQL_INIT_ALARM | MySQL初始化异常。 | 根据错误提示处理。 | 
| MYSQL_CHECKPOING_ALARM | MySQL Checkpoint格式异常。 | 确认是否修改Checkpoint相关配置。 | 
| MYSQL_TIMEOUT_ALARM | MySQL查询超时。 | 确认MySQL服务器和网络是否异常。 | 
| MYSQL_PARSE_ALARM | MySQL查询结果解析失败。 | 确认MySQL配置的Checkpoint格式是否匹配对应字段的格式。 | 
| AGGREGATOR_ADD_ALARM | 向聚合队列中添加数据失败。 | 数据发送过快。若真实数据量很大,可忽略。 | 
| ANCHOR_FIND_ALARM | processor_anchor插件错误、配置错误或存在不符合配置的日志。 | 查看详细报错,根据内容分为如下类型。检查相应的配置是否存在问题。 
 | 
| ANCHOR_JSON_ALARM | processor_anchor插件错误:对已配置的Start和Stop所确定的内容执行JSON展开时发生错误。 | 查看详细报错,检查所处理的内容以及相关的配置,确定是否有配置错误或不合法日志。 | 
| CANAL_RUNTIME_ALARM | MySQL Binlog插件运行时错误。 | 查看详细报错进一步排查。一般与所连接的MySQL master相关。 | 
| CHECKPOINT_INVALID_ALARM | Checkpoint解析失败。 | 查看详细报错,根据其中检查点内容(前1024个字节)以及具体错误信息进一步排查。 | 
| DIR_EXCEED_LIMIT_ALARM | 同时监听的目录数超出限制。 | 检查当前Logstore的采集配置是否包含较多的目录数,合理设置监控目录最大深度。 详细的解决方案:使用CloudLens排查文件、目录数超限问题。 | 
| DOCKER_FILE_MAPPING_ALARM | 执行命令添加Docker文件映射失败。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| DOCKER_FILE_MATCH_ALARM | 无法在Docker容器中查找到指定文件。 | 查看详细报错,根据其中的容器信息以及查找的文件路径进一步排查。 | 
| DOCKER_REGEX_COMPILE_ALARM | service_docker_stdout插件错误,根据配置中的BeginLineRegex编译失败。 | 查看详细报错,检查其中的正则表达式是否正确。 | 
| DOCKER_STDOUT_INIT_ALARM | service_docker_stdout插件初始化失败。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| DOCKER_STDOUT_START_ALARM | service_docker_stdout插件采集时,stdout大小超过限制。 | 一般因为首次采集时stdout已存在,可忽略。 | 
| DOCKER_STDOUT_STAT_ALARM | service_docker_stdout插件无法检测到stdout。 | 一般因为容器退出时无法访问到stdout,可忽略。 | 
| FILE_READER_EXCEED_ALARM | 同时打开的文件对象数量超过限制。 | 一般因为当前处于采集状态的文件数过多,请检查采集配置是否合理。 | 
| GEOIP_ALARM | processor_geoip插件错误。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| HTTP_INIT_ALARM | metric_http插件错误,配置中指定的ResponseStringMatch正则表达式编译错误。 | 查看详细报错,检查其中的正则表达式是否正确。 | 
| HTTP_PARSE_ALARM | metric_http插件错误,获取HTTP响应失败。 | 查看详细报错,根据其中的具体错误信息对配置内容或所请求的HTTP服务器进行检查。 | 
| INIT_CHECKPOINT_ALARM | Binlog插件错误,加载检查点失败,插件将忽略检查点并从头开始处理。 | 查看详细报错,根据其中的具体错误信息来确定是否可忽略此错误。 | 
| LOAD_LOCAL_EVENT_ALARM | 执行了本地事件处理错误 | 此警告一般不会出现,查看详细报错,根据其中的文件名、配置名、project、logstore等信息进行进一步地排查。 | 
| LOG_REGEX_FIND_ALARM | processor_split_log_regex以及 processor_split_log_string插件错误,无法从日志中获取到配置中指定的SplitKey。 | 查看详细报错,检查是否存在配置错误的情况。 | 
| LUMBER_CONNECTION_ALARM | service_lumberjack插件错误,停止插件时关闭服务器错误。 | 查看详细报错,根据具体错误信息进一步排查,此错误一般可忽略。 | 
| LUMBER_LISTEN_ALARM | service_lumberjack插件错误,初始化进行监听时发生错误。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| LZ4_COMPRESS_FAIL_ALARM | 执行LZ4压缩发生错误。 | 查看详细报错,根据其中的log lines、project、category、region等值来进行进一步排查。 | 
| MYSQL_CHECKPOINT_ALARM | MySQL插件错误,检查点相关错误。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| NGINX_STATUS_COLLECT_ALARM | nginx_status插件错误,获取状态发生错误。 | 查看详细报错,根据其中的URL以及具体的错误信息来进行进一步排查。 | 
| NGINX_STATUS_INIT_ALARM | nginx_status插件错误,初始化解析配置中指定的URL失败。 | 查看详细报错,根据其中的URL检查地址是否正确配置。 | 
| OPEN_FILE_LIMIT_ALARM | 已打开文件数量超过限制,无法打开新的文件 | 查看详细报错,根据其中的日志文件路径、Project、Logstore等信息进行进一步排查。 | 
| OPEN_LOGFILE_FAIL_ALARM | 打开文件出错。 | 查看详细报错,根据其中的日志文件路径、Project、Logstore等信息进行进一步排查。 | 
| PARSE_DOCKER_LINE_ALARM | service_docker_stdout插件错误,解析日志失败。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| PLUGIN_ALARM | 插件初始化及相关调用发生错误。 | 查看详细报错,报错根据内容分为如下类型,请根据具体的错误信息进行进一步排查。 
 | 
| PROCESSOR_INIT_ALARM | processor_regex插件错误,编译配置中指定的Regex正则表达式失败。 | 查看详细报错,检查其中的正则表达式是否正确。 | 
| PROCESS_TOO_SLOW_ALARM | 日志解析速度过慢。 | 
 | 
| REDIS_PARSE_ADDRESS_ALARM | redis插件错误,配置中提供的ServerUrls存在解析失败的情况。 | 查看详细报错,对其中报错的URL进行检查。 | 
| REGEX_FIND_ALARM | processor_regex插件错误,无法从日志中找到配置中SourceKey指定的字段。 | 查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 | 
| REGEX_UNMATCHED_ALARM | processor_regex插件错误,匹配失败。 | 查看详细报错,报错根据内容分为如下类型,请根据具体的错误信息进行排查。 
 | 
| SAME_CONFIG_ALARM | 同一个Logstore下存在同名的配置,后发现的配置会被抛弃。 | 查看详细报错,根据其中的配置路径等信息排查是否存在配置错误的情况。 | 
| SPLIT_FIND_ALARM | split_char以及split_string插件错误,无法从日志中找到配置中SourceKey指定的字段。 | 查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 | 
| SPLIT_LOG_ALARM | processor_split_char以及processor_split_string插件错误,解析得到的字段数量与SplitKeys中指定的不相同。 | 查看详细报错,检查是否存在SourceKey配置错误或日志不合法的情况。 | 
| STAT_FILE_ALARM | 通过LogFileReader对象进行文件采集时发生错误。 | 查看详细报错,根据其中的文件路径、错误信息进行进一步排查。 | 
| SERVICE_SYSLOG_INIT_ALARM | service_syslog插件错误,初始化失败。 | 查看详细报错,检查配置中的Address是否正确。 | 
| SERVICE_SYSLOG_STREAM_ALARM | service_syslog插件错误,通过TCP采集时发生错误。 | 查看详细报错,报错根据内容分为如下类型,请根据详细报错中的具体错误信息进行排查。 
 | 
| SERVICE_SYSLOG_PACKET_ALARM | service_syslog插件错误,通过UDP采集时发生错误。 | 查看详细报错,报错根据内容分为如下类型。 
 | 
| PARSE_TIME_FAIL_ALARM | 解析日志时间失败。 | 
 详细的解决方案:使用CloudLens排查日志时间解析错误问题。 | 
| BINARY_UPDATE_ALARM | 二进制数据更新警告。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| CAST_SENSITIVE_WORD_ALARM | 敏感词类型转换相关错误。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| CHECKPOINT_ALARM | checkpoint相关错误。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| CHECKPOINT_V2_ALARM | (CheckpointManagerV2专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| COMPRESS_FAIL_ALARM | 压缩失败,失败后会直接丢弃。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| CONFIG_UPDATE_ALARM | 配置拉取/重启错误。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| DISCARD_SECONDARY_ALARM | (DiskBufferWriter专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| DOMAIN_SOCKET_BIND_ALARM | (ShennongManager专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| ENCRYPT_DECRYPT_FAIL_ALARM | (DiskBufferWriter专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| EPOLL_ERROR_ALARM | faild to init inotify fd | 查看详细报错,根据具体错误信息进一步排查。 | 
| EXACTLY_ONCE_ALARM | drop exactly once log group because of invalid sequence ID | 查看详细报错,根据具体错误信息进一步排查。 | 
| FUSE_FILE_TRUNCATE_ALARM | 非常规FUSE文件截断行为警告。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| GLOBAL_CONFIG_ALARM | (EnterpriseConfigProvider专用)remove useless configs | 查看详细报错,根据具体错误信息进一步排查。 | 
| HOLD_ON_TOO_SLOW_ALARM | 停止模块过慢。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| INNER_PROFILE_ALARM | file dev inode changed, create new reader | 查看详细报错,根据具体错误信息进一步排查。 | 
| INOTIFY_DIR_NUM_LIMIT_ALARM | inotify监听超限。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| INOTIFY_EVENT_OVERFLOW_ALARM | inotify event queue overflow | 查看详细报错,根据具体错误信息进一步排查。 | 
| INVALID_CONTAINER_PATH_ALARM | failed to set container base dir: container log path not existed | 查看详细报错,根据具体错误信息进一步排查。 | 
| INVALID_MEMORY_ACCESS_ALARM | PropagateTimeout access invalid key of mPathWdMap | 查看详细报错,根据具体错误信息进一步排查。 | 
| LOG_GROUP_PARSE_FAIL_ALARM | (DiskBufferWriter专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| LOG_TRUNCATE_ALARM | signature is same but size decrease, read from now fileSize | 查看详细报错,根据具体错误信息进一步排查。 | 
| LOGDIR_PERMISSION_ALARM | 打开目录失败。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| LOGTAIL_CONFIG_ALARM | ilogtail_config.json不存在或解析失败。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| LOGTAIL_CRASH_STACK_ALARM | last logtail crash stack | 查看详细报错,根据具体错误信息进一步排查。 | 
| METRIC_GROUP_PARSE_FAIL_ALARM | (ShennongManager专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| MODIFY_FILE_EXCEED_ALARM | modify cache is up limit | 查看详细报错,根据具体错误信息进一步排查。 | 
| PROCESS_QUEUE_BUSY_ALARM | logprocess queue is full, put modify event to event queue again | 查看详细报错,根据具体错误信息进一步排查。 | 
| READ_STOPPED_CONTAINER_ALARM | 容器停止。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| REGISTER_HANDLERS_TOO_SLOW_ALARM | Registering handlers耗时过长。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| RELABEL_METRIC_FAIL_ALARM | 指标重标记失败。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| SECONDARY_READ_WRITE_ALARM | (DiskBufferWriter专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| SEND_COMPRESS_FAIL_ALARM | (DiskBufferWriter专用) | 查看详细报错,根据具体错误信息进一步排查。 | 
| SENDING_COSTS_TOO_MUCH_TIME_ALARM | 发送时间过长。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| SERIALIZE_FAIL_ALARM | 序列化失败。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| SKIP_READ_LOG_ALARM | 跳过日志读取警告。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| STREAMLOG_TCP_SOCKET_BIND_ALARM | TCP端口绑定冲突警告。 | 查看详细报错,根据具体错误信息进一步排查。 | 
| TOO_MANY_CONFIG_ALARM | 本地目录下配置过多 | 查看详细报错,根据具体错误信息进一步排查。 | 
| UNEXPECTED_FILE_TYPE_MODE_ALARM | found unexpected type mode | 查看详细报错,根据具体错误信息进一步排查。 | 
| USER_CONFIG_ALARM | (LegacyConfigProvider专用)本地配置非法 | 查看详细报错,根据具体错误信息进一步排查。 | 
| WINDOWS_WORKER_START_HINTS_ALARM | windows工作节点启动检测告警。 | 查看详细报错,根据具体错误信息进一步排查。 | 
常见采集异常场景
机器组心跳FAIL
请参考心跳异常问题汇总排查。
日志未采集
采集日志时若查询页面无数据,可能原因如下:
- 在控制台日志库的消费预览中查看,是否采集到日志,若采集到日志但查询无数据,一般由于未创建索引。  
- 无新增日志:待采集日志文件无更新,则不会采集。 
- 机器组心跳异常:心跳异常问题汇总排查。 
- 无采集配置:采集配置需创建并应用到机器组,然后才能下发到服务器生效,详情参考机器组与LoongCollector采集配置关联指南。 
- 采集配置路径错误:检查采集配置中待采集日志文件路径是否正确。 - 容器场景下还可以开启元容器信息预览查看采集匹配的容器情况。 
- 如果是容器采集场景还需注意: - 路径是否有挂载和软链接:不支持软链接,挂载优先级:EmptyDir > hostpath > NAS(不推荐)。更多请参考准备日志源。 - EmptyDir挂载:性能最优,可登录容器查看看日志;hostpath挂载:可登录主机和容器查看日志,容器奔溃日志仍保留;NAS挂载:不推荐,采集NAS文件性能极低且易采集失败,且查询只能简单grep。 
- 采集配置的label和env与容器是否一致:注意docker label需要进宿主机 docker inspect 容器id 查询。 
 
- 发生采集错误:若上述检查通过,则在控制台通过诊断信息排查采集错误。 
数据重复采集
- 内存使用率极高,一直在崩溃。崩溃会重新从checkpoint检查点采集导致数据重复,请修改CPU使用上限或网络发送并发限制。 
- 文件用编辑器编辑过(如使用vim编辑保存):查看文件创建时间,确认被采集文件是否发生重写。 - #方法一:看birth time stat your_file #方法二:有时候方法一不管用,看crtime stat -c %i your_file df . #查询分区 sudo debugfs -R 'stat <3014895>' /dev/sda3 #替换<>中间的inode(<>要保留),替换sda3为上一行命令分区所在dev
- 检查是否存在多个采集器实例。 
- 日志量极小的情况下(15分钟以上无新日志):采集进度可能被清理,造成重复采集。 
- 检查是否采集配置重复:stdout由于允许重复采集,尤其需要注意。 
- 控制台通过诊断信息排查采集错误:存在MULTI_CONFIG_MATCH_ALARM错误。 - 删除多余采集配置:重复采集配置采集同一个目录时,采集路径最精确的优先级最高。 
- 修改相关配置:实现一个文件中的日志被采集多份。 
 
- 采集日志路径总会在多个路径变化,删除采集配置会立刻重建: - 排查目录是否存在软连接导致重复采集。 
- 排查是否由env创建或ack中配置了日志标签,配置了需要删掉。 
 
- Pod容器重启,且使用hostpath挂载,导致重复采集。 - 采集容器日志的原理是通过类似docker ps的方法探测容器,通过类似docker inspect的方法找到采集路径。当匹配采集配置时,采集器会向主程序报送一条采集路径+配置。当容器重启时,采集器会认为是创建新容器,并再次向主程序报送一条采集路径+配置。此时,由于业务pod日志路径挂载的是hostPath,因此前一个容器持久化的日志会被保留下来,采集器默认往回读取1M日志导致日志重复。 
 
- 容器内日志发生采集重复,并且采集路径含NAS。 - 如果创建reader的时间点因为(NAS)目录注册慢没有赶上dump checkpoint的时间点,那么进度都会丢失。add a new watcher持续时间过长也是一个特征,解决方法是把check_point_dump_interval修改为600。 
 
采集时间延迟
采集时间延迟有几类情况:
- 几秒内的延迟是在预期范围内的,若介意可以配置时间插件。 
- 若有大量数据延迟,检查是否有重启现象。重启后会向前采集,产生延时采集的现象。查看最新数据是否实时,若最新数据实时就没问题。 
- 只延时一行,检查日志文件的最后一行是否没有回车。 
- 某台机器出现延时,可能是该机器采集器启动较晚,可以通过/usr/local/ilogtail/app_info.json的时间确认,或/usr/local/ilogtail/ilogtail.LOG中是否存在“network error”网络原因导致延时。 
- 若不符合上述场景,则在控制台通过诊断信息排查采集错误。 
采集丢失
- 是否pod生命周期过短(<20s),建议日志打到hostPath进行采集。 
- 查看配置env 和 label 是否和容器一致。 
- 检查是否是采集延时导致的数据不全。 
- 如果是标准输出日志非常长(>16K)发生截断并且是ACK、ASK、SAE场景,需要通过文件采集。 
- 采集器重启也会导致采集数据不全。查看/usr/local/ilogtail/app_info.json的update_time确认是否重启。 - 主动重启:因资源达到配置上限而cuicide,特征是采集器守护进程和工作进程的启动时间有差异,请修改CPU使用上限或网络发送并发限制。 
- 被动重启:因资源达到container配置上限而被k8s杀死或者达到cgroup上限而被kernel杀死,特点是pod的重启次数超过一次。请查看是否OOM被杀,并调整修改CPU使用上限或网络发送并发限制。 - 注意:当需要调整资源参数时,往往意味着日志量很大,需要注意Shard数量与资源配额是否充足。 
 
- 如果采集数据不一致发生在实例之间,需要注意是否是采集器版本不同导致。可参考LoongCollector管理(Linux)查看版本与升级。 
- 不定时的丢数据,重启后过一段时间会复现: - 根据CloudLens for SLS检查当前Logstore配置是否超限。 
- 查看/usr/local/ilogtail/目录下ilogtail.LOG和logtail_plugin.LOG,寻找报错进行具体排查。 
 
- 若不符合上述场景,则在控制台通过诊断信息排查采集错误。 
日志格式错误
- 采集格式不符合预期,检查采集配置信息,参考主机文本日志采集使用完整正则模式和插件模式提取字段。 
- json字段无法被解析提取:通过解析工具验证日志内容是否严格符合json object,插件不支持非json objet的解析,可以尝试修改原始字段格式来规避。 
- 一整条日志是一个整体:可能是未设置分词符导致的,建议了解索引内容按需配置。 
常见问题
日志正常采集中突发异常
日志可以正常采集说明配置项大概率正确,若没有修改内容或新增相关采集配置时,可优先关注是否需要调整采集性能与提升配额。
- 尝试调整采集性能:修改CPU、内存使用上限。 
- 借助CloudLens for SLS监控:在数据洞察中查看配额使用情况,如project写入流量是否超过限额。在采集监控-文件采集监控-采集文件分布中查看是否有延迟的文件。可能当前读取速率跟不上日志的产生速率,CPU usage 满了, 读不完日志导致日志文件一直保持打开状态目录空间没法释放。 
日志时间问题
- __time__是日志采集的时间,使用sdk写入日志时可指定。 
- tag中的receive_time是日志服务接受到日志的时间。 
- 日志里的 time 字段,仅仅是一个普通字段。 
例如使用sdk在1月2号写入一条日志,指定日期为 1月1号(这个时间可以根据time来设置,也可以自行设置),则查询时receive time 是 1月2号,__time__是1月1号。只有receive time是真正写日志的时间,至于 __time__和日志中的 time字段,都是由自己设置的。
日志上报的时间,有时区问题吗(不同时区,同一时刻 ,本地时间不同) :时间与时区无关,是一个Unix时间戳。自UTC 1970年1月1号开始计数经过的秒数(或者毫秒数)。 比如对于UNIX timestamp 1620994708,相当于:GMT 时间:Fri May 14 2021 12:18:28 GMT+0000。
日志乱码问题
日志服务默认UTF8,需要修改原始日志编码格式为UTF8。