通过Logtail采集日志时,如果Logtail机器组心跳状态异常,您可使用Logtail自动诊断工具或人工诊断方式排查问题。本文主要介绍Logtail机器组无心跳的排查思路。

排查流程

使用Logtail采集日志时,在服务器上安装Logtail后,Logtail会定时向服务端发送心跳包。如果机器组无心跳,说明客户端和服务端连接失败。日志服务提供自动诊断和人工诊断两种方式,您可以根据需求选择。
  • 自动诊断:日志服务提供针对Linux服务器的Logtail自动诊断工具。更多信息,请参见Logtail自动诊断工具
  • 人工诊断:Logtail自动诊断工具未检查出问题或服务器为Windows系统时,请参见本文进行人工诊断。
排查方式

步骤一:检查是否已安装Logtail

通过查看Logtail状态来确定是否在目标服务器上安装Logtail。

  • Linux服务器

    执行如下命令,查看Logtail状态。

    sudo /etc/init.d/ilogtaild status 
    如果系统返回如下信息,表示已安装Logtail。
    ilogtail is running
  • Windows服务器
    1. 打开运行窗口,输入services.msc,打开服务窗口。
    2. 查看LogtailDaemon服务和LogtailWorker服务的运行状态。

      如果正在运行,表示已安装Logtail。

根据上述方法确认是否已安装Logtail。

步骤二:检查Logtail安装参数是否正确

安装Logtail时,需要为Logtail客户端指定正确的服务端访问入口,即根据日志服务Project所在地域选择Logtail安装参数,然后根据网络类型选择不同的安装方式。如果安装参数或安装脚本错误,可能导致Logtail机器无心跳。关于不同地域的服务入口,请参见服务入口

Logtail配置文件ilogtail_config.json中记录了Logtail安装参数及所选的安装方式,该文件路径说明如下:
  • Linux服务器:/usr/local/ilogtail/ilogtail_config.json
  • Windows x64服务器:C:\Program Files (x86)\Alibaba\Logtail\ilogtail_config.json
  • Windows x86服务器:C:\Program Files\Alibaba\Logtail\ilogtail_config.json
  1. 检查ilogtail_config.json文件中客户端连接的服务入口所属地域与您Project所在地域是否一致。
    1. 在服务器上执行如下命令,查看Logtail客户端连接的服务入口的所属地域。
      cat /usr/local/ilogtail/ilogtail_config.json

      系统显示如下信息,表示Logtail被安装在华东1(杭州)地域的ECS实例中。

      检查安装参数
    2. 在日志服务控制台上查看目标Project的所属地域。
      所属地域
  2. 检查ilogtail_config.json文件中配置的域名,确认是否根据服务器所属网络环境选择了正确的Logtail安装方式。
    例如ilogtail_config.json中记录Logtail配置的域名为cn-hangzhou-intranet.log.aliyuncs.com
    • Linux服务器
      执行如下命令,检查网络连通性。
      curl logtail.cn-hangzhou-intranet.log.aliyuncs.com

      如果系统返回如下类似信息,表示网络连接成功。

      {"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5DD39230BE9910FC6CF17609"}}
    • Windows服务器
      执行如下命令,检查网络连通性。
      telnet logtail.cn-hangzhou-intranet.log.aliyuncs.com 80

      如果系统返回如下类似信息,表示网络连接成功。

      Trying 100*0*7*5...
      Connected to logtail.cn-hangzhou-intranet.log.aliyuncs.com.
      Escape character is '^]'. 

步骤三:检查机器组IP地址是否正确

机器组中配置的IP地址必须和Logtail获取到的服务器IP地址一致,否则机器组无心跳或无法采集日志。Logtail获取服务器IP地址的方式如下:
  • 如果没有设置主机名绑定,则获取服务器中第一块网卡的IP地址。
  • 如果在/etc/hosts文件中设置了主机名绑定,则会获取绑定的主机名对应的IP地址。
    说明 您可以通过hostname查看主机名。
  1. 查看Logtail获取的IP地址。
    app_info.json文件中的ip字段中记录了Logtail获取的IP地址,该文件路径说明如下:
    • Linux服务器:/usr/local/ilogtail/app_info.json
    • Windows x64服务器:C:\Program Files (x86)\Alibaba\Logtail\app_info.json
    • Windows x86服务器:C:\Program Files\Alibaba\Logtail\app_info.json
    注意
    • 如果app_info.json文件中ip字段为空,Logtail无法工作。此时您需为服务器设置IP地址并重启Logtail。
    • app_info.json文件仅做记录,修改该文件并不会改变Logtail获取的IP地址。
    查看Logtail获取的IP地址
  2. 查看机器组中配置的IP地址。
    具体操作,请参见管理机器组查看机器组
  • 如果机器组中配置的IP地址与Logtail客户端获取的IP地址不一致,则需要修改。
    • 如果机器组中配置的IP地址错误,请修改机器组中的IP地址,然后等待1分钟再查看机器组心跳状态。
    • 如果修改了服务器上的网络配置(例如修改了/etc/hosts文件),请重启Logtail以获取新的IP地址,并根据app_info.json文件中的ip字段修改机器组内配置的IP地址。您可以根据如下方法重启Logtail。
      • Linux服务器:
        sudo /etc/init.d/ilogtaild stop
        sudo /etc/init.d/ilogtaild start
      • Windows服务器
        1. 打开运行窗口,输入services.msc,打开服务窗口。
        2. 重启LogtailWorker服务。
  • 如果机器组中配置的IP地址与Logtail客户端获取的IP地址一致,请执行下一步检查。

步骤四:检查是否已配置用户标识

如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您要通过Logtail采集该服务器日志,需在服务器上安装Logtail后,手动配置日志服务所在阿里云账号ID为用户标识,表示该账号有权限通过Logtail采集该服务器日志。更多信息,请参见配置用户标识

检查/etc/ilogtail/users目录下是否有与阿里云账号ID同名的文件。
  • 如果有,表示已配置用户标识。
  • 如果没有,请配置用户标识。具体操作,请参见配置用户标识
注意 必须是阿里云账号ID。如何获取,请参见获取日志服务所在的阿里云账号ID

如果您的问题仍未解决,请提交工单,然后在工单中请提供您的Project、Logstore、机器组、app_info.json、ilogtail_config.json以及自助诊断工具的输出内容。