本文主要介绍如何系统排查主机场景下的机器组无心跳问题。
机器组安装示例
机器组配置:ECS和日志服务Project同账号同地域。
通过Logtail跨地域采集日志:ECS和日志服务Project同账号不同地域。
通过Logtail跨阿里云账号采集日志:其他云或、自建服务器、Project和ECS服务器属于不同账号。
排查预览
步骤一:检查Logtail是否正常运行:检查Logtail在服务器是否正常运行。
步骤二:确认机器组中的IP地址是否为Logtail获取的IP地址:确认机器组中的IP地址是否和Logtail的app_info.json文件中的IP地址一致,不一致会导致心跳失败。
步骤三:检查Logtail启动参数是否正确:检查
ilogtail_config.json
文件中配置的Project地域是否正确。步骤四:检查网络是否通畅:检查服务器与Project之间网络是否通畅。
步骤五:检查Logtail所在服务器的系统时间是否正确:如果系统时间明显快于或慢于当前真实时间,需要修改。
步骤六:检查是否存在用户标识:如果Project和ECS服务器属于不同账号,其他云或者自建服务器,必须检查用户标识。
步骤七:检查是否已配置自定义标识:如果是用户自定义标识机器组,检查是否已配置自定义标识。
步骤一:检查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,请安装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,请安装Logtail。具体操作,请参见安装Logtail(Windows系统)。
重要安装时,请务必选择支持安装Logtail的操作系统、按照日志服务Project所属地域选择安装参数以及根据网络类型选择安装方式。关于网络类型的更多信息,请参见选择网络。
步骤二:确认机器组中的IP地址是否为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
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" }
确认机器组中使用的是Logtail获取的IP地址。
日志服务机器组包括IP地址机器组和用户自定义标识机器组。更多信息,请参见什么是机器组。
步骤三:检查Logtail启动参数是否正确
ilogtail_config.json文件记录了Logtail的相关启动参数。
登录Logtail所在的机器。
查找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
打开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
。
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 http://<project名>.cn-hangzhou-intranet.log.aliyuncs.com
所有返回结果都为如下类似信息,说明网络畅通。
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}}
如果网络不畅通,请检查网络环境中80和443端口是否已经开放、目标地址是否被拦截以及其他网络方面的检查(例如DNS配置、安全组等)。
Windows系统
登录Logtail所在的机器。
调用
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系统
登录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启动参数是否正确。
步骤六:检查是否存在用户标识
如果是其他云或者自建服务器,或者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
完成上述修改后,必须重启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版本)。