Logtail心跳问题排查手册(主机场景)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 机器组有心跳是Logtail正常运行的重要基础,然而,机器组无心跳却是Logtail使用过程中非常常见的问题。事实上,这一类问题的排查有一套非常系统的流程,绝大多数问题均可在这个排查过程中得以解决。因此,本文将重点介绍如何系统排查主机场景下的机器组无心跳问题。

前言

机器组有心跳是Logtail正常运行的重要基础,然而,机器组无心跳却是Logtail使用过程中非常常见的问题。事实上,这一类问题的排查有一套非常系统的流程,绝大多数问题均可在这个排查过程中得以解决。因此,本文将重点介绍如何系统排查主机场景下的机器组无心跳问题。

排查流程

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

登录Logtail所在的机器,根据下列方法进行检查:

  • Linux系统

在命令行运行以下命令:

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条及以上的ilogtail运行命令,则说明当前环境中有多个Logtail实例在运行,有重复采集的风险,请检查是否为预期行为。

  • Windows系统
  1. 打开运行窗口,输入services.msc,打开服务窗口。
  2. 查看LogtailDaemon服务和LogtailWorker服务的运行状态。如果正在运行,表示已安装Logtail。

检查结果:

步骤2:确认机器组中涉及的IP地址为Logtail获取的IP

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

  • 如果没有设置主机名绑定,则获取服务器中第一块网卡的IP地址。
  • 如果在/etc/hosts文件中设置了主机名绑定,则会获取绑定的主机名对应的IP地址。

步骤2.1:寻找app_info.json文件

Logtail将获取的IP地址记录在app_info.json文件的ip字段中,该文件在不同系统下的默认路径如下:

  • Linux系统:/usr/local/ilogtail/app_info.json
  • 64位Windows系统:C:\Program Files (x86)\Alibaba\Logtail\app_info.json
  • 32位Windows系统:C:\Program Files\Alibaba\Logtail\app_info.json

{

 "UUID" : "",

 "hostname" : "iZ8vbdlzf******azuhZ",

 "instance_id" : "E9633380-***********-00163E1AA597_172.16.2.200_166****11",

 "ip" : "172.16.2.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.2:确认在机器组中使用的是Logtail获取的IP地址

机器组中涉及的IP地址均为Logtail获取的IP地址。请检查如下内容:

  • 如果机器组标识为IP地址,请确认机器组的IP地址框内是否包含目标Logtail的获取的IP地址;
  • 如果机器组标识为用户自定义标识,请确认使用Logtail获取的IP地址来搜索机器组的状态信息。

检查结果:

  • 机器组标识为IP地址:如果在机器组的IP地址框内填写了目标Logtail的其它IP地址(如公网地址),则请将该地址修改为Logtail获取的IP地址后,重新观察机器心跳是否正常,若正常,则结束本次排查流程。
  • 机器组标识为用户自定义标识:如果在搜索机器组状态信息时使用了其它IP地址,则请重新使用Logtail获取的IP地址进行搜索,若搜索成功,则结束本次排查流程。
  • 其余情况,请执行下一步检查。

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

步骤3.1:寻找Logtail配置文件

ilogtail_config.json文件记录了Logtail的相关启动参数,为了找到该文件,首先需要查看环境变量中是否指定了该文件的存储路径:

echo $ALIYUN_LOGTAIL_CONFIG

如果返回的结果非空,则该文件的存储路径即为该环境变量的值,一般为/etc/ilogtail/conf/<project地域>/ilogtail_config.json;如果返回的结果为空,则该文件在不同系统下的默认路径如下:

  • Linux系统:/usr/local/ilogtail/ilogtail_config.json
  • 64位Windows系统:C:\Program Files (x86)\Alibaba\Logtail\ilogtail_config.json
  • 32位Windows系统:C:\Program Files\Alibaba\Logtail\ilogtail_config.json

步骤3.2:确认配置文件参数是否正确

Logtail配置文件如下所示:

{

 "config_server_address" : "http://logtail.<config_region>.log.aliyuncs.com",

 "data_server_list" :

 [

   {

     "cluster" : "<project地域>",

     "endpoint" : "<endpoint>"

   }

 ],

 ...

}

其中,<·>代表变量,具体参数选择方式如下表:

场景

网络类型

<config_region>

<endpoint>

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

阿里云内网

<project地域>-intranet

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

其它情况

公网

<project地域>

<project地域>.log.aliyuncs.com

全球加速

log-global.aliyuncs.com

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

要保证Logtail上传数据的成功,至少需要保证Logtail能够连通下列几个地址:

  1. ilogtail_config.json文件中config_server_address字段指定的地址及其https版本;
  2. http://<project名>.<endpoint>,其中<endpoint>为ilogtail_config.json文件中data_server_list.endpoint字段指定的地址;
  3. http://ali-<project地域>-sls-admin.<endpoint>,其中<endpoint>为ilogtail_config.json文件中data_server_list.endpoint字段指定的地址。

(其中[-intranet]代表根据是否使用内网,若是,则添加-intranet)

网络调试方法如下:

  • Linux系统

在命令行调用curl命令依次尝试连接前述地址:

curl xxx

如果所有地址都返回如下类似内容,说明网络畅通:

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

  • Windows系统

在命令行调用telnet命令依次尝试连接前述地址:

telnet xxx 80 # 如果是https则为443

如果所有地址都返回如下类似内容,说明网络畅通:

Trying 100*0*7*5...

Connected to xxx.

Escape character is '^]'.

检查结果:

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

步骤5:检查Logtail所处环境的系统时间是否正确

  • Linux系统

在命令行运行date命令查看系统时间:

Wed Dec 28 06:59:26 UTC 2022

  • Windows系统

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

检查结果:

  • 如果系统时间显著快于或慢于当前真实时间,请重新调整系统时间至真实时间后重启Logtail,或者修改Logtail启动参数后重启,即在配置文件ilogtail_config.json中增加一个键值对"enable_log_time_auto_adjust": true。配置文件的具体路径可参考步骤3.1中的描述,重启Logtail方法参见附录
  • 如果系统时间与真实时间一致,请执行下一步检查。

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

如果Logtail所在的服务器为ECS但是与日志服务不属于同一账号、或为其他云厂商的服务器及自建IDC时,需要为Logtail配置Project所属主账号为用户标识,表示该账号有权限通过Logtail采集该服务器日志。

为了检查Logtail是否正确配置了用户标识,首先查看环境变量ALIYUN_LOGTAIL_USER_ID中是否已经指定了用户标识

echo $ALIYUN_LOGTAIL_USER_ID

如果返回的结果非空,则比较该值中是否有与project主账号ID相等的分量;如果返回的结果为空,则用户标识文件在不同系统下的默认目录如下:

  • Linux系统:/etc/ilogtail/users/。
  • Windows系统:C:\LogtailData\users\。

检查结果:

  • 如果Logtail未配置用户标识或用户标识配置错误,则:
  • 如果配置了ALIYUN_LOGTAIL_USER_ID环境变量,则修改该环境变量的值为project所属的主账号ID,或在现有值的最后增加project所属的主账号ID,以逗号分隔。
  • 反之,增加或修改用户标识文件:
  • Linux系统:在命令行运行cd /etc/ilogtail/users/ && touch <uid>,其中<uid>为project所属的主账号ID;
  • Windows系统:进入C:\LogtailData\users\目录并创建一个名为<uid>的空文件。

修改之后需要重启Logtail,重启方法见附录

  • 如果用户标识已正确配置,请执行下一步检查。

步骤7:若机器组标识为自定义标识,检查是否配置自定义标识

为了检查Logtail是否正确配置了自定义标识,首先查看环境变量ALIYUN_LOGTAIL_USER_DEFINED_ID中是否已经指定了自定义标识

echo $ALIYUN_LOGTAIL_USER_DEFINED_ID

如果返回的结果非空,则比较该值中是否有与机器组中配置的自定义标识相等的分量;如果返回的结果为空,则自定义标识文件在不同系统下的默认路径如下:

  • Linux系统:/etc/ilogtail/user_defined_id
  • Windows系统:C:\LogtailData\user_defined_id

检查结果:

  • 如果Logtail未配置自定义标识或自定义标识配置错误,则:
  • 如果配置了ALIYUN_LOGTAIL_DEFINED_ID环境变量,则修改该环境变量的值为机器组的用户自定义标识,或在现有值的最后增加机器组的用户自定义标识,以逗号分隔。
  • 反之,如果自定义标识文件不存在,则新增一个名为user_defined_id的文件,文件中填写机器组的用户自定义标识;反之,在现有文件中新增一行填写机器组的用户自定义标识。

修改之后需要重启Logtail,重启方法见附录

后续步骤

绝大多数的机器组心跳问题均可以通过上述排查流程得以解决,如果仍未能解决,请提工单。

附录

重启Logtail方法

  • Linux系统:在命令行运行sudo /etc/init.d/ilogtaild restart
  • Windows系统:
  1. 打开运行窗口,输入services.msc,打开服务窗口。
  2. 重启LogtailWorker服务。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
727 3
|
监控 应用服务中间件 PHP
|
25天前
|
域名解析 运维 网络协议
网络诊断指南:网络故障排查步骤与技巧
网络诊断指南:网络故障排查步骤与技巧
117 7
|
7月前
|
数据采集 监控 Kubernetes
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:采集配置错误问题。
447 0
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
|
运维 监控
经常用到的PING工具监控 - WGCLOUD
WGCLOUD是一款运维监测平台,其中具备对主机、设备、链路等进行持续的PING监控
经常用到的PING工具监控 - WGCLOUD
|
7月前
|
数据采集 运维 Kubernetes
【最佳实践】使用CloudLens排查iLogtail重启问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:iLogtail异常重启问题。
669 0
【最佳实践】使用CloudLens排查iLogtail重启问题
|
7月前
|
数据采集 监控 应用服务中间件
使用CloudLens排查iLogtail文件重复配置问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:重复采集配置问题。
629 0
使用CloudLens排查iLogtail文件重复配置问题
|
存储 弹性计算 运维
SLS新版告警入门-监控主机CPU异常
随着用户量的增加,后台服务经常需要部署在多台服务器或者集群中来提高性能和增强可用性,在提供服务的过程中,由于程序bug或者业务徒增导致CPU飙高,如果CPU持续飙高,可能会导致机器down机,对服务造成不可用。 本文以此为背景,在主机监控时序数据中,配置SLS告警,来监控主机CPU飙高,并且在CPU飙高时发出告警到钉钉机器人。
611 0
服务启动失败排查方案
本篇文章带你从几大方面排查服务启动失败的问题
服务启动失败排查方案
|
固态存储 Java 弹性计算
【最佳实践】简单配置,实现Filebeat多行日志传送
在解决应用程序问题时,多行日志为开发人员提供了宝贵的信息。 堆栈跟踪就是一个例子。 堆栈跟踪是引发异常时应用程序处于中间的一系列方法调用。 堆栈跟踪包括遇到错误的相关行以及错误本身。
8773 0
【最佳实践】简单配置,实现Filebeat多行日志传送