You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
数据采集常见问题
如何排查机器组心跳异常(容器)
复制全文
下载 pdf
如何排查机器组心跳异常(容器)
通过 LogCollector 采集容器文本日志或标准输出时,如果机器组中的 LogCollector 心跳状态异常,会造成日志采集失败等问题。LogCollector 心跳异常时,您可以参考本文档逐步排查问题、恢复 LogCollector 心跳状态。​
背景信息​
LogCollector 是日志服务自研的日志采集客户端,用于快速上报容器日志数据。在容器上安装 LogCollector 之后,LogCollector 会定时向服务端发送心跳包。如果在日志服务控制台的机器组配置页面中显示 LogCollector 无心跳,说明客户端和服务端连接失败。​
问题现象​
在日志服务控制台的机器组详情页面,如果心跳状态信息区域中,某些 IP 地址对应的状态栏显示异常,表示此容器 LogLollector 心跳状态异常,容器上的 LogCollector 客户端与服务端连接失败。​
在心跳异常的状态下,容器上的 LogCollector 客户端无法将采集到的日志数据正常上报至服务端,导致日志无法正常采集到日志主题中,控制台上也无法实时查询并检索到新的日志数据。​
​​​
注意事项​
LogCollector 会读取所在 Pod 第一块网卡的 IP 地址,并将其作为 Pod 的 IP 地址通过心跳上报至机器组。​
当 Daemonset 滚动升级或重启时,现存的 Pod 将被删除,现存的 LogCollector 将停止运行,导致这些现存 Pod 的 IP 地址对应的状态栏显示异常。因为 Daemonset 滚动升级或重启之后,新的 Pod 将被创建,新的 LogCollector 将开始运行,这些新 Pod 的 IP 地址将通过心跳上报至机器组。​
排查方案​
本文档以在 Kubernetes 集群中使用 Daemonset 方式安装 LogCollector 为例进行说明。​
1 检查 LogCollector 状态​
登录 Kubernetes 集群后,执行以下命令查看 LogCollector 的运行状态。​
​
kubectl -n ${namespace} get pods | grep ${Daemonset}​
​
在以下示例中,Daemonset 的名称是 log-collector,所属的 namespace 是 tls-log。​
​
kubectl -n tls-log get pods | grep log-collector​
​
回显信息说明:​
  • 如果回显信息中 NAME 字段没有名为 “log-collector-xxxxx” 的 Pod,表示该 Kubernetes 集群尚未安装 LogCollector,请参考容器 LogCollector 常见处理方案?进行处理。​
  • 如果回显信息中 STATUS 字段中存在 Running 以外的值,表示当前容器已经安装 LogCollector,但是该 Pod 上的 LogCollector 运行状态异常。请参考容器 LogCollector 常见处理方案?进行处理。​
  • 如果回显信息显示 STATUS 字段值全部为 Running,表示当前 Kubernetes 集群已经成功安装 LogCollector,且运行状态正常。​
  • 此时若控制台上 LogLollector 心跳状态仍然显示异常,请执行以下步骤继续排查。​
  • ​​​
2 检查鉴权参数配置​
以 Daemonset 方式安装 LogCollector 时,需要首先创建 ConfigMap,并在 logcollector_config.yaml 文件的 output.tls 字段中添加日志服务的配置信息,用于鉴权和连接日志服务。如果参数配置错误,可能会造成 LogLollector 心跳异常。​
执行以下命令打开 filebeat.yml 文件,检查创建 ConfigMap 时配置的鉴权参数。在以下示例中,Daemonset 的名称是 log-collector,所属的 namespace 是 tls-log。​
​
kubectl -n tls-log describe configmaps log-collector-config​
​
鉴权参数相关说明如下。​
​
参数​
示例​
说明​
获取方式​
endpoint​
https://tls-cn-beijing.ivolces.com​
日志服务连接域名,即服务地址。​
登录火山引擎控制台后,在日志项目的详情页中查看连接域名。​
secret_id​
AKLY*********​
火山引擎主账号的 Access Key ID。​
以主账号登录火山引擎控制台后,在页面右上角下拉列表中单击密钥管理,根据页面提示查看并复制 Access Key ID。​
secret_key​
TUdZ********​
火山引擎主账号的 Secret Access Key。​
以主账号登录火山引擎控制台后,在页面右上角下拉列表中单击密钥管理,根据页面提示查看并复制 Secret Access Key。​
region​
cn-beijing​
日志项目所在的地域(Region)。​
在日志服务控制台顶部导航栏中可以查看当前日志项目所在地域。​
​
Tip​
在 output.tls 中,不能同时配置 ip 和 label 参数,否则也会造成心跳失败。​
配置文件示例如下。​
​​​
如果鉴权参数配置错误,请修改后重启 Daemonset,稍后查看机器组状态。若控制台上 LogCollector 心跳状态仍然显示异常,请执行以下步骤继续排查。​
3 检查 LogCollector 是否为最新版本​
LogCollector 1.0.1 版本开始支持机器组,如果容器中安装的 LogCollector 版本号不是 1.0.1 或后续版本,可能会出现 LogCollector 心跳异常的现象,服务端无法识别该 LogCollector。所以 LogCollector 心跳异常时需检查 LogCollector 的版本是否符合要求。​
执行以下命令,查看 LogCollector 的版本。回显信息中 “Image” 会展示当前安装的 LogCollector 的镜像地址,如果不是 1.0.1 或以上版本,或者不是 latest,请参考升级 LogCollector将 LogCollector 升级至最新版本。​
​
kubectl -n tls-log describe daemonsets.apps log-collector​
​
回显信息示例如下。​
​​​
升级 LogCollector 的版本后,若控制台上 LogCollector 心跳状态仍然显示异常,请执行以下步骤继续排查。​
4 检查机器标识配置​
Tip​
  • 机器标识地址类型的机器组,请参考此步骤进行排查。​
  • 通过 LogCollector 采集容器文本日志或标准输出日志时,建议创建机器标识类型的机器组。​
在机器标识地址类型的机器组中,已配置的机器标识必须和 LogCollector 配置文件中配置的机器 Label 一致,否则机器组中没有 LogCollector 的心跳状态。​
执行以下命令,查看 LogCollector 的配置文件。​
​
kubectl -n tls-log describe configmaps log-collector-config​
​
系统回显信息如下,其中 label 的值即为 LogCollector 中配置的机器 Label。如果此值与机器组中配置的机器标识不一致,请修改机器组配置,并稍后再次检查机器状态。​
​​​
5 检查机器组 IP 地址配置​
Tip​
IP 地址类型的机器组,请参考此步骤进行排查。​
默认情况下,LogCollector 会读取所在 Pod 第一块网卡的 IP 地址,并将其作为 Pod 的 IP 地址记录在文件 agent_info.json 中。在控制台创建 IP 类型的机器组时,您需要将 agent_info.json 中记录的 IP 地址作为 Pod 的 IP 地址填写到机器组中,以此将指定 Pod 的 LogCollector 加入到机器组。​
如果机器组中配置的 IP 地址和 agent_info.json 中的 IP 地址不一致,控制台会显示此容器 LogCollector 心跳状态异常、无法采集日志。​
您可以通过以下命令查看 agent_info.json,检查 ip 字段中填写的 IP 地址与控制台显示的 IP 地址是否一致。​
  1. 查看agent_info.json。​
  • ​
    kubectl -n tls-log exec -it log-collector-9ph8j -- bash​
    ​
    cat agent_info.json​
    ​
  • 回显信息中,ip 字段表示 LogCollector 获取的当前 Pod IP 地址。​
  • ​
    {​
    hostname : C02G64T1MD6R ,​
    ip : 10.*.*.* ,​
    logcollect_version : 1.0.2 ,​
    update_time : 2022.01.07 18:38:12 ​
    }​
    ​
  1. 查看控制台配置的 IP 地址。​
  • 在机器组的详情页面可以查看机器组内所有 Pod 的 IP 地址。如果此处配置的 IP 地址与 agent_info.json 中显示的 IP 地址不一致,请修改机器组配置,并稍后再次检查机器状态。​
  • ​​​
​
最近更新时间:2026.07.01 16:01:14
这个页面对您有帮助吗?
有用
有用
无用
无用