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服务。
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
自然语言处理 应用服务中间件 开发者
钉钉技术群收集
钉钉技术群收集
1409 0
|
人工智能 自然语言处理 安全
关于大模型越狱的多种方式,有这些防御手段
【8月更文挑战第22天】在AI领域,大语言模型与视觉-语言模型显著提升了自然语言处理及视觉任务能力,但同时也引发了严重的安全与伦理问题,特别是大模型越狱现象。越狱可通过梯度、进化、演示、规则或多智能体等方式实现,利用模型弱点操纵其输出。针对此威胁,研究者提出包括提示检测、扰动、演示、生成干预及响应评估等多种防御策略,旨在增强模型安全性与可靠性。然而,攻击手段的多样性和有效性评估构成了主要挑战。[论文](https://arxiv.org/pdf/2407.01599)详细探讨了这些问题。
563 17
|
12月前
|
Docker 容器
|
存储 Kubernetes Java
在k8S中,容器内日志是怎么采集的?
在k8S中,容器内日志是怎么采集的?
|
机器学习/深度学习 算法
大模型开发:解释反向传播算法是如何工作的。
反向传播算法是训练神经网络的常用方法,尤其适用于多层前馈网络。它包括前向传播、计算损失、反向传播和迭代过程。首先,输入数据通过网络层层传递至输出层,计算预测值。接着,比较实际输出与期望值,计算损失。然后,从输出层开始,利用链式法则反向计算误差和权重的梯度。通过梯度下降等优化算法更新权重和偏置,以降低损失。此过程反复进行,直到损失收敛或达到预设训练轮数,优化模型性能,实现对新数据的良好泛化。
556 4
|
算法 物联网 网络安全
HTTP/2:多路复用、服务器推送和首部压缩的革命
HTTP/2:多路复用、服务器推送和首部压缩的革命
HTTP/2:多路复用、服务器推送和首部压缩的革命
|
存储 安全 API
oss客户端密钥管理数据密钥生成与使用
阿里云OSS中的客户端密钥管理涉及AccessKey ID和Secret的安全使用。数据加密可选SSE-OSS或使用KMS管理的CMK。若用KMS,KMS自动生成和管理数据密钥;否则,用户需安全生成密钥。上传下载时,通过SDK或API指定加密选项。密钥存储避免明文,利用KMS进行生命周期管理和访问控制,提升数据安全,满足合规需求。
1858 1
|
消息中间件 存储 网络协议
2020版中间件面试题总结(RabbitMQ+Kafka+ZooKeeper)
经常碰到的29道中间件面试题总结(RabbitMQ+Kafka+ZooKeeper),含答案解析
7966 95