Kapacitor概述
Kapacitor是TIGK技术栈的告警服务,用户通过tickScript脚本来对时序数据库当中的数据进行过滤,筛选,批处理等进行告警,告警信息可以通过日志保存在本地,或回插到influxdb,还可以直接在告警产生后发起http请求到指定地址,kapacitor支持数据流(stream)和批处理(batch)数据。以下是从官方文档中翻译过来的,当一回翻译官吧,哈哈。
Kapacitor有两种不同的方式处理警报消息:
可以将消息直接推送到通过警报节点公开的事件处理程序
消息可以发布到一个主题名称空间,一个或多个警报处理程序可以订阅该名称空间。
无论使用哪种方法,都需要在配置文件中启用和配置处理程序。如果处理程序需要令牌和密码等敏感信息,也可以使用Kapacitor HTTP API对其进行配置
推送消息
将消息推送到处理程序是《Kapacitor入门》 指南中介绍的基本方法 。这涉及简单地调用通过alert节点可用的相关链接方法。可以将消息推送到log()文件,email() 服务,httpOut()缓存和许多第三方服务。
发布和订阅
警报主题只是将警报分组的名称空间。警报事件触发时,可以将其发布到主题。多个处理程序可以订阅(可以绑定)该主题,并且所有处理程序都处理该主题的每个警报事件。处理程序通过kapacitor命令行客户端和处理程序绑定文件绑定到主题。处理程序绑定文件可以用yaml或编写json。它们包含四个关键字段和一个可选字段。
topic:声明处理程序将订阅的主题。
id:声明绑定的身份。
kind:声明要使用的事件处理程序的类型。请注意,这需要在kapacitord配置中启用。
match:(可选)声明一个match表达式,该表达式用于过滤将要处理的警报事件。请参阅 下面的“ 匹配表达式”部分。
options:特定于相关处理程序的选项。这些在下面的处理程序列表部分中列出
示例1:用于松弛处理程序和cpu主题的处理程序绑定文件
topic: cpu
id: slack
kind: slack
options:
channel: '#kapacitor'
处理程序列表
以下是可用警报事件处理程序的列表:
Handler | Description |
---|---|
Handler | Description |
Alerta | Post alert message to Alerta. |
Send and email with alert data. | |
exec | Execute a command passing alert data over STDIN. |
HipChat | Post alert message to HipChat room. |
Kafka | Send alert to a Apache Kafka cluster. |
log | Log alert data to file. |
MQTT | Post alert message to MQTT. |
OpsGenie v1 | Send alert to OpsGenie using their v1 API. (Deprecated) |
OpsGenie v2 | Send alert to OpsGenie using their v2 API. |
PagerDuty v1 | Send alert to PagerDuty using their v1 API. (Deprecated) |
PagerDuty v2 | Send alert to PagerDuty using their v2 API. |
post | HTTP POST data to a specified URL. |
Pushover | Send alert to Pushover. |
Sensu | Post alert message to Sensu client. |
Slack | Post alert message to Slack channel. |
SNMPTrap | Trigger SNMP traps. |
Talk | Post alert message to Talk client. |
tcp | Send data to a specified address via raw TCP. |
Telegram | Post alert message to Telegram client. |
VictorOps | Send alert to VictorOps. |
具体的还可以参考官方文档[https://docs.influxdata.com/kapacitor/v1.5/working/alerts/],这里就不翻译了。
Kapacitor安装
官方称在windows下使用是实验性的,言外之意可能会出现问题,那么我们这里先不管了,重新搭建环境也麻烦,所以还是继续在windows下吧。下载之后解压缩,这里就不再赘述了。
如何运行呢?
默认的配置文件在windows下不行,根本运行不起来,如下所示:
PS C:\influxdb\kapacitor-1.5.5-1> .\kapacitord.exe -config .\kapacitor.conf
'##:::'##::::'###::::'########:::::'###:::::'######::'####:'########::'#######::'########::
##::'##::::'## ##::: ##.... ##:::'## ##:::'##... ##:. ##::... ##..::'##.... ##: ##.... ##:
##:'##::::'##:. ##:: ##:::: ##::'##:. ##:: ##:::..::: ##::::: ##:::: ##:::: ##: ##:::: ##:
#####::::'##:::. ##: ########::'##:::. ##: ##:::::::: ##::::: ##:::: ##:::: ##: ########::
##. ##::: #########: ##.....::: #########: ##:::::::: ##::::: ##:::: ##:::: ##: ##.. ##:::
##:. ##:: ##.... ##: ##:::::::: ##.... ##: ##::: ##:: ##::::: ##:::: ##:::: ##: ##::. ##::
##::. ##: ##:::: ##: ##:::::::: ##:::: ##:. ######::'####:::: ##::::. #######:: ##:::. ##:
..::::..::..:::::..::..:::::::::..:::::..:::......:::....:::::..::::::.......:::..:::::..::
2020/05/14 15:49:32 Using configuration at: .\kapacitor.conf
run: create server: invalid configuration: dir must be an absolute path. To generate a valid configuration file run `kapacitord config > kapacitor.generated.conf`.
PS C:\influxdb\kapacitor-1.5.5-1>.\kapacitord.exe config > kapacitor.generated.conf
修改数据路径以及其他的一些路径
hostname = "localhost"
data_dir = "C:\\influxdb\\kapacitor-1.5.5-1\\.kapacitor"
skip-config-overrides = false
default-retention-policy = ""
[alert]
persist-topics = true
[http]
bind-address = ":9092"
auth-enabled = false
log-enabled = true
write-tracing = false
pprof-enabled = false
https-enabled = false
https-certificate = "/etc/ssl/kapacitor.pem"
https-private-key = ""
shutdown-timeout = "10s"
shared-secret = ""
[replay]
dir = "C:\\TIGK\\kapacitor-1.5.5-1\\.kapacitor\\replay"
[storage]
boltdb = "C:\\TIGK\\kapacitor-1.5.5-1\\.kapacitor\\kapacitor.db"
[task]
dir = "C:\\TIGK\\kapacitor-1.5.5-1\\.kapacitor\\tasks"
snapshot-interval = "1m0s"
[load]
enabled = false
dir = "C:\\TIGK\\kapacitor-1.5.5-1\\.kapacitor\\load"
启动kapacitor
PS C:\influxdb\kapacitor-1.5.5-1> .\kapacitord.exe -config .\kapacitor.generated.conf
这样应该可以成功启动了,如果有报错可能还是配置文件有问题。需要注意的是配置文件必须转换成utf-8编码格式,否则可能会出现乱码哦。
Chronograf中使用Kapacitor
作为TICK堆栈的一部分,Chronograf是一个图形用户界面,旨在简化监视基础结构,可视化数据,管理数据库和管理警报。通过警报管理,Chronograf与Kapacitor集成在一起。
在Chronograf文档中,将Chronograf连接到Kapacitor, 创建Kapacitor警报, 配置Kapacitor事件处理程序和高级Kapacitor使用率部分中介绍了与Kapacitor一起使用。
添加一个Kapacitor实例
在左侧导航栏中,单击配置齿轮图标。已加载InfluxDB源列表。
在列表中的“ Acitve Kapacitor”标题下的最右列中,找到InfluxDB源,单击“ 添加配置”。“配置Kapacitor”页面将使用默认设置加载。
在“连接详细信息”分组中,设置Kapacitor URL的值和该Kapacitor的名称,并在必要时添加用户名和密码凭据。
单击连接按钮。如果“连接详细信息”正确,则会显示一条成功消息,并且新部分将显示“配置警报端点”。
如果使用了第三方警报服务或SMTP,请更新“配置警报端点”部分中的第三方设置。
点击Send TestAlert按钮,会发送一条测试邮件到邮箱
从Chronograf管理Kapacitor
在“配置”表中,找到Influxdata实例及其关联的Kapacitor实例,单击Kapacitor下拉菜单,然后单击“ 编辑”图标。
单击需要更改的处理程序。其选项卡将变为活动状态。
编辑相关字段,然后单击“ 更新配置”按钮。
如果配置属性有效,将显示一条成功消息。
在Chronograf中创建警报
通过单击左侧导航栏中的“ 警报”图标,然后选择"Manage Task",打开“警报规则”选项卡。将加载警报规则表(Kapacitor任务)。
单击创建规则按钮。将加载“创建/编辑规则”页面。
请注意,左上角的规则名称编辑框带有字符串Untitled Rule。将此名称更改为易于创建警报的名称。
在“ 选择时间序列 ”部分中,选择一个数据库,一个度量和一个要监视的字段。注意在测量中可以选择一个或多个标签。但是,不需要选择特定标签。还要注意,在每个标签旁边可以为group by子句选择标签。
在“ 规则条件 ”部分中,对于本示例,请保持标记阈值处于 选中状态。在is子句的下拉列表框中,选择 小于。并且,在数量的编辑框中输入值80,对于该字段,该值表示百分比。
在“ 警报消息 ”部分,保留选项卡smtp。请注意,这要求正确配置SMTP处理程序。更新收件人和邮件正文的值。还要注意,底部或模板 文本区域接受其下方建议的模板字段。单击模板字段以将其添加到模板。
正确配置三个关键部分后,单击“ 保存规则” 按钮。规则列表将再次加载。
过了一段时间之后,可以看到AlertHistory,触发了很多次报警,然后看了下邮箱,确实收到了很多邮件。
Kapacitor还有很多其他的方式进行告警的处理,有兴趣可以去研究下。