机器组心跳用于检测服务器与日志服务间的通信状态,若心跳异常将导致数据无法传输至日志服务。本文将分析心跳异常的产生原因及常见场景的解决方案。
心跳异常原因分析
服务器上的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 restart- sudo /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,该行日志会包含当前运行中使用的配置,检查是否和本地文件一致。
 
 
 进入项目概览页面。
进入项目概览页面。