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

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

步骤一:检查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的操作系统、按照日志服务Project所属地域选择安装参数以及根据网络类型选择安装方式。关于网络类型的更多信息,请参见选择网络

Windows系统

  1. 登录Logtail所在的机器。

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

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

    如果上述服务未运行,请安装Logtail。具体操作,请参见安装Logtail(Windows系统)

    重要

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

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

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

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

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

您可以根据下述步骤完成排查。

  1. 打开app_info.json文件。

    Logtail将获取的IP地址记录在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

  2. 获取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"
    }
  3. 确认机器组中使用的是Logtail获取的IP地址。

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

    • 如果是IP地址机器组,请查看IP地址文本框内的IP地址。具体操作,请参见管理机器组

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

    • 如果是用户自定义标识机器组,请使用Logtail获取的IP地址搜索目标机器组的状态信息。具体操作,请参见管理机器组。如果心跳显示OK,则可以结束本次排查流程。image..png

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

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

  1. 登录Logtail所在的机器。

  2. 查找ilogtail_config.json文件。

    先执行如下命令确认环境变量中是否指定了该文件的存储路径。

    echo $ALIYUN_LOGTAIL_CONFIG

    如果返回结果为空,则说明未使用环境变量指定ilogtail_config.json文件的存储路径。您可以通过如下默认路径查找。

    操作系统

    Logtail

    ilogtail_config.json文件路径

    Linux

    Logtail(64位程序)

    /usr/local/ilogtail/ilogtail_config.json

    Windows(64位操作系统)

    Logtail(64位程序)

    C:\Program Files\Alibaba\Logtail\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

        场景

        网络类型

        <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 xxx

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

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

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

    Windows系统

    1. 登录Logtail所在的机器。

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

      telnet xxx 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启动参数是否正确

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

    重要

    用户标识必须是阿里云账号ID(主账号ID)。如何获取,请参见获取日志服务所在的阿里云账号ID

    您可以通过环境变量ALIYUN_LOGTAIL_USER_ID或指定目录下的用户标识文件判断是否存在用户标识。如果已通过环境变量设置用户标识,则以环境变量配置方式为准。因此,您需要先执行如下命令,确认是否已通过环境变量指定用户标识。

    echo $ALIYUN_LOGTAIL_USER_ID
    • 如果返回结果中包含当前Project所属阿里云账号ID,则说明已正确配置用户标识。

    • 如果返回结果非空但未包含当前Project所属阿里云账号ID,则需修改该环境变量的值为Project所属的阿里云账号ID或在现有值后面增加Project所属的阿里云账号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命名的文件,则说明用户标识配置正确。

    重要

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

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

    您可以通过环境变量ALIYUN_LOGTAIL_USER_DEFINED_ID或指定目录下的user_defined_id文件判断是否已在服务器上配置用户自定义标识。如果已通过环境变量设置用户自定义标识,则以环境变量配置为准。因此,您需要先执行如下命令,确认是否已通过环境变量指定用户自定义标识。

    echo $ALIYUN_LOGTAIL_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版本)。