Kibana:Alerting - 警报介绍

article/2025/10/4 16:02:22

在我之前的很多文章中,我都介绍了 Alerting。你可以在 “Elastic:菜鸟上手指南” 中的 “通知及警报” 一节找到。在今天的文章中,我将使用最新的 7.13 版本来展示如何使用规则(rules) 来检测复制条件下的 alerts。

警报(alerting)允许你定义规则以检测不同 Kibana 应用程序中的复杂条件并在满足这些条件时触发操作。 警报与可观察性、安全性、地图和机器学习集成,可以从管理 UI 集中管理,并提供一组内置连接器和规则(称为堆栈规则)供你使用。

重要提示:要确保你可以访问警报和操作,请参阅设置和先决条件部分。

概念及术语

警报的工作原理是按计划运行检查以检测规则定义的条件。 当满足某个条件时,规则会将其作为警报进行跟踪,并通过触发一个或多个操作进行响应。 操作通常涉及与 Kibana 服务或第三方集成的交互。 连接器允许操作与这些服务和集成进行对话。 本节介绍所有这些元素以及它们如何协同工作。

什么是规则? 

规则指定在 Kibana 服务器上运行以检查特定条件的后台任务。 它由三个主要部分组成:

  • 条件(conditions):需要检测什么?
  • 调度(schedule):检测检查应该何时/多久运行一次?
  • 动作(actions):检测到条件满足时需要做什么?

例如,在监控一组服务器时,规则可能会检查每台服务器上过去两分钟(条件)的平均 CPU 使用率 > 0.9,每分钟检查一次(schedule),通过 SMTP 发送警告电子邮件消息,主题为 “CPU on {{server}} is high”(action)。

以下部分更详细地描述了规则的每个部分。

条件

在幕后,Kibana 规则通过在 Kibana 服务器上运行 javascript 函数来检测条件,这使它能够灵活地支持各种条件,从简单的 Elasticsearch 查询的结果到涉及来自多个源或外部数据系统的数据进行的繁重计算。

这些条件被打包并公开为规则类型。 规则类型隐藏了条件的底层细节,并公开了一组参数来控制要检测的条件的细节。

例如,索引阈值规则类型允许你指定要查询的索引、聚合字段和时间窗口,但底层 Elasticsearch 查询的详细信息是隐藏的。

有关 Kibana 提供的规则类型及其表达条件的方式,请参阅堆栈规则类型和特定域的规则

调度

规则计划被定义为后续检查之间的间隔,范围从几秒到几个月不等。

重要:Kibana 中规则检查的间隔是近似的。 它们的执行时间受到诸如任务请求频率和系统任务负载等因素的影响。 有关详细信息,请参阅警报生产注意事项。

动作

动作是对连接器的调用,它允许与 Kibana 服务交互或与第三方系统集成。当满足规则条件时,动作在 Kibana 服务器上作为后台任务运行。

在规则中定义动作时,你指定:

  • 连接器类型:要使用的服务或集成的类型
  • 通过引用连接器获得该类型的连接
  • 规则值到为该类型操作公开的属性的映射

结果是一个模板:提供调用服务所需的所有参数,除了仅在检测到规则条件时才知道的特定值。

在服务器监控示例中,使用电子邮件连接器类型,将服务器映射到电子邮件正文,使用模板字符串 CPU on {{server}} is high

当规则检测到条件时,它会创建一个包含条件详细信息的警报,使用这些详细信息(例如服务器名称)呈现模板,并通过调用电子邮件连接器类型在 Kibana 服务器上执行操作。

有关 Kibana 提供的连接器类型的详细信息,请参阅连接器。

警报

检查条件时,规则可能会标识条件的多次出现。 Kibana 分别跟踪这些警报中的每一个,并针对每个警报采取行动。

使用服务器监控示例,每台平均 CPU > 0.9 的服务器都会作为警报进行跟踪。 这意味着会为每个超出阈值的服务器发送单独的电子邮件。

抑制重复通知

由于每个警报都会执行操作,因此规则最终可能会生成大量操作。以以下示例为例,其中规则每分钟监控三台服务器的 CPU 使用率 > 0.9:

  • 第 1 分钟:服务器 X123 > 0.9。为服务器 X123 发送一封电子邮件。
  • 第 2 分钟:X123 和 Y456 > 0.9。发送了两封电子邮件,一封用于 X123,一封用于 Y456。
  • 第 3 分钟:X123、Y456、Z789 > 0.9。发送了三封电子邮件,X123、Y456、Z789 各一封。

在上面的示例中,针对同一规则,在 3 分钟内为服务器 X123 发送了三封电子邮件。通常希望抑制频繁的重新通知。可以在警报级别应用静音(muting)和节流(throttling)等操作。如果我们将规则重新通知间隔设置为 5 分钟,我们将通过仅接收超过阈值的新服务器的电子邮件来减少噪音:

  • 第 1 分钟:服务器 X123 > 0.9。为服务器 X123 发送一封电子邮件。
  • 第 2 分钟:X123 和 Y456 > 0.9。为 Y456 发送一封电子邮件。
  • 第 3 分钟:X123、Y456、Z789 > 0.9。为 Z789 发送一封电子邮件。

连接器

操作通常涉及连接 Kibana 内部的服务或与第三方系统集成。 Kibana 没有为每个操作重复输入连接信息和凭据,而是使用连接器简化了操作设置。

连接器提供了一个中心位置来存储服务和集成的连接信息。 例如,如果四个规则通过同一个 SMTP 服务发送电子邮件通知,它们都可以引用同一个 SMTP 连接器。 当 SMTP 设置更改时,你可以在连接器中更新一次,而不必更新四个规则。

概括

规则由条件(conditions)动作(actions)调度(schedule)组成。 当条件满足时,将创建呈现动作并调用它们的警报。 为了简化操作设置和更新,操作使用连接器来集中用于连接 Kibana 服务和第三方集成的信息。 以下示例将这些概念联系在一起:

  1. 只要满足规则的条件,就会创建警报。 此示例检查平均 CPU > 0.9 的服务器。 三台服务器满足条件,因此创建了三个警报。
  2. 只要警报未被静音或限制,就会创建操作。 创建操作时,规则中设置的模板将填充实际值。 在此示例中,创建了三个操作,并且模板字符串 {{server}} 被替换为每个警报的服务器名称。
  3. Kibana 调用操作,将它们发送到第三方集成,如电子邮件服务。
  4. 如果第三方集成具有连接参数或凭据,Kibana 将从操作中引用的连接器中获取这些信息。

与 Watcher 的区别

Kibana 警报和 Elasticsearch 警报都用于检测条件并可以触发响应操作,但它们是完全独立的警报系统。

本节将阐明两个系统在功能和意图方面的一些重要差异。

在功能上,Kibana 警报的不同之处在于:

  • 计划检查在 Kibana 而不是 Elasticsearch 上运行
  • Kibana 规则通过规则类型隐藏了检测条件的细节,而 watcher 则提供对输入、条件和转换的低级控制。
  • Kibana 规则通过警报跟踪和保留每个检测到的条件的状态。这使得静音和限制单个警报成为可能,并检测状态的变化,例如分辨率。

动作与 Kibana 警报中的警报相关联。每次检测到的情况都会触发动作,而不是针对整个规则。
在更高级别上,Kibana 警报允许跨 APM、指标、安全性和正常运行时间等用例进行丰富的集成。预先打包的规则类型简化了设置并隐藏了复杂的、特定于域的检测的细节,同时在 Kibana 中提供了一致的界面。

动手实践

在上面,我们已经讲了很多了。那么我们在实践中该如何来使用 rules 呢?接下来,我们来使用一个简单的例子来进行展示。首先我们按照我之前的文章 “Security:如何安装 Elastic SIEM 和 EDR” 来安装好 Elasticsearch 及 Kibana。

我们这样的安装肯定满足在  Kibana 中对我们的要求。安装完毕后,我们可以在 https://<elasticsearch>:9200 及 https://<kibana>:5601 进行访问。这里的 <elasticsearch> 及 <kibana> 依赖于你的安装地址而改变,比如:

我们接下来,也需要安装好 Filebeat。这里就不再累述了。不过为了能够使得我们的练习能够顺利进行,我们需要针对 Filebeat 的配置文件进行修改。针对 Ubuntu 操作系统而言,我们需要修改 /etc/filebeat/filebeat.yml 文件。

root@liuxgu:/etc/filebeat# pwd
/etc/filebeat
root@liuxgu:/etc/filebeat# ls
certs  fields.yml  filebeat.reference.yml  filebeat.yml  modules.d

我们需要修改 kibana 的设置部分:

setup.kibana:# Kibana Host# Scheme and port can be left out and will be set to the default (http and 5601)# In case you specify and additional path, the scheme is required: http://localhost:5601/path# IPv6 addresses should always be defined as: https://[2001:db8::1]:5601host: "192.168.0.4:5601"protocol: "https"ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]

请注意这里的证书 ca.crt 是在我们上一步安装 Elasticsearch 时所得到的。我们需要拷贝到上面指示的位置。192.168.0.4 是我的 Kibana 的 IP 地址。你需要换成你自己的 IP 地址。

我们同时需要修改 elasticsearch 的输出部分:

output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.0.4:9200"]# Protocol - either `http` (default) or `https`.protocol: "https"# Authentication credentials - either API key or username/password.#api_key: "id:api_key"username: "elastic"password: "password"ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]

 这里的 192.168.0.4 是我的 Elasticsearch 的地址。当我们配置完毕后,我们需要重新启动 filebeat 服务:

service filebeat restart

我们可以通过使用如下的命令来检查 filebeat 服务是否运行正常:

# service filebeat status
● filebeat.service - Filebeat sends log files to Logstash or directly to Elasti>Loaded: loaded (/lib/systemd/system/filebeat.service; disabled; vendor pre>Active: active (running) since Tue 2021-07-06 13:30:26 CST; 2h 28min agoDocs: https://www.elastic.co/beats/filebeatMain PID: 29120 (filebeat)Tasks: 14 (limit: 18982)Memory: 61.4MCGroup: /system.slice/filebeat.service└─29120 /usr/share/filebeat/bin/filebeat --environment systemd -c >

如果你看到显示的是 active,则标明 Filebeat 服务运行是正常的。

我们可以使用如下的命令来测试我们的配置是否成功:

# filebeat test config
Config OK

我们可以使用如下的命令来检查 output 是否正常:

# filebeat test output
elasticsearch: https://192.168.0.4:9200...parse url... OKconnection...parse host... OKdns lookup... OKaddresses: 192.168.0.4dial up... OKTLS...security... WARN server's certificate chain verification is disabledhandshake... OKTLS version: TLSv1.3dial up... OKtalk to server... OKversion: 7.13.2

我们接下来使用如下的命令来启动 system 模块:

# filebeat modules enable system

我们使用如下的命令来进行配置:

# filebeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.Index setup finished.
Loading dashboards (Kibana must be running and reachable)
^C
root@liuxgu:/etc/filebeat# filebeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
Loaded machine learning job configurations
Loaded Ingest pipelines

上面标明我们的配置是成功的。

如果你对如何使用 Filebeat 还不是很熟的话,请参阅我之前的文章 “Beats:Beats 入门教程 (二)”。

接下来,我们在 terminal 中,我们打入如下的命令:

# logger -t liuxg this is message

上述命令将生成一个 system 日志,并且它的 process.name 是 liuxg。我们可以在 Kibana 的 Discover 中查找:

如果我们已经走到这一步,那么证明我们的配置是没有任何问题的。

创建一个规则

Kibana 警报规则可以在各种应用程序中创建,包括 APM、机器学习、指标、安全性、Uptime 和管理 UI。 虽然警报详细信息可能因应用程序而异,但它们共享一个通用接口,用于定义和配置本节更详细描述的规则。

在今天的教程中,我们将直接从 “管理 UI” 来进行配置:

在上面我们选择 Elasticsearch query 来进行查询:

我们可以点击 Test query 链接来测试我们的查询。由于上面使用了 DSL 查询,所以我们可以使用任何复制的查询。在上面,我们是来很简单的一个 DSL 查询:

{"query":{"match": {"process.name": "liuxg"}}
}

在上面,在5分钟之内,我们选择 match 的数量是超过3个就满足条件。当添加满足时,我们选择 Index 连接器:

在上面的创建过程中,我们需要创建自己的 Index 连接器,如果你之前还没有创建的话。

我们接着点击上面 Save 按钮:

这样就创建了我们的叫做 detect_liuxg 的警报:

你可以点击上面的 Edit 链接对它进行修改或者编辑。

我们接下来在 Filebeat 运行的机器的 terminal 中打入如下的命令4次:

root@liuxgu:/etc/filebeat# logger -t liuxg this is message
root@liuxgu:/etc/filebeat# logger -t liuxg this is message
root@liuxgu:/etc/filebeat# logger -t liuxg this is message
root@liuxgu:/etc/filebeat# logger -t liuxg this is message

我们等1分钟的时间来查看 Kibana 的界面:

上面显示有一个警报已经发生了。我们再回到 Dev Tools 中去查看:

我们看到已经有一个警报写入到我们定义的索引 alerts_index 中了。它说明我们的警报已经起作用了。


http://chatgpt.dhexx.cn/article/T4KjbVhm.shtml

相关文章

k8s--基础--26.7--监控告警系统--Alertmanager--发送报警到qq邮箱,钉钉

k8s–基础–26.7–监控告警系统–Alertmanager–发送报警到qq邮箱&#xff0c;钉钉 1、创建alertmanager-cm.yaml文件 在master1节点操作 1.1、脚本 vi /root/k8s/monitor/alertmanager-cm.yaml内容 kind: ConfigMap apiVersion: v1 metadata:name: alertmanagernamespace:…

lazarus Textout中文字符串乱码

https://wenda.so.com/q/1560151974218812 lazarus Textout中文字符串乱码 5取nmlgb10级分类&#xff1a;编程开发被浏览146次2019.06.10 检举 我用Textout在窗口输出 你好系统却显示其它字体&#xff0c;求懂内行的帅哥美女指教一下&#xff0c;这是我的代码 TextOutA(hdcb,10…

VS2010 MFC TextOut垂直显示内容的显示、清除和修改

学习MFC&#xff0c;用到垂直显示内容&#xff0c;在网上查找了一些方法&#xff0c;做一下总结。 在View类的头文件中增加CString m_strLeft&#xff1b; 在View类中增加WM_PAINT消息的函数OnPaint&#xff08;&#xff09;&#xff0c;设置输出字体&#xff0c;设置颜色 CPai…

CDC在OnPaint函数中采用TextOut函数初始化静态文本框

创建静态文本框之后如果想要在程序段中初始话文本框中的内容可以采用CDC类中的TextOut()函数&#xff0c;但是如果在OnPaint&#xff08;&#xff09;中直接书写代码会导致待输出字符被静态文本框覆盖这是因为对话框上的文本控件是在对话框显示后才画上去的&#xff0c;所以用t…

8.向窗口输出文字 : TextOut 和 DrawText 函数

使用 DrawText() 向客户区的中间位置输出了一段文本&#xff0c;说一下文字的输出。 设备环境&#xff08;DC&#xff09; 在Windows中&#xff0c;一切能在显示器上看到的都是图形&#xff0c;不但包括点、线、矩形、圆等&#xff0c;也包括文字、字体。对用户来说文字和图片…

pdc-textout(_PDC-结论

pdc->textout( Oh, yes, PDC was the shiznit. We learned about the Pillars of Longhorn: 哦&#xff0c;是的&#xff0c;PDC真是愚蠢。 我们了解了Longhorn的Struts&#xff1a; Lornhorn - Its ALPHA, but its real. Feel free to peruse the SDK. Theres 3 years of…

封印(TextOut函数实际应用)

C中有一个函数&#xff1a;TextOut&#xff0c;这个函数有很多分枝&#xff0c;TextOutA&#xff0c;TextOutW。。。。都在windows.h头文件里面 这个函数干嘛用呢&#xff1f;就是在给定的HDC中显示文字。。 结果被我们坑人党知道了 嘿嘿嘿&#xff0c;于是我们写了个东西&am…

windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode

文本绘制 TextOut-将文字绘制在指定坐标位置 DrawText-在矩形区域绘制字符串 int DrawText(HDC hdc, //DC句柄LPCSTR lpString, //字符串int nCount, //字符串长度LPRECT lpRect, //绘制文字的矩形框UINT uFormat //绘制的方式,重点&#xff0c;花样繁多的关键点 );绘制文字样…

MFC textout()输出字体设置

//设置字体 CFont font; font.CreateFont(33, // 字体的高度 0, // 字体的宽度 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight 字体的粗细FALSE, // bItalic 字体是否斜体 FALSE, …

gdi 编程c语言pdf,二、Windows编程GDI—TextOut细节

TextOut是用于显示文字的最常用的GDI函数。语法是&#xff1a; TextOut (hdc, x, y, psText, iLength) ; 以下将详细地讨论这个函数。 第一个参数是设备内容句柄&#xff0c;它既可以是GetDC的传回值&#xff0c;也可以是在处理WM_PAINT消息时BeginPaint的传回值。 设备内容的属…

中年人学C语言Windows程序设计,3 窗口中文本的输出TextOut

中年人学C语言Windows程序设计&#xff0c;3 文本的输出TextOut 函数功能 TextOut 函数使用当前选择的字体、背景颜色和文本颜色&#xff0c;将一个字符串绘制于窗口的指定位置。 API 函数原型&#xff1a; 注释&#xff1a;In 说明该参数是输入的&#xff0c;opt 说明该参…

c语言textout字体大小,《WINDOWS程序设计》第四章关于TEXTOUT的小问题

《WINDOWS程序设计》第四章关于TEXTOUT的小问题 文章原文是这样说的&#xff1a; 您会发现常常需要显示格式化的数字跟简单的字符串。我在第二章讲到过&#xff0c;您不能使惯用的工具(可 爱的printf 函数)来完成这项工作&#xff0c;但是可以使用sprintf 和Windows 版的sprint…

c语言textout字体大小,textout函数怎么用

MFC里 用pDC->TextOut 这个函数怎么实现未知数据输我最近刚开始学计算机图形学还是个纯小白…… 不大懂 想问各路大神。比如欢迎来到CSS布局HTML,TextOut 是用来输出文本的;你说的问题,我看了半天没看懂,你可以是想先格式化字符串再输出是吧,可以如下: 用CString格式化…

Windows API——TextOut()函数学习

1.函数功能 The TextOut function writes a character string at the specified location, using the currently selected font, background color, and text color. TextOut函数使用当前选定的字体、背景颜色和文本颜色在指定位置写入字符串。 2.函数原型 BOOL TextOutA( …

35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor

TextOut和TabbedTextOut、ExtTextOut的区别 TextOut是简单文本输出&#xff0c;不带格式的&#xff0c;可以控制文本的对齐方式 TabbedTextOut是可以控制带\t&#xff08;制表符号&#xff09;的文本 ExtTextOut是在TextOut的基础上&#xff0c;增加字符间距、背景颜色和剪裁框…

windows编程之TextOut与DrawText -- 文本输出实验

文章目录 windows编程之TextOut与DrawText -- 文本输出实验实验名称实验目的实验要求实验源码思考题 windows编程之TextOut与DrawText – 文本输出实验 实验名称 实验3-2-文本输出实验 实验目的 1&#xff0e;掌握常用的文本输出函数TextOut、DrawText的使用&#xff0c;熟悉其…

Monkey的测试

1.Monkey介绍 顾名思义&#xff0c;Monkey就是猴子&#xff0c; Monkey测试&#xff0c;就像一只猴子&#xff0c; 在电脑面前&#xff0c;乱敲键盘在测试。 猴子什么都不懂&#xff0c; 只知道乱敲 通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的…

MonkeyTest——简单无脑的移动端自动化测试(初级篇)

MonkeyTest-操作步骤&#xff1a; 1.下载Android sdk X64位&#xff0c;必须和你的电脑操作系统一致。 2.安装完成后&#xff0c;增加adb的系统环境。 A.找到sdk路径。 默认路径&#xff1a;C:\Users\ZSD\AppData\Local\Android\android-sdk\platform-tools B.打开系统环境设置…

【转】指定页面进行Monkey测试

偶然在网上查看到这个技术&#xff0c;感兴趣&#xff0c;就记录下【感谢博主分享】 1.原文再此&#xff1a;https://blog.csdn.net/liyu520131414/article/details/69357777?utm_sourceblogxgwz3 原理原文博主已经讲清楚了&#xff0c;就不粘贴了&#xff0c;下面&#xff…

Android测试-Monkey Test

APP开发过程中&#xff0c;开人员往往自己做一些功能测试和稳定性测试&#xff0c;使用MonkeyTest做压力测试是常用方法&#xff0c;及时修复ANR、CRASH提高项目组整体的开发效率。 一、Monkey简介 Monkey是一种命令行工具&#xff0c;这个工具存在于Android系统/system/frame…