本文主要介绍如何系统排查主机场景下的机器组无心跳问题。
步骤一:检查Logtail是否正常运行
Linux系统
登录已安装Logtail的机器。
执行如下命令。
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系统
登录Logtail所在的机器。
打开运行窗口,输入
services.msc
。查看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地址。
您可以根据下述步骤完成排查。
打开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
获取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" }
确认机器组中使用的是Logtail获取的IP地址。
日志服务机器组包括IP地址机器组和用户自定义标识机器组。更多信息,请参见机器组简介。
步骤三:检查Logtail启动参数是否正确
ilogtail_config.json文件记录了Logtail的相关启动参数。
登录Logtail所在的机器。
查找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
打开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
。ilogtail_config.json
文件中的config_server_address
字段指定的地址及其HTTPS版本。http://<project名>.<endpoint>
。Project的名称和地域,可以通过如下方式查看。
<endpoint>
为ilogtail_config.json
文件中data_server_list.endpoint
字段指定的地址。
http://ali-<project地域>-sls-admin.<endpoint>
。其中<endpoint>
为ilogtail_config.json
文件中data_server_list.endpoint
字段指定的地址。
具体的网络检查及解决方法如下:
Linux系统
登录Logtail所在的机器。
执行
curl
命令依次连接上述地址。curl xxx
所有返回结果都为如下类似信息,说明网络畅通。
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}}
如果网络不畅通,请检查网络环境中80和443端口是否已经开放、目标地址是否被拦截以及其他网络侧的检查(例如DNS配置、安全组等)。
Windows系统
登录Logtail所在的机器。
调用
telnet
命令依次尝试连接上述地址。telnet xxx 80 # 如果是HTTPS协议,则端口号为443。
所有返回结果都为如下类似信息,说明网络畅通。
Trying 100*0*7*5... Connected to xxx. Escape character is '^]'.
如果网络不畅通,请检查网络环境中80和443端口是否已经开放、目标地址是否被拦截以及其他网络侧的检查(例如DNS配置、安全组等)。
步骤五:检查Logtail所在服务器的系统时间是否正确
Linux系统
登录Logtail所在的机器。
执行
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系统
登录Logtail所在的机器。
查看桌面右下角任务栏中时间信息。
调整系统时间至真实时间。
如果不能修改系统时间,请修改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
重要完成上述修改后,必须重启Logtail。具体操作,请参见附录:重启Logtail方法。
后续步骤
经过上述排查后,仍未解决问题,请提工单。
附录:重启Logtail
Linux系统
登录Logtail所在的机器。
运行如下命令。
sudo /etc/init.d/ilogtaild restart
Windows系统
登录Logtail所在的机器。
打开运行窗口,输入
services.msc
。重启LogtailDaemon服务(Logtail 1.0.0.0及以上版本)或LogtailWorker服务(Logtail 0.x.x.x版本)。