【最佳实践】使用CloudLens排查iLogtail重启问题

简介: 本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:iLogtail异常重启问题。

本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:iLogtail异常重启问题

目标读者

数字化系统开发运维(DevOps)工程师、稳定性工程师(SRE)、可观测平台运维人员等。

背景介绍

iLogtail 是阿里云日志服务(SLS)团队自研的可观测数据采集 Agent,拥有的轻量级、高性能、自动化配置等诸多生产级别特性,可以署于物理机、虚拟机、Kubernetes 等多种环境中来采集遥测数据。目前 iLogtail 已有千万级的安装量,每天采集数十 PB 的可观测数据,广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景,在实战中验证了其强大的性能和稳定性。

CloudLens for SLS是日志服务推出的一款应用,帮助用户监控和管理日志服务Project、Logstore等资产,提升用户对日志服务资产的管理效率、快速了解其消耗情况。

使用场景

文件日志采集是日志采集Agent最常见的数据采集场景,iLogtail目前支持主机上文件采集以及容器场景下的文件采集。但是文件采集在实战中会遇到各种各样的问题,基于此场景,CloudLens for SLS集成了针对iLogtail的状态监控,可以实时的反馈当前iLogtail Agent的运行状况。

本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:iLogtail异常重启问题

问题描述

问题发现

CloudLens for SLS页面,点击报表中心下采集监控,然后查看iLogtail异常监控-Logtail重启列表(必须处理)

image.png

里面会展示当前project下,有重启的iLogtail信息,包括最近重启时间、主机名、IP、当前iLogtail的CPU占用、内存占用、包含的采集配置数和重启次数。

如果是手动重启,这里的信息可以忽略,但是如果是非手动的异常重启,那么就会带来如下的一些问题。

问题影响范围

  1. 容器场景下,如果checkpoint没有持久化,那么iLogtail重启之后,checkpoint会丢失,这样有可能会导致日志采集重复或者采集丢失

  2. 主机场景下,CPU或者内存过高,导致iLogtail重启,也会导致有少量数据重复。

  3. 如果重启频率过高,会影响数据采集,比如日志不能被及时采集,有可能会导致比较大的采集延迟。

具体场景与方案建议

场景一:主机场景下CPU过高或者内存过高导致iLogtail主动重启

问题原因

为了控制资源占用,iLogtail会限制自己所占用的CPU和内存,CPU使用率、内存使用率跟数据量、计算量息息相关,在数据量比较大的情况下,有可能会超过设置的CPU或者内存限制,当iLogtail感知到资源超限之后,会主动重启,来确保自己的资源占用不会过高。

image.png

比如iLogtail配置里,cpu限制为0.4,内存限制为512,实际使用内存一旦超过512,iLogtail就会主动重启。

如何定位

通过CloudLens For SLS 查看iLogtail的CPU和内存占用

image.png

image.png image.png

解决方案

调整CPU和内存配置:参考推荐参数

场景二:K8s DeamonSet场景下CPU过高或者内存过高导致K8s强制重启iLogtail容器

问题原因

比如K8s的内存配置的是512MB, 但是iLogtail的配置里,内存却配置了1024MB。这种情况下,当数据量过大的情况下,iLogtail使用的内存超过512MB之后,K8s会主动把容器重启,从而导致iLogtail被动重启。

image.png image.png

如何定位

查看logtail-ds页面,发现有Pod重启

image.png

点击详情,查看事件,发现里面有PodOOMKilling的事件,就说明是内存OOM导致K8s强制重启iLogtail容器

image.png

解决方案

  1. 为了减少主动重启带来的数据重复或者丢失现象,推荐使用iLogtail采集进度持久化

  2. 调整CPU和内存配置。K8s场景DaemonSet模式下需要修改两个地方

    1. alibaba-log-configuration里的cpu-core-limit和mem-limitimage.png

    2. logtail-ds里的的资源限制image.png

修改完之后,需要重启下logtail-ds才能生效。

场景三:K8s 场景下livenessProbe失败导致K8s强制重启iLogtail容器

问题原因

K8s场景下,iLogtail有两种探测方式:

命令行探测:

        livenessProbe:
          exec:
            command:
            - /etc/init.d/ilogtaild
            - status
          initialDelaySeconds: 30
          periodSeconds: 30

该方式为最基础的探测方式,各种场景下通用,如果出现异常,则证明iLogtail主进程有异常。

Http请求探测:

          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /liveness
              port: 7953
              scheme: HTTP
            initialDelaySeconds: 35
            periodSeconds: 60
            successThreshold: 1
            timeoutSeconds: 1

该方式有一定的条件限制,目前在iLogtail DeamonSet模式下适用,默认对于Sidecar模式不适用

如何定位

Sidecar模式部署iLogtail,查看业务Pod页面,发现有重启现象

image.png

点击详情,查看事件,发现里面有iLogtail的probe failed的事件,且重启的原因是因为探测失败。

image.png

解决方案

选择合适的探测方式。如果是Sidecar的部署方式,请使用命令行探测方式。详细配置参考文档

场景四:长时间通信失败

问题原因

iLogtail会定期监测自己与外界的网络请求情况。

  • iLogtail会定时与ConfigServer通信,用来获取最新的采集配置,如果由于网络问题,导致iLogtail长时间(1h)获取不到采集配置,iLogtail会主动重启。

  • iLogtail长时间(12h),没有成功发送数据,iLogtail会主动重启

如何定位

在/usr/local/ilogtail/ilogtail.LOG文件里搜索关键字:prepare force exit,如果能够搜到内容,则说明出现该问题。

解决方案

排查网络问题,确保iLogtail跟SLS网络通畅​

场景五:被外部误杀进程

问题原因

iLogtail启动的时候,会运行两个进程,第一个是守护进程,第二个是主进程

image.png

如果主进程被杀掉,守护进程会把主进程再拉起来。

比如我们手动把主进程杀掉

image.png

可以看到守护进程又拉起了另外一个主进程

image.png

如何定位

排查是否有误杀iLogtail的脚本或程序

解决方案

修复脚本或者程序,将iLogtail进程排除在管控范围之外

参考资料

关于iLogtail

iLogtail作为阿里云SLS提供的可观测数据采集器,可以运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据(日志、监控、Trace、事件等),已经有千万级的安装量。目前,iLogtail已正式开源,欢迎使用及参与共建。

GitHub:https://github.com/alibaba/ilogtail

官网:https://help.aliyun.com/document_detail/65018.html

钉钉群:iLogtail社区

image.png
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
消息中间件 存储 数据采集
iLogtail社区版使用入门 - 主机环境采集业务日志到SLS
本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统
821 0
|
运维 监控 数据可视化
ELK日志监控分析系统的探索与实践(二):利用Metricbeat监控服务器系统指标
在ELK日志监控分析系统的探索与实践(一)中,我们介绍了如何利用ELK+Filebeat监控Springboot项目的日志,本篇则是重点介绍如何利用ELk+Metricbeat监控服务器系统CPU、内存、磁盘等系统指标。
ELK日志监控分析系统的探索与实践(二):利用Metricbeat监控服务器系统指标
|
1月前
|
Web App开发 监控 应用服务中间件
全新架构!日志服务 SLS 自研免登录方案发布
全新架构!日志服务 SLS 自研免登录方案发布
87442 7
|
4月前
日志 问题排查
日志 问题排查
18 1
|
5天前
|
数据采集 监控 Kubernetes
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:采集配置错误问题。
【最佳实践】使用CloudLens排查iLogtail采集配置错误问题
|
5天前
|
存储 JSON 监控
【最佳实践】使用CloudLens排查日志时间解析错误问题
本文主要介绍如何使用CloudLens for SLS定位和解决iLogtail日常使用中的常见问题之一:日志时间解析错误问题。
【最佳实践】使用CloudLens排查日志时间解析错误问题
|
存储 数据可视化 Java
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
476 0
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
|
运维 监控 Java
如何基于运维事件中心通过logstash进行日志关键字监控
日常运维过程中,很多场景都会有诉求,需要对日志关键字进行监测,以便第一时间发现应用/业务相关异常,如jvm日志的gc关键字、业务日志的error关键字。本文将介绍使用logstash对异常日志进行采集及推送。
284 0
|
数据采集 运维 监控
本地机器安装Logtail接入到阿里云SLS日志服务
本地机器安装Logtail接入到阿里云SLS日志服务
1180 0
本地机器安装Logtail接入到阿里云SLS日志服务