机器组心跳用于检测服务器与日志服务间的通信状态,若心跳异常将导致数据无法传输至日志服务。本文将分析心跳异常的产生原因及常见场景的解决方案。
心跳异常原因分析
服务器上的LoongCollector通过以下配置项,来确定目标Project并上报心跳,因此解决心跳异常并不复杂,仅需确认配置项取值,并检查网络情况即可。
-
日志服务Project所属阿里云主账号:指定该账号有权限访问、采集这台服务器的日志。
-
Project所属地域与传输方式:日志服务访问域名由地域和传输方式动态拼接生成,需确保服务器与访问域名之间网络通畅。相关概念请参考网络传输方式与域名。
-
用户自定义标识/IP:通过IP或用户自定义标识与机器组关联,建立心跳。
建立心跳的过程
-
LoongCollector获取配置的一个或多个阿里云账号ID信息,地域与传输方式拼接组成的访问域名,用户自定义标识或IP信息。
-
LoongCollector上报心跳与上述信息至指定地域中的Project。
-
符合条件的一个或多个Project比较机器组中IP或用户自定义标识与上送信息是否一致。
-
信息一致的一个或多个Project将成功建立心跳,机器组显示心跳为OK。
常见心跳异常场景
新增加的服务器心跳为FAIL
心跳为FAIL时,可能是初次建立心跳需要花费一些时间,请等待两分钟左右后刷新心跳状态,若仍为FAIL,请按如下步骤检查:
-
检查LoongCollector安装场景选择是否有误,若安装场景正确进行下一步。否则请卸载后重新安装。
安装方式
适用场景
仅当服务器为阿里云ECS,且ECS与Project属于同一个阿里云账号,所属地域也相同时适用。
当服务器为阿里云ECS,且ECS与Project属于同一个阿里云账号,但不属于同一个地域时适用。
当服务器为阿里云ECS,且ECS与Project属于同一个地域,但不属于同一个阿里云账号时适用。
-
当服务器不是阿里云ECS,例如自建服务器或其他云服务器时适用。
-
当服务器为阿里云ECS,但ECS与Project不属于同一个阿里云账号,也不在同一个地域时,可视为自建服务器。
-
-
在服务器上通过
sudo /etc/init.d/loongcollectord status查看LoongCollector启动状态,返回loongcollector is running表示启动成功。否则执行如下命令启动LoongCollector:若使用的是Logtail采集器,则查看Logtail启动状态命令为:
sudo /etc/init.d/ilogtaild status,启动Logtail命令为:sudo /etc/init.d/ilogtaild start。sudo /etc/init.d/loongcollectord start -
若是跨账号场景(Project所属阿里云账号与服务器所属账号不同):需手动配置用户ID文件,使该账号有权限访问、采集这台服务器的日志。
-
确认地域与传输方式正确,并能联通访问域名:查看服务器上
/usr/local/ilogtail/ilogtail_config.json文件中region信息是否与日志服务Project地域的RegionID一致。一致则排查下一步,若不一致则修改: -
检查用户自定义标识或IP的值:
-
登录日志服务控制台。在Project列表中,单击目标Project。
-
单击资源,单击机器组,在机器组中单击目标机器组。
-
查看机器组配置页面,并确认机器组标识内容后选择对应操作:
用户自定义标识
-
确认服务器上是否存在
/etc/ilogtail/user_defined_id文件,若不存在请创建。 -
向该文件中写入自定义的字符串作为用户自定义标识,此处以
user-defined-test-1为例。#向指定文件写入自定义字符串 echo "user-defined-test-1" > /etc/ilogtail/user_defined_id -
修改用户自定义标识的取值为自定义的字符串,此例为
user-defined-test-1。
IP地址
将服务器上
/usr/local/ilogtail/app_info.json中ip字段的信息添加到IP地址中。ip取值规则:若已在服务器的/etc/hosts文件中设置了主机名与IP地址绑定,则自动获取绑定的IP地址。若没有设置主机名绑定,自动获取本机第一块网卡的IP地址。若设置了/usr/local/ilogtail/ilogtail_config.json中的working_ip参数,则以working_ip值作为服务器的IP地址。请至少保证一种情况下能获取到ip,否则ip字段值为空,无法建立心跳。
-
-
服务器曾经心跳成功但当前为FAIL
曾经心跳成功说明配置项正确,若机器组类型为用户自定义标识型,则配置项中阿里云主账号信息,地域与传输方式,用户自定义标识等是固定值,未修改不会改变心跳状态,可能需要检查网络能否联通访问域名。若机器组类型为IP型,则最有可能是IP地址冲突或IP改变导致心跳为FAIL,请参考如下步骤解决:
-
在服务器上重启LoongCollector以获取最新IP信息。
若使用的是Logtail采集器,重启命令为:
sudo /etc/init.d/ilogtaild restartsudo /etc/init.d/loongcollectord restart -
在服务器上查看
/usr/local/ilogtail/app_info.json中ip字段的信息。ip取值规则:若已在服务器的/etc/hosts文件中设置了主机名与IP地址绑定,则自动获取绑定的IP地址。若没有设置主机名绑定,自动获取本机第一块网卡的IP地址。若设置了/usr/local/ilogtail/ilogtail_config.json中的working_ip参数,则以working_ip值作为服务器的IP地址。
-
登录日志服务控制台。在Project列表中,单击目标Project。
-
单击资源,单击机器组,在机器组中单击目标机器组。
-
查看机器组配置页面,确认IP地址中信息是否包含
/usr/local/ilogtail/app_info.json中ip字段。若不包含则添加ip字段的值到IP地址中。 -
若一致但心跳仍为FAIL,则不适合使用IP型机器组,请切换机器组类型后尝试。
切换机器组标识类型后心跳FAIL
出现IP地址冲突或IP改变等情况时,不再适合使用IP型机器组,需切换为用户自定义标识型机器组。切换机器组类型并不影响网络联通情况,阿里云主账号信息,地域与传输方式等信息,因此仅需关注用户自定义标识取值是否正确。
-
确认是否存在
/etc/ilogtail/user_defined_id文件,若不存在请创建。 -
向该文件中写入自定义的字符串作为用户自定义标识,此处以
user-defined-test-1为例。#向指定文件写入自定义字符串 echo "user-defined-test-1" > /etc/ilogtail/user_defined_id -
登录日志服务控制台。在Project列表中,单击目标Project。
-
单击资源,单击机器组,在机器组中单击目标机器组。
-
查看机器组配置页面,并确认以下两项参数取值,若不正确请单击右上角修改,修改后保存。
-
机器组标识:用户自定义标识。
-
用户自定义标识:自定义的字符串,此例为
user-defined-test-1。
-
常见问题
按文档排查后,各项配置均正确添加,为何心跳仍FAIL?
如果确认配置正确且网络正常,心跳为FAIL一般有两种可能:
-
在该区域较长一段时间内无采集配置,心跳发送间隔被抑制
-
向每个返回的区域发送请求获取配置时,为了降低对服务端的压力,如果从一个区域得不到采集配置,会降低对该区域的请求频率,最长间隔可达到 12 分钟,如果该值超过了该区域心跳 FAIL 的阈值,就会导致心跳 FAIL。
-
解决办法:忽略心跳 FAIL,直接向该机器所在的机器组上应用采集配置,然后等待下一次向该区域发起请求,心跳即可恢复。如果希望立即恢复的话,重启即可。
-
-
当前使用的配置并不是
ilogtail_config.json中配置-
示例:使用了一个非默认配置启动后,运行期间
ilogtail_config.json被修改而未重启。 -
检查方法:
-
最简单的办法:重启后自动加载最新配置。
-
查看日志:如果担心对采集有影响,可以查看
/usr/local/ilogtail/ilogtail.LOG文件,从开头处查找关键字load logtail config file,该行日志会包含当前运行中使用的配置,检查是否和本地文件一致。
-
-
LoongCollector 报错“fetch ecs token fail Timeout was reached”如何处理?
问题现象
LoongCollector 报错fetch ecs token fail Timeout was reached,无法获取 ECS Metadata 服务信息。
问题原因
LoongCollector 无法访问 ECS Metadata 服务100.100.100.200。
解决方案
-
在 ECS 上执行以下命令,测试 ECS Metadata 服务连通性。
curl http://100.100.100.200/latest/meta-data/instance-id -
如果命令无法连接到 Metadata 服务,检查 ECS 安全组配置,确认未限制对
100.100.100.200的访问;放行后重新执行该命令确认连通性。
同地域 ECS 访问 SLS 内网 Endpoint 连接超时如何排查?
问题现象
同地域 ECS 访问 SLS 内网 Endpoint 时连接超时。
问题原因
ECS 与 SLS Project 不在同一地域、内网 Endpoint 的 DNS 解析或网络连通性异常、ECS 内部防火墙或安全软件拦截阿里云内网网段,或者 DNS 未指向阿里云内网 DNS,均可能导致连接超时。
解决方案
按以下顺序排查:
-
确认 ECS 与 SLS Project 位于同一地域。
-
测试内网 OSS Endpoint 和 SLS Endpoint 的 DNS 解析及连通性。执行命令前,将
<OSS内网Endpoint>替换为当前地域的 OSS 内网 Endpoint,将<Project名称>替换为目标 Project 名称,并将<SLS内网Endpoint>替换为当前地域的 SLS 内网 Endpoint。curl -v http://<OSS内网Endpoint> curl -v http://<Project名称>.<SLS内网Endpoint>如果命令提示域名无法解析或连接超时,继续排查防火墙和 DNS 配置。
-
检查 ECS 内部防火墙(iptables)或安全软件(例如 Tailscale)是否拦截阿里云内网网段
100.64.0.0/10、100.115.0.0/16等;如果存在拦截规则,将这些网段加入白名单。 -
检查 DNS 配置是否正确指向阿里云内网 DNS
100.100.2.136和100.100.2.138,修正后再次执行 curl 命令确认连通性。
ACK 集群中 NodeLocalDNS 导致 LoongCollector 获取错误 IP 如何处理?
问题现象
ACK 集群中启用 NodeLocalDNS 后,LoongCollector 获取到错误的 IP 地址,导致机器组心跳异常。
问题原因
NodeLocalDNS 创建的虚拟网卡可能干扰 LoongCollector 或 Logtail 获取服务器 IP 地址。
解决方案
-
在 LoongCollector 或 Logtail 的配置文件中添加
working_ip参数,并将其设置为正确的物理 IP 地址。 -
保存配置后重启采集器,使
working_ip配置生效。使用 LoongCollector 时执行以下命令;使用 Logtail 时执行sudo /etc/init.d/ilogtaild restart。sudo /etc/init.d/loongcollectord restart
SLS 自动安装 Logtail 时报错 ClientNotRunning 且 aliyun service 未启动如何处理?
问题现象
SLS 自动安装 Logtail 时出现ClientNotRunning错误,且 ECS 实例上的 aliyun service 未启动。
问题原因
自动安装依赖 Cloud Assistant 服务;该服务未启动时,无法完成 Logtail 的自动安装。
解决方案
-
在 ECS 实例上执行以下命令,启动并设置 Cloud Assistant 服务开机自动启动。
systemctl enable aliyun.service --now -
命令执行成功后,重新执行 SLS 采集组件的自动安装操作。
LoongCollector 启动失败报错“daemon not found, but found orphaned workers”如何处理?
问题现象
LoongCollector 启动失败,并报错daemon not found, but found orphaned workers。
问题原因
组件进程异常或服务器资源使用率过高,可能导致残留 worker 进程并使 LoongCollector 无法启动。
解决方案
按以下顺序处理:
-
检查服务器内存和 CPU 监控,确认资源使用率是否过高;资源使用率过高时,先恢复可用资源后再启动 LoongCollector。
-
在组件管理中尝试升级 LoongCollector 组件版本。
-
如果升级后问题仍未解决,卸载 LoongCollector 组件并重新安装。
-
检查机器组心跳状态是否正常,并核对采集配置是否正确。
进入项目概览页面。