Logtail机器组问题排查思路(主机场景)

本文主要介绍如何系统排查主机场景下的机器组无心跳问题。

机器组安装示例

排查预览

  1. 步骤一:检查Logtail是否正常运行:检查Logtail在服务器是否正常运行。

  2. 步骤二:确认机器组中的IP地址是否为Logtail获取的IP地址:确认机器组中的IP地址是否和Logtail的app_info.json文件中的IP地址一致,不一致会导致心跳失败。

  3. 步骤三:检查Logtail启动参数是否正确:检查ilogtail_config.json文件中配置的Project地域是否正确。

  4. 步骤四:检查网络是否通畅:检查服务器与Project之间网络是否通畅。

  5. 步骤五:检查Logtail所在服务器的系统时间是否正确:如果系统时间明显快于或慢于当前真实时间,需要修改。

  6. 步骤六:检查是否存在用户标识:如果Project和ECS服务器属于不同账号,其他云或者自建服务器,必须检查用户标识。

  7. 步骤七:检查是否已配置自定义标识:如果是用户自定义标识机器组,检查是否已配置自定义标识。

步骤一:检查Logtail是否正常运行

Linux系统

  1. 登录已安装Logtail的机器。

  2. 执行如下命令。

    ps -ef | grep ilogtail
    • 返回结果中出现两条如下类似信息(分别代表Logtail守护进程和Logtail工作进程)时,说明Logtail正常运行。

      UID          PID    PPID  C STIME TTY          TIME CMD
      ...
      root          12       1  0 Nov10 ?        00:00:00 /usr/local/ilogtail/ilogtail
      root          14      12  0 Nov10 ?        03:07:43 /usr/local/ilogtail/ilogtail
      ...
      重要

      如果返回结果中出现3条及以上Logtail运行信息,则说明当前服务器中有多个Logtail实例在运行,存在重复采集的风险,请检查是否为预期行为。

    • 如果返回结果显示Logtail相关进程未运行。

      • 已经安装Logtail,但是未启动。请参见启动和停止Logtail(Linux系统)

      • 未安装Logtail,请安装Logtail。具体操作,请参见安装Logtail(Linux系统)

        重要

        安装时,请务必选择支持安装Logtail的操作系统、按照日志服务Project所属地域选择安装参数以及根据网络类型选择安装方式。关于网络类型的更多信息,请参见选择网络

Windows系统

  1. 登录Logtail所在的机器。

  2. 打开运行窗口,输入services.msc

  3. 查看LogtailDaemon服务(Logtail 1.0.0.0及以上版本)或LogtailWorker服务(Logtail 0.x.x.x版本)的运行状态。

    如果上述服务未运行。

    重要

    安装时,请务必选择支持安装Logtail的操作系统、按照日志服务Project所属地域选择安装参数以及根据网络类型选择安装方式。关于网络类型的更多信息,请参见选择网络

步骤二:确认机器组中的IP地址是否为Logtail获取的IP地址

说明

Logtail获取Linux服务器IP地址的方式如下:

  • 如果您没有设置主机名绑定,则Logtail会获取服务器中第一块网卡的IP地址。

  • 如果想自定义IP地址,可以在步骤三ilogtail_config.json文件中设置working_ip。设置此参数后,app_info.json文件中的ip字段将自动与working_ip字段值同步更新。关于working_ip,请参见设置启动参数

  • 如果您在/etc/hosts文件中设置了主机名绑定,则Logtail会获取绑定的主机名对应的IP地址。

  1. 获取app_info.json文件中的ip字段值。

    该文件在不同系统下的默认路径说明如下表所示:

    操作系统

    Logtail

    app_info.json文件路径

    Linux

    Logtail(64位程序)

    /usr/local/ilogtail/app_info.json

    Windows(64位操作系统)

    Logtail (64位程序)

    C:\Program Files\Alibaba\Logtail\app_info.json

    Logtail(32位程序)

    C:\Program Files (x86)\Alibaba\Logtail\app_info.json

    Windows (32位操作系统)

    Logtail(32位程序)

    C:\Program Files\Alibaba\Logtail\app_info.json

    Logtail将获取的IP地址记录在app_info.json文件的ip字段中。

    {
      "UUID" : "",
      "hostname" : "iZ8vbdlzf******azuhZ",
      "instance_id" : "E9633380-***********-00163E1AA597_172.16.2.200_166****11",
      "ip" : "172.**.**.200",
      "logtail_version" : "1.3.1",
      "os" : "Linux; 4.19.91-26.1.al7.x86_64; #1 SMP Tue Jul 26 17:52:28 CST 2022; x86_64",
      "update_time" : "2022-12-27 05:38:33"
    }
  2. 确认机器组中使用的是Logtail获取的IP地址。

    日志服务机器组包括IP地址机器组和用户自定义标识机器组。更多信息,请参见什么是机器组

    • IP地址机器组:请查看IP地址是否包含上一步获取的IP地址。

      IP地址文本框内填写了目标Logtail的其它IP地址(例如公网地址)时,请修改为Logtail获取的IP地址,然后观察机器心跳是否正常。如果正常,则可以结束本次排查。

    • 用户自定义标识机器组:请查看机器组状态是否包含上一步获取的IP地址。如果心跳显示OK,则可以结束本次排查流程。image..png

步骤三:检查Logtail启动参数是否正确

ilogtail_config.json文件记录了Logtail的相关启动参数。

  1. 登录Logtail所在的机器。

  2. 查找ilogtail_config.json文件。

    该文件在不同系统下的默认路径说明如下表所示:

    操作系统

    Logtail

    ilogtail_config.json文件路径

    Linux

    Logtail(64位程序)

    /usr/local/ilogtail/ilogtail_config.json

    Windows(64位操作系统)

    Logtail(64位程序)

    \ilogtail_config.json

    Logtail(32位程序)

    C:\Program Files (x86)\Alibaba\Logtail\ilogtail_config.json

    Windows (32位操作系统)

    Logtail(32位程序)

    C:\Program Files\Alibaba\Logtail\ilogtail_config.json

    1. 打开ilogtail_config.json文件,确认配置文件参数是否正确。

      {
        "config_server_address" : "http://logtail.<config_region>.log.aliyuncs.com",
        "data_server_list" :
        [
          {
            "cluster" : "<project地域>",
            "endpoint" : "<endpoint>"
          }
        ],
        ...
      }
      • 如果ilogtail_config.json文件中的启动参数符合下述表格中的说明,则表示Logtail启动参数正确。

      • 如果Logtail启动参数错误,请根据下述表格修改ilogtail_config.json文件,然后重启Logtail。具体操作,请参见附录:重启Logtail

        地域具体Project地域信息请参见开服地域

        场景

        网络类型

        <config_region>

        <endpoint>

        服务器为ECS,且与Project属于同一地域

        阿里云内网

        <project地域>-intranet

        <project地域>-intranet.log.aliyuncs.com

        其它情况

        公网

        <project地域>

        <project地域>.log.aliyuncs.com

        传输加速

        log-global.aliyuncs.com

步骤四:检查网络是否通畅

使用Logtail上传数据成功,至少需要保证Logtail所在服务器能够连通下列地址。

重要

如果使用内网,需要在<endpoint>后添加-intranet

  1. ilogtail_config.json文件中的config_server_address字段指定的地址及其HTTPS版本。

  2. http://<project名>.<endpoint>

    • Project的名称和地域,可以通过如下方式查看。

      image

    • <endpoint>ilogtail_config.json文件中data_server_list.endpoint字段指定的地址。

  3. http://ali-<project地域>-sls-admin.<endpoint>。其中<endpoint>ilogtail_config.json文件中data_server_list.endpoint字段指定的地址。

具体的网络检查及解决方法如下:

Linux系统

  1. 登录Logtail所在的机器。

  2. 执行curl命令依次连接上述地址。

    curl http://<project名>.cn-hangzhou-intranet.log.aliyuncs.com

    所有返回结果都为如下类似信息,说明网络畅通。

    {"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}}

    如果网络不畅通,请检查网络环境中80和443端口是否已经开放、目标地址是否被拦截以及其他网络方面的检查(例如DNS配置、安全组等)。

Windows系统

  1. 登录Logtail所在的机器。

  2. 调用telnet命令依次尝试连接上述地址。

    telnet <project名>.cn-hangzhou-intranet.log.aliyuncs.com 80 # 如果是HTTPS协议,则端口号为443。

    所有返回结果都为如下类似信息,说明网络畅通。

    Trying 100*0*7*5...
    Connected to xxx.
    Escape character is '^]'.

    如果网络不畅通,请检查网络环境中80和443端口是否已经开放、目标地址是否被拦截以及其他网络侧的检查(例如DNS配置、安全组等)。

步骤五:检查Logtail所在服务器的系统时间是否正确

Linux系统

  1. 登录Logtail所在的机器。

  2. 执行date命令查看系统时间。

    Wed Dec 28 06:59:26 UTC 2022

    如果系统时间明显快于或慢于当前真实时间,请尝试如下修改。

    • 调整系统时间至真实时间。

    • 如果不能修改系统时间,请修改Logtail启动参数,即在ilogtail_config.json文件中增加配置项"enable_log_time_auto_adjust": true。修改后,需要重启Logtail。具体操作,请参见附录:重启Logtail。ilogtail_config.json文件路径说明请参见步骤三:检查Logtail启动参数是否正确

Windows系统

  1. 登录Logtail所在的机器。

  2. 查看桌面右下角任务栏中时间信息。

    • 调整系统时间至真实时间。

    • 如果不能修改系统时间,请修改Logtail启动参数,即在ilogtail_config.json文件中增加配置项"enable_log_time_auto_adjust": true。修改后,需要重启Logtail。具体操作,请参见附录:重启Logtail。ilogtail_config.json文件路径说明,请参见步骤三:检查Logtail启动参数是否正确

步骤六:检查是否存在用户标识

重要
  • 如果是其他云或者自建服务器,或者Project和ECS服务器属于不同账号,必须检查用户标识。

  • 用户标识必须是阿里云账号ID(主账号ID)。具体操作请参见配置用户标识

您可以通过指定目录下的用户标识文件判断是否存在用户标识。如果返回结果为空,则您需要查看指定路径中是否已有用户标识文件。

说明

用户标识文件路径如下:

  • Linux系统:/etc/ilogtail/users/

  • Windows系统:C:\LogtailData\users\

  • 如果指定路径下无用户标识文件或用户标识文件配置错误,请按照如下方法解决。

    • Linux系统:执行cd /etc/ilogtail/users/ && touch <uid>命令,创建用户标识文件。其中<uid>为Project所属的阿里云账号ID。

    • Windows系统:进入C:\LogtailData\users\目录,创建一个名为<uid>的空文件。其中<uid>为Project所属的阿里云账号ID。

  • 如果指定路径下存在以当前Project所属的阿里云账号ID命名的文件,则说明用户标识配置正确。

步骤七:如果是用户自定义标识机器组,检查是否已配置自定义标识

您可以通过指定目录下的user_defined_id文件判断是否已在服务器上配置用户自定义标识。

  • 如果返回结果为空,您需要查看是否存在user_defined_id文件或该文件中是否已配置用户自定义标识。

    说明

    user_defined_id文件路径如下:

    • Linux系统:/etc/ilogtail/user_defined_id

    • Windows系统:C:\LogtailData\user_defined_id

    • 如果user_defined_id文件不存在,则新增一个user_defined_id的文件,然后在文件中输入机器组的用户自定义标识。具体操作,请参见配置用户自定义标识

    • 如果user_defined_id文件中无用户自定义标识或自定义标识配置错误,则在文件中新增一行,然后输入机器组的用户自定义标识。具体操作,请参见配置用户自定义标识

    • 如果user_defined_id文件已包含您在机器组中设置的用户自定义标识,则说明用户自定义标识配置正确。

重要

完成上述修改后,必须重启Logtail。具体操作,请参见附录:重启Logtail方法

后续步骤

经过上述排查后,仍未解决问题,请提工单

附录:重启Logtail

Linux系统

  1. 登录Logtail所在的机器。

  2. 运行如下命令。

    sudo /etc/init.d/ilogtaild restart

Windows系统

  1. 登录Logtail所在的机器。

  2. 打开运行窗口,输入services.msc

  3. 重启LogtailDaemon服务(Logtail 1.0.0.0及以上版本)或LogtailWorker服务(Logtail 0.x.x.x版本)。