全方位 Logtail 状态监控

  • 时间:
  • 浏览:0

设置告警时可使用此表达式: pf > 0 || sf > 0 || r > 1024*1024

在 logtail_profile 中,有一一还还有一个 read_avg_delay,它会在 Logtail 每次读取文件时被更新,记录下当前已读取 offset 和文件大小之间的差距,即当前未读内容的大小,以此来表示 delay。或者,我们都我们都 完会 使用如下的查询搞笑的话来获取最近时间内各个文件的分类整理延迟:

欢迎加入钉钉群进行讨论交流

CPU 的监控时要使用到 cpu 字段,它表示上报此条日志时 Logtail 最近一次的 CPU 占用情況(目前仅支持 Linux)。基于它我们都我们都 完会 实现如下的一系列监控需求:

原因分析选着资源超限完会异常引起原因分析已无更好的优化土措施,则时要上调 Logtail 所使用的资源限制,完会 参考此文档。

以 SEND_QUOTA_EXCEED_ALARM 为例,它表示当前日志写入流量超出限制。对于正常业务来说,偶尔的流量突增原因分析会带来几滴 的此错误,然里都完会 忽略,或者一旦短时间内此错误数量(alarm_count)超过了一定阈值,则说明当前原因分析居于有些的难题,比如:

显然,此情況异常的情況下,Logtail 无法正常工作甚至无法访问日志服务,或者,通过服务日志都完会 实现对此情況的监控。对此,目前比较好的土措施是基于 Logtail 心跳实现,当心跳正常时,则链路情況一定正常。

以下我们都我们都 简单地举有些使用什么日志字段的例子。

logtail_status 是服务日志的一要素,它记录了 Logtail 的基本情況,每分钟会记录并上报一次。

为了监控重启,我们都我们都 时要使用该日志提供的以下字段进行分析:

如下是 Logtail运行监控 仪表盘的截图。

至此,我们都我们都 完成了有一一还还有一个通过 CLI 访问日志服务 API 来实现对链路情況监控的示例,通过简单地修改,即可实现监控特定机器以及多个机器组等需求。

为了分析重启原因,完会 在告警触发后,回到 internal-diagnostic_log logstore 的查询控制台,将时间切换到告警对应的范围,执行对应的查询搞笑的话来定位引起告警的机器(根据原始日志中的 IP 信息),再具体分析相关的原因。

除了 logtail_status 以外,我们都我们都 还完会 通过 logtail_alarm 来要素实现这一 需求(原因分析资源超限场景完会产生 alarm)。logtail_alarm 也是服务日志的一要素,它记录了 Logtail 上报的错误日志,每 50 秒记录并上报一次,50 秒内重复出现的错误类型只记录错误总和,错误消息则随机选着二根。

数据延迟

完后 提及的三类日志都拥有一一还还有一个 project 字段,我们都我们都 完会 利用它来筛选出所关注的 project,比如说有一一还还有一个 Logtail 节点一同分类整理了多个 project 下的配置,原因分析有些 project 下的数据重要程度并详细都是 很糙高,则完会 使用 not project:xxx 原本的查询搞笑的话将它们过滤掉。类式地,有些日志提供了 logstore 字段,都都完会 帮助我们都我们都 进一步地缩小关注范围。

在本文中,我们都我们都 首先按照分层的思想对 Logtail 情況进行了划分,并对各层的情況内容进行了分析和简要介绍。接着,我们都我们都 自底向上地介绍了各层带有些常用的情況监控场景,并给出了配置它们所时要的代码、查询搞笑的话以及操作的步骤,方便我们都我们都 完会 直接构建出所需的监控和告警。最后,我们都我们都 简单地说明了一下如何利用预设的仪表盘以及服务日志的有些字段来进行有些自定义的需求配置。

本文将从多个层次对 Logtail 的情況进行分析,罗列各个层次所时要的有些常用监控场景,一同,我们都我们都 将介绍如何通过服务日志、查询分析、告警、API 等日志服务的功能,来实现对什么场景的监控和告警。

内存

在开通服务日志的完后 ,会一同创建有一一还还有一个名为 Logtail分类整理统计Logtail运行监控 的仪表盘,其中带有了一系列的预设图表,我们都我们都 完会 以它们为参考(包括所使用的查询搞笑的话、图表配置等),根据自身业务时要,进行相应的修改。

Logtail 应用应用系统进程的意外崩溃重启有原因分析会引起数据丢失、数据重复(checkpoint)等难题,或者我们都我们都 也建议有条件就对此进行监控。

链路情況是保障 Logtail 正常工作的基础,一般我们都我们都 会假设在首次配置成功后就完会出现难题。但事实上,虽然 概率较低,但依旧有多种原因原因分析原因链路出现难题,比如:

logtail_profile 也是服务日志的一要素,它记录了 Logtail 的文件分类整理统计信息,每 10 分钟上报一次。基于它完会 实现有些对文件分类整理情況的细节监控,以下我们都我们都 简单地介绍有些常用场景。

在 logtail_alarm 日志中,有一一还还有一个 alarm_count 字段,它表示在时间窗口(即相邻两次上报之间)内该类型错误的数量,我们都我们都 完会 基于它进行有些监控。

数据丢失

原因分析一完后 刚现在始于虽然 谁能谁能告诉我如何设置搞笑的话,完会 先直接监控所有的错误,或者后续再根据时要进行调整(比如过滤掉有些可忽略的错误),如下:

Logtail 的情況监控会使用到日志服务的一系列功能,包括服务日志、查询分析、告警、API 等,也没哟完后 刚现在始于前,我们都我们都 先简单地概述一下什么功能的作用。

除链路情況以外,Logtail 自身情況的正常也是保证数据分类整理正确的必要条件。此处的自身情況正常是指 Logtail 持续运行,未居于任何的意外退出以及重启等情況,什么情況主要由以下几种场景引起(本节不讨论 Logtail 详细退出的情況,它属于链路情況的范畴):

在本章中,我们都我们都 将分别介绍还还有一个层次中的有些常用情況监控,并提供为它们配置监控和告警所时要的代码、查询搞笑的话、操作步骤等,你要直接根据本章的内容来进行实际的操作。

上一章所提及的资源超限一定程度上限制了 Logtail 的资源使用,或者资源超限时要持续地达到一定的时间(默认 10 分钟)才会触发重启,这期间 Logtail 会持续地占用资源(内部的资源控制无法详细保证其降低),有原因分析会影响到业务的正常运行。更糟糕的情況是在每个 10 分钟周期内,90% 的时间占用了太满资源,而 10% 的时间恢复正常,这一 情況下,Logtail 将完会超限重启,或者 90% 的时间内占用了太满资源,影响业务。

原因分析先前原因分析给出过详细操作步骤的示例,此处我们都我们都 就不再赘述,只给出用于设置报警的查询搞笑的话,如下:

监控分类整理错误的查询搞笑的话非常简单,如下:

日志服务提供大规模日志实时查询与分析能力(LogSearch/Analytics,简称查询分析),该功能提供了简单的查询语法并复合上了符合 SQL92 标准的分析语法,或者,我们都我们都 完会 像操作关系数据库那样通过 SQL 来对数据进行查询分析。

在 Logtail 正常运行期间,它的 instance_id 将保持不变,或者,所有来自同有一一还还有一个节点的日志应该具有相同的实例 ID,但原因分析居于了重启搞笑的话,一段时间内就会出现有一一还还有一个以上的实例 ID。基于此思路,我们都我们都 完会 使用 hostname+ip 来标识机器(group by),或者统计机器在一段时间内不同的实例 ID 数量。详细地操作步骤如下:

对于链路情況异常的排查,在一定程度等价于 Logtail 心跳异常的排查,完会 参考此文档进行排查。

效果如下所示:

通过上述的介绍完会 发现,通过此功能获取的日志在本质上和用户日志没办法 区别,或者,我们都我们都 完会 利用日志服务的查询分析功能从中挖掘我们都我们都 所时要的信息。

以网络协议栈来做有一一还还有一个原因分析不太恰当的比拟,完后 所属的三层就像是应用层以下,而数据分类整理情況则是应用层。在前三层情況正常的情況下,数据分类整理情況带有 Logtail 根据用户配置去执行数据分类整理、数据解析、数据发送等过程中,所产生的统计、错误等信息。

我们都我们都 完会 通过如下土措施查看有一一还还有一个图表关联的查询搞笑的话:首先将鼠标悬停到目标图表里边,或者悬停在右上角出现的省略号上,点击弹出菜单的查看分析详情即可跳转到对应的查询窗口,如下图所示。

开通时请注意所选着的存储位置(project),日志服务会将 Logtail 相关的情況信息分类分类整理到名为 internal-diagnostic_log 的 logstore(开通时自动创建),其中带有了多种类型的日志。为了处理混淆,不类式型的日志具有不同的主题(__topic__ 字段)。在本文中,我们都我们都 仅关注其中的五种 数据,它们的主题分别是 logtail_statuslogtail_profile 以及 logtail_alarm

以下我们都我们都 将分别介绍如何对各个层次的相关情況进行监控以及告警。

参考以上代码,根据时要配置合理的阈值(公有云上 Logtail 默认心跳周期为 50s 左右,可适当增大阈值至 1-3 分钟),或者定期执行即可实现对机器组情況的监控。对于定期执行的环境,完会 使用函数计算的定时触发进行构建。

作为日志服务的分类整理 agent,Logtail 目前已运行于上百万的机器,为万级别的应用提供服务,每天分类整理的数据已达到 PB 级别,什么实战的打磨使得 Logtail 在稳定性和性能上都已非常出色,在机器、网络等环境不变的情況下,配置完成后基本不再时要进行任何运维。但对于有些业务,仍旧居于着对 Logtail 进行情況监控的需求,以应对随着时间变化所带来的不选着因素。

除了检查以外,我们都我们都 还时要在发现失败机器时进行通知告警。对于这一 需求,我们都我们都 完会自行构建一套告警系统和通知渠道,可直接通过以下步骤复用日志服务的告警功能:

实现里都完会 借助机器组相关 API,基本思路如下:

以下我们都我们都 简单地介绍2个比较重要以及常用的分类整理错误(原因分析原因和处理土措施可参考文档),建议为它们均设置上相应的监控:

类式地,memory 字段表示上报此条日志时 Logtail 最近一次的内存占用情況(MB 为单位)。

日志分类整理错误类型中的大要素错误都与数据分类整理情況相关,对错误情況的及时告警和处理有有利于我们都我们都 修复日志分类整理中潜在的错误。

对于有些资源比较紧张的节点,我们都我们都 不都都完会 让 Logtail 占用太满的宿主机资源以处理影响到业务的正常运行,或者,我们都我们都 时要对什么资源情況进行监控。

以下我们都我们都 将分别介绍如何利用 logtail_status 日志来实现对 CPU、内存、网络流量进行监控。出于篇幅,我们都我们都 将直接给出查询搞笑的话,不再赘述有些的步骤。

以下将介绍如何使用服务日志中的两类主题日志进行重启情況的监控。

当控制台提供的功能无法满足需求时,我们都我们都 还完会 尝试通过自行调用 API 来实现。事实上,日志服务控制台的大要素功能也基于同一套 API 实现。

登录 Logtail 所在机器,查看 Logtail 安装目录(比如 /usr/local/ilogtail)下的 ilogtail.LOG 以及其轮转文件,以关键词 [error](大小写不敏感)进行搜索,原因分析发现重启时间点附进有如下日志即说明是资源超限引起的重启。

对于此难题,时要根据引起超限的资源类型来区分对待:

以下是基于 CLI 的 Python 实现。

当分类整理对应的文件很敏感时,我们都我们都 完会 为它建立单独监控,当发现任何的解析失败、发送失败以及过大的延迟时,进行告警。查询搞笑的话如下:

基于 detail_metric 中的 send-net-bytes-ps 实现。

常用情況监控这一 要素里,我们都我们都 给我们都我们都 介绍了各层情況中的有些常用场景,以及如何为它们编写查询搞笑的话和设置告警。一般来说,直接按照该要素进行设置就都都完会 满足大要素的监控告警场景的需求,但我们都我们都 依旧完会 通过自行编写有些特殊的查询搞笑的话来满足业务所需。比如希望有一一还还有一个大盘来对业务中使用 Logtail 进行分类整理的文件情況进行直观地展示,没办法 自定义有些查询搞笑的话、选着所需的图表来构建有一一还还有一个仪表盘更能满足所需。

文档日志分类整理错误类型记录了 Logtail 所上报的所有错误类型,其中与重启相关的错误有 LOGTAIL_CRASH_ALARM 和 LOGTAIL_CRASH_STACK_ALARM 有一一还还有一个。简单来说,或者居于了 worker 应用应用系统进程异常退出,前者就会上报,原因分析是原因分析崩溃引起的退出且生成了 coredump,后者就会被上报。

CPU

理想情況下,文件新增的数据应该在它被更新时就分类整理并发送到日志服务,但原因分析网络、CPU 资源限制等原因,原因分析会出现一定的延迟,但延迟原因分析超过一定阈值搞笑的话,则说明原因分析居于有些难题。或者,我们都我们都 时要对文件分类整理延迟进行监控。

在通过查询分析功能提取到所时要的数据后,我们都我们都 完会 对它们进行持续性地监控,当发现满足有些条件(比如超过或低于期望阈值、变化幅度过大等)时,通过短信、邮件、钉钉等渠道进行通知。

完会 看过,延迟最大的文件达到了 72M,为了进行监控,我们都我们都 完会 对如上搞笑的话进行有一一还还有一个聚合,比如说监控延迟最大的文件,当它超过 1M 时即进行告警。查询搞笑的话如下:

在默认情況下,Logtail 采用的是 daemon/worker 的双应用应用系统进程模式,daemon 应用应用系统进程逻辑简单,一般完会出现错误,也没哟 worker 应用应用系统进程挂掉完后 ,它都都完会 重新拉起新的 worker 应用应用系统进程。或者,对 Logtail 自身情況的监控也就转化为对重启情況的监控,然后再根据额外的信息来分析重启原因。

原因分析在 logtail_alarm 中发现了 LOGTAIL_CRASH_STACK_ALARM,则证明一定是代码不足原因的崩溃。原因分析都完会 LOGTAIL_CRASH_ALARM,除了则时要排查一下是算不算运维原因分析有些应用系统进程误杀。

目前引起内存超过 1G 的最常见情況是指定的目录中内容太满,原因 Logtail 轮询占用太满内存。

注意: 上述代码的前提是监控的目标为 IP 类型的机器组,对于自定义标识类型的机器组,GetMachineGroup 无法获取到 IP 列表,从而无法判断 ListMachines 返回的 IP 列表是算不算详细。不过原因分析机器的 IP 完会居于变化搞笑的话,完会 直接基于 ListMachines 返回的结果进行判断(即忽略代码中的 len(machineStatusList) != len(configMachineIPs))。

如上图所示,Logtail 情況在大体上可分为还还有一个层次,一般来说,都完会 在下层情況正常时,对上层情況的监控才会更有意义。这还还有一个层次自底向上分别为:

事实上,服务日志还提供了不少的字段,前一要素中提及的查询搞笑的话并没办法 详细的覆盖。通过阅读文档,利用什么字段,都都完会 更好地实现我们都我们都 的需求。

通过上述的有些场景完会 发现,链路情況出现难题的概率很低,或者一旦出现难题,将原因 Logtail 无法分类整理任何数据。或者,原因分析有条件搞笑的话,我们都我们都 建议我们都我们都 均对此情況进行监控。

日志服务的告警功能即可满足此需求。基于查询分析搞笑的话的结果,设置所需的告警表达式和触发间隔等参数后,即可实现对数据的持续监控,日志服务将在结果满足所设置的表达式时进行告警通知,支持短信、邮件、钉钉、WebHook 等通知土措施。

数据解蒸发掉错

前文在介绍 Logtail 情況层次时所提及的大要素情況由 Logtail 主动分类分类整理并上报(不带有用户数据),对于有些量比较大的情況,它会在发送前进行聚合。为了都都完会 获取并操作什么日志,我们都我们都 首先时要开通服务日志功能,具体的开通步骤完会 参考此文档。 在开通时,或者不勾选操作日志,则此功能详细免费。