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

简介: 机器组有心跳是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日志并进行多维度分析。
目录
相关文章
|
消息中间件 存储 数据采集
iLogtail社区版使用入门 - 主机环境采集业务日志到SLS
本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统
831 0
|
4月前
|
JSON NoSQL 网络安全
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
42 0
|
4月前
|
网络安全 数据安全/隐私保护
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
35 0
|
Linux
Linux主机安装NetFlow采集器并使用Graylog进行网络流量分析
Linux主机安装NetFlow采集器并使用Graylog进行网络流量分析
738 0
Linux主机安装NetFlow采集器并使用Graylog进行网络流量分析
|
8天前
|
数据采集 监控 Kubernetes
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:采集配置错误问题。
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
|
数据采集 运维 监控
本地机器安装Logtail接入到阿里云SLS日志服务
本地机器安装Logtail接入到阿里云SLS日志服务
1183 0
本地机器安装Logtail接入到阿里云SLS日志服务
|
Linux
使用Telegraf+GrayLog实现Linux业务系统服务异常时自动推送钉钉告警
使用Telegraf+GrayLog实现Linux业务系统服务异常时自动推送钉钉告警
204 0
使用Telegraf+GrayLog实现Linux业务系统服务异常时自动推送钉钉告警
|
监控 关系型数据库 MySQL
zabbix监控所有机器端口、邮件告警
监控的意义 在发生问题时,能够让我们及时获知 监控的对象: 1、服务器监控:内存,cpu负载,磁盘使用率,进程数。。。。 2、应用程序监控:应用程序状态,相应时间, 3、数据库监控:数据库状态,表或者表空间大小,错误日志,死锁等现象 4、网络监控:网络状态 ,流量监控,端口,网络连接数。。。。 zabbix——企业级分布式开源监控解决方案 zabbix优点: 1、开源,无成本投入 2、server端对于机器性能要求低 3、支持设备多,自带监控模板 4、提供Api接口,可以与其他系统结合使用 zabbix缺点: 1、被监控机器需要安装agent 2、社区成熟,中文资料少 3、批量修改麻烦
zabbix监控所有机器端口、邮件告警
|
运维 监控
经常用到的PING工具监控 - WGCLOUD
WGCLOUD是一款运维监测平台,其中具备对主机、设备、链路等进行持续的PING监控
经常用到的PING工具监控 - WGCLOUD
|
8天前
|
数据采集 运维 Kubernetes
【最佳实践】使用CloudLens排查iLogtail重启问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:iLogtail异常重启问题。
【最佳实践】使用CloudLens排查iLogtail重启问题