日志服务中采集k8s时心跳失败基本排查

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文主要针对k8s向日志服务上传日志时,机器组心跳FAIL、或者没有出现IP的问题进行排查。

日志服务采集Kubernetes时心跳基本排查

本文主要针对k8s向日志服务上传日志时,机器组心跳FAIL、或者没有出现IP的问题进行排查。

前言

按照日志服务的文档安装logtail组件之后默认是会自动创建Project、机器组的。不过有时需求是集群日志写入到多个Project,或者自动生成的Project名称不符合本身业务的要求。这时就需要用户重新创建Project、机器组并且要与k8s容器进行关联。

原理介绍

logtail与日志服务关联的原因是,logtail每隔一分钟向日志服务发送一次心跳请求,请求中包含了机器标识信息、以及用户的uid等信息。机器标识用于跟用户创建的机器组进行关联,用户没有创建标识时默认使用logtail获取到的IP;用户的uid则决定logtail有权限写入哪些Project(所以自建机器以及跨账号采集用户需要单独配置uid)。
logtail采集组件能够与Project关联的原因是机器组进行统一的管理。机器组与logtail绑定的方式有两种,即创建机器组的方式,IP方式自定义标识方式。
logtail在安装时候是需要指定region的,心跳请求也只会发送到该region,所以安装的logtail与采集数据的Project region必须保持一致。

心跳排查

获取logtail信息

使用以下命令获取 logtail 容器id

docker ps | grep logtail

然后获取logtail容器的详细信息

docker inspect id


主要获取返回信息中的config.Env下内容,字段详情参考下表:

Key 描述 示例
ALIYUN_LOGTAIL_USER_DEFINED_ID 机器组标识 k8s-group-c8ba441d5f
ALIYUN_LOGTAIL_USER_ID 用户uid 104944648
ALICLOUD_LOG_ENDPOINT logtail使用的endpoint,可以看出安装region、是否为内网 cn-beijing-intranet.log.aliyuncs.com
ALIYUN_LOGTAIL_CONFIG 使用的ilogtail_config.json文件路径 /etc/ilogtail/conf/cn-beijing/ilogtail_config.json
ALICLOUD_LOG_DEFAULT_MACHINE_GROUP 默认机器组名称 k8s-group-c8ba441d5f
ALICLOUD_LOG_DEFAULT_PROJECT 默认Project名称 k8s-log-c8ba441d5f

信息对比

  1. 检查logtail容器与使用的endpoint网络是否能够连通;使用下面第一行命令进入logtail容器之后,curl 上面信息中的 ALICLOUD_LOG_ENDPOINT,如果有如下报错返回就表示网络可以连通。
docker exec -it logtail容器id bash
curl cn-beijing-intranet.log.aliyuncs.com
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5FD72CFEDFAEEE680F96353D"}}
  1. 对比Project与logtail安装的region是否一样,登录日志服务页面,可以看到Project对应的region与上面获取到的ALICLOUD_LOG_ENDPOINT进行对比,查看是否一样。例: cn-beijing与华北2(北京)就是没问题的。
  2. 检查logtail是否有权限写入Project;参考文档获取当前登录账号的uid,然后与环境变量中ALIYUN_LOGTAIL_USER_ID进行对照,目前logtail容器环境变量中只能设置一个uid,不能同时向多个账号发送数据。
  3. 检查机器组标识与ALICLOUD_LOG_DEFAULT_MACHINE_GROUP对应的值是否一致,容器采集建议使用自定义标识方式。目前logtail容器环境变量中只能设置一个标识。

如果上面4项排查结束之后还是无法解决,有可能是因为logtail组件刚刚安装心跳请求还未到达服务端,可以等几分钟之后再看下。如果一个小时左右仍然没有心跳就需要向日志服务提交工单排查了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
37 1
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
134 3
|
1月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
22 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
3月前
|
Kubernetes Docker Perl
在K8S中,如果是因为开发写的镜像问题导致pod起不来该怎么排查?
在K8S中,如果是因为开发写的镜像问题导致pod起不来该怎么排查?
|
3月前
|
Kubernetes Shell Docker
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
|
2月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
302 0
|
3月前
|
JavaScript Serverless Linux
函数计算产品使用问题之遇到Node.js环境下的请求日志没有正常输出时,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

相关产品

  • 日志服务
  • 下一篇
    无影云桌面