全方位 Logtail 状态监控

  • 时间:
  • 浏览:1

监控派发错误的查询励志的话 非常简单,如下:

实现上都我过多 借助机器组相关 API,基本思路如下:

可能性一刚开始人太好问你怎样才能设置励志的话 ,都我过多 先直接监控所有的错误,而且后续再根据需用进行调整(比如过滤掉其他可忽略的错误),如下:

相似地,memory 字段表示上报此条日志时 Logtail 最近一次的内存占用状态(MB 为单位)。

在 Logtail 正常运行期间,它的 instance_id 将保持不变,而且,所有来自同另有一个节点的日志应该具有相同的实例 ID,但可能性趋于稳定了重启励志的话 ,一段时间内就会出现另有一个以上的实例 ID。基于此思路,亲戚朋友都我过多 使用 hostname+ip 来标识机器(group by),而且统计机器在一段时间内不同的实例 ID 数量。完正地操作步骤如下:

在本文中,亲戚朋友首先按照分层的思想对 Logtail 状态进行了划分,并对各层的状态内容进行了分析和简要介绍。接着,亲戚朋友自底向上地介绍了各层中其他常用的状态监控场景,并给出了配置它们所需用的代码、查询励志的话 以及操作的步骤,方便亲戚朋友都我过多 直接构建出所需的监控和告警。最后,亲戚朋友简单地说明了一下怎样才能利用预设的仪表盘以及服务日志的其他字段来进行其他自定义的需求配置。

亲戚朋友都我过多 通过如下最好的措施查看另有一个图表关联的查询励志的话 :首先将鼠标悬停到目标图表上方,而且悬停在右上角出现的省略号上,点击弹出菜单的查看分析详情即可跳转到对应的查询窗口,如下图所示。

作为日志服务的派发 agent,Logtail 目前已运行于上百万的机器,为万级别的应用提供服务,每天派发的数据已达到 PB 级别,哪此实战的打磨使得 Logtail 在稳定性和性能上都已非常出色,在机器、网络等环境不变的状态下,配置完成后基本不再需用进行任何运维。但对于其他业务,仍旧趋于稳定着对 Logtail 进行状态监控的需求,以应对随着时间变化所带来的不取舍因素。

链路状态是保障 Logtail 正常工作的基础,一般亲戚朋友会假设在首次配置成功后就我过多 出现间题报告 。但事实上,人太好概率较低,但依旧有多种导致 可能性导致 链路出现间题报告 ,比如:

可能性先前可能性给出过完正操作步骤的示例,此处亲戚朋友就不再赘述,只给出用于设置报警的查询励志的话 ,如下:

在 logtail_alarm 日志中,有另有一个 alarm_count 字段,它表示在时间窗口(即相邻两次上报之间)内该类型错误的数量,亲戚朋友都我过多 基于它进行其他监控。

可能性在 logtail_alarm 中发现了 LOGTAIL_CRASH_STACK_ALARM,则证明一定是代码不足导致 的崩溃。可能性必须 LOGTAIL_CRASH_ALARM,除了则需用排查一下与非 运维可能性其他守护多多线程 误杀。

常用状态监控你这人 偏离 里,亲戚朋友给亲戚朋友介绍了各层状态中的其他常用场景,以及怎样才能为它们编写查询励志的话 和设置告警。一般来说,直接按照该偏离 进行设置就我过多 满足大偏离 的监控告警场景的需求,但亲戚朋友依旧都我过多 通过自行编写其他特殊的查询励志的话 来满足业务所需。比如希望有另有一个大盘来对业务中使用 Logtail 进行派发的文件状态进行直观地展示,这么 自定义其他查询励志的话 、取舍所需的图表来构建另有一个仪表盘更能满足所需。

开通时请注意所取舍的存储位置(project),日志服务会将 Logtail 相关的状态信息派发到名为 internal-diagnostic_log 的 logstore(开通时自动创建),其中中有 了多种类型的日志。为了外理混淆,不相似型的日志具有不同的主题(__topic__ 字段)。在本文中,亲戚朋友仅关注其中的一种生活数据,它们的主题分别是 logtail_statuslogtail_profile 以及 logtail_alarm

以网络协议栈来做另有一个可能性不太恰当的借喻,很久所属的三层就像是应用层以下,而数据派发状态则是应用层。在前三层状态正常的状态下,数据派发状态中有 Logtail 根据用户配置去执行数据派发、数据解析、数据发送等过程中,所产生的统计、错误等信息。

至此,亲戚朋友完成了另有一个通过 CLI 访问日志服务 API 来实现对链路状态监控的示例,通过简单地修改,即可实现监控特定机器以及多个机器组等需求。

对于其他资源比较紧张的节点,亲戚朋友必须够让 Logtail 占用过多的宿主机资源以外理影响到业务的正常运行,而且,亲戚朋友需用对哪此资源状态进行监控。

前文在介绍 Logtail 状态层次时所提及的大偏离 状态由 Logtail 主动派发并上报(不中有 用户数据),对于其他量比较大的状态,它会在发送前进行聚合。为了我过多 获取并操作哪此日志,亲戚朋友首先需用开通服务日志功能,具体的开通步骤都我过多 参考此文档。 在开通时,假若不勾选操作日志,则此功能完正免费。

上一章所提及的资源超限一定程度上限制了 Logtail 的资源使用,而且资源超限需用持续地达到一定的时间(默认 10 分钟)才会触发重启,这期间 Logtail 会持续地占用资源(内部内部结构的资源控制无法完正保证其降低),有可能性会影响到业务的正常运行。更糟糕的状态是在每个 10 分钟周期内,90% 的时间占用了过多资源,而 10% 的时间恢复正常,你这人 状态下,Logtail 将我过多 超限重启,而且 90% 的时间内占用了过多资源,影响业务。

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

效果如下所示:

logtail_profile 也是服务日志的一偏离 ,它记录了 Logtail 的文件派发统计信息,每 10 分钟上报一次。基于它都我过多 实现其他对文件派发状态的细节监控,以下亲戚朋友简单地介绍其他常用场景。

都我过多 看一遍,延迟最大的文件达到了 72M,为了进行监控,亲戚朋友都我过多 对如上励志的话 进行另有一个聚合,比如说监控延迟最大的文件,当它超过 1M 时即进行告警。查询励志的话 如下:

以下亲戚朋友简单地介绍几块比较重要以及常用的派发错误(可能性导致 和外理最好的措施可参考文档),建议为它们均设置上相应的监控:

显然,此状态异常的状态下,Logtail 无法正常工作甚至无法访问日志服务,而且,通过服务日志必须实现对此状态的监控。对此,目前比较好的最好的措施是基于 Logtail 心跳实现,当心跳正常时,则链路状态一定正常。

数据延迟

除了 logtail_status 以外,亲戚朋友还都我过多 通过 logtail_alarm 来偏离 实现你这人 需求(可能性资源超限场景我过多 产生 alarm)。logtail_alarm 也是服务日志的一偏离 ,它记录了 Logtail 上报的错误日志,每 500 秒记录并上报一次,500 秒内重复出现的错误类型只记录错误总和,错误消息则随机取舍二根。

Logtail 的状态监控会使用到日志服务的一系列功能,包括服务日志、查询分析、告警、API 等,什么都有有在刚开始前,亲戚朋友先简单地概述一下哪此功能的作用。

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

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

参考以上代码,根据需用配置合理的阈值(公有云上 Logtail 默认心跳周期为 500s 左右,可适当增大阈值至 1-3 分钟),而且定期执行即可实现对机器组状态的监控。对于定期执行的环境,都我过多 使用函数计算的定时触发进行构建。

Logtail 守护多多线程 的意外崩溃重启有可能性会引起数据丢失、数据重复(checkpoint)等间题报告 ,而且亲戚朋友也建议有条件就对此进行监控。

数据解融化错

日志派发错误类型中的大偏离 错误都与数据派发状态相关,对错误状态的及时告警和外理能够亲戚朋友修复日志派发中潜在的错误。

当控制台提供的功能无法满足需求时,亲戚朋友还都我过多 尝试通过自行调用 API 来实现。事实上,日志服务控制台的大偏离 功能也基于同一套 API 实现。

通过上述的其他场景都我过多 发现,链路状态出现间题报告 的概率很低,而且一旦出现间题报告 ,将导致 Logtail 无法派发任何数据。而且,可能性有条件励志的话 ,亲戚朋友建议亲戚朋友均对此状态进行监控。

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

目前引起内存超过 1G 的最常见状态是指定的目录中内容过多,导致 Logtail 轮询占用过多内存。

内存

可能性取舍资源超限不须异常引起可能性已无更好的优化最好的措施,则需用上调 Logtail 所使用的资源限制,都我过多 参考此文档。

在本章中,亲戚朋友将分别介绍十个 层次中的其他常用状态监控,并提供为它们配置监控和告警所需用的代码、查询励志的话 、操作步骤等,你都我过多 直接根据本章的内容来进行实际的操作。

在 logtail_profile 中,有另有一个 read_avg_delay,它会在 Logtail 每次读取文件时被更新,记录下当前已读取 offset 和文件大小之间的差距,即当前未读内容的大小,以此来表示 delay。而且,亲戚朋友都我过多 使用如下的查询励志的话 来获取最近时间内各个文件的派发延迟:

事实上,服务日志还提供了不少的字段,前一偏离 中提及的查询励志的话 并这么 完正的覆盖。通过阅读文档,利用哪此字段,我过多 更好地实现亲戚朋友的需求。

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

以 SEND_QUOTA_EXCEED_ALARM 为例,它表示当前日志写入流量超出限制。对于正常业务来说,偶尔的流量突增可能性会带来一定量的此错误,而且都我过多 忽略,而且一旦短时间内此错误数量(alarm_count)超过了一定阈值,则说明当前可能性趋于稳定其他的间题报告 ,比如:

很久提及的三类日志都拥有另有一个 project 字段,亲戚朋友都我过多 利用它来筛选出所关注的 project,比如说另有一个 Logtail 节点一起去派发了多个 project 下的配置,可能性其他 project 下的数据重要程度并都不 很重高,则都我过多 使用 not project:xxx 原来的查询励志的话 将它们过滤掉。相似地,其他日志提供了 logstore 字段,我过多 帮助亲戚朋友进一步地缩小关注范围。

CPU

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

对于此间题报告 ,需用根据引起超限的资源类型来区分对待:

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

数据丢失

以下是基于 CLI 的 Python 实现。

在默认状态下,Logtail 采用的是 daemon/worker 的双守护多多线程 模式,daemon 守护多多线程 逻辑简单,一般我过多 出现错误,什么都有有在 worker 守护多多线程 挂掉很久,它我过多 重新拉起新的 worker 守护多多线程 。而且,对 Logtail 自身状态的监控也就转化为对重启状态的监控,很久 再根据额外的信息来分析重启导致 。

以下亲戚朋友将分别介绍怎样才能利用 logtail_status 日志来实现对 CPU、内存、网络流量进行监控。出于篇幅,亲戚朋友将直接给出查询励志的话 ,不再赘述其他的步骤。

以下亲戚朋友将分别介绍怎样才能对各个层次的相关状态进行监控以及告警。

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

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

理想状态下,文件新增的数据应该在它被更新时就派发并发送到日志服务,但可能性网络、CPU 资源限制等导致 ,可能性会出现一定的延迟,但延迟可能性超过一定阈值励志的话 ,则说明可能性趋于稳定其他间题报告 。而且,亲戚朋友需用对文件派发延迟进行监控。

为了监控重启,亲戚朋友需用使用该日志提供的以下字段进行分析:

logtail_status 是服务日志的一偏离 ,它记录了 Logtail 的基本状态,每分钟会记录并上报一次。

在开通服务日志的很久,会一起去创建另有一个名为 Logtail派发统计Logtail运行监控 的仪表盘,其中中有 了一系列的预设图表,亲戚朋友都我过多 以它们为参考(包括所使用的查询励志的话 、图表配置等),根据自身业务需用,进行相应的修改。

对于链路状态异常的排查,在一定程度等价于 Logtail 心跳异常的排查,都我过多 参考此文档进行排查。

文档日志派发错误类型记录了 Logtail 所上报的所有错误类型,其中与重启相关的错误有 LOGTAIL_CRASH_ALARM 和 LOGTAIL_CRASH_STACK_ALARM 另有一个。简单来说,假若趋于稳定了 worker 守护多多线程 异常退出,前者就会上报,可能性是可能性崩溃引起的退出且生成了 coredump,后者就会被上报。

注意: 上述代码的前提是监控的目标为 IP 类型的机器组,对于自定义标识类型的机器组,GetMachineGroup 无法获取到 IP 列表,从而无法判断 ListMachines 返回的 IP 列表与非 完正。不过可能性机器的 IP 我过多 趋于稳定变化励志的话 ,都我过多 直接基于 ListMachines 返回的结果进行判断(即忽略代码中的 len(machineStatusList) != len(configMachineIPs))。

以下将介绍怎样才能使用服务日志中的两类主题日志进行重启状态的监控。

CPU 的监控需用使用到 cpu 字段,它表示上报此条日志时 Logtail 最近一次的 CPU 占用状态(目前仅支持 Linux)。基于它亲戚朋友都我过多 实现如下的一系列监控需求:

以下亲戚朋友简单地举其他使用哪此日志字段的例子。

本文将从多个层次对 Logtail 的状态进行分析,罗列各个层次所需用的其他常用监控场景,一起去,亲戚朋友将介绍怎样才能通过服务日志、查询分析、告警、API 等日志服务的功能,来实现对哪此场景的监控和告警。

通过上述的介绍都我过多 发现,通过此功能获取的日志在本质上和用户日志这么 区别,而且,亲戚朋友都我过多 利用日志服务的查询分析功能从中挖掘亲戚朋友所需用的信息。

除链路状态以外,Logtail 自身状态的正常也是保证数据派发正确的必要条件。此处的自身状态正常是指 Logtail 持续运行,未趋于稳定任何的意外退出以及重启等状态,哪此状态主要由以下几种场景引起(本节不讨论 Logtail 完正退出的状态,它属于链路状态的范畴):

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

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

当派发对应的文件很敏感时,亲戚朋友都我过多 为它建立单独监控,当发现任何的解析失败、发送失败以及过大的延迟时,进行告警。查询励志的话 如下: