现代企业越来越使用微信来接收通知。一方面比较方便,另外一方面越来越多的企业也开始使用企业微信来接收通知。在今天的教程中,我们来详述如何使用企业微信来接收从 Kibana 中发出的通知。
安装
Elasticsearch 及 Kibana
如果你还没有安装好自己的 Elasticsearch 及 Kibana,那么请参考一下的文章来进行安装:
在安装的时候,请选择 Elastic Stack 8.x/9.x 进行安装。在安装的时候,我们可以看到如下的安装信息:
为了能够使得 Kibana 获得通知的能力,我们需要依据 CLI tool 来创建一些 keys。在 Kibana 的根目录下,打入如下的命令:
bash
`./bin/kibana-encryption-keys generate`AI写代码
我们可以看到如下的输出:
我们把上面的 keys 拷贝到 config/kibana.yml 文件的末尾,然后保存,并重新启动 Kibana。这样我们的配置就完成了。更多有关 Alerts 的安装及配置,请参考文章 "Kibana:创建一个 webhook alert - Elastic Stack 8.2"。
启动白金试用
在默认的 basic 版权情况下,Elastic 只支持 index 及 server log:
在我们的企业微信通知中,我们需要使用到 Webhook。我们必须启动白金试用才可以进行测试:
这样我们的白金试用功能就启动了。
创建企业微信
之前我一直也没有用到企业微信。为了这个测试,我在苹果商店(针对苹果电脑)下载并安装了企业微信。
大家可以根据自己的平台或者电脑来分别进行安装。这里就不一一赘述了。具体步骤可以参考文章。我们可以在手机端中创建一个企业。比如,我创建了一个叫做 "刘氏集团" 的企业微信。然后,我们创建一个群聊:
.
我们点击上面的 "添加" 来创建一个 Webhook 的消息推送:
我们拷贝在上面图中显示的 Webhook 地址。在接下来的配置中,我们将对它进行使用。
配置 Webhook connector
接下来,我们来配置 Webhook 连接器。我们按照如下的步骤来进行:





我们把所需要的信息填入进去。记得上面的 URL 就是之前我们创建的 URL。我们选择 Save & test 来进行测试:

我们在 Body 里填入如下的信息:
bash
`
1. {
2. "msgtype": "text",
3. "text": {
4. "content": "大家好,这是一条来自机器人的测试消息!"
5. },
6. "mentioned_list": [
7. "张三",
8. "李四"
9. ],
10. "mentioned_mobile_list": [
11. "13800000000",
12. "@all"
13. ]
14. }
`AI写代码
请注意:
-
msgtype
: 固定为 "text"。 -
content
: 消息的文本内容。 -
mentioned_list
: 需要@
的成员UserID列表,@all
可以用来@
所有人。 -
mentioned_mobile_list
: 需要@
的成员手机号列表,@all
也可以用来@
所有人。
点击上面的 Run,上面显示我们的消息已经成功地发出去了。我们检查手机端的企业微信,我们可以看到一条如下的消息:

很显然,我们收到了我们想要的信息。
如何使用我们的 WeCom 连接器呢?
我们来参考之前的文章 "Kibana:创建一个 webhook alert - Elastic Stack 8.2"。我们首先创建一个索引:
markdown
`
1. PUT webhook
2. {
3. "mappings": {
4. "properties": {
5. "@timestamp": {
6. "type": "date"
7. },
8. "hits": {
9. "type": "long"
10. }
11. }
12. }
13. }
`AI写代码
为了方便插入时间戳,我们也创建如下的一个 ingest pipeline:
bash
`
1. PUT _ingest/pipeline/add-timestamp
2. {
3. "processors": [
4. {
5. "set": {
6. "field": "@timestamp",
7. "value": "{{_ingest.timestamp}}"
8. }
9. }
10. ]
11. }
`AI写代码
我们可以通过如下的方式来写入一个文档:
sql
`
1. PUT webhook/_doc/1?pipeline=add-timestamp
2. {
3. "hits": 500
4. }
`AI写代码
我们可以通过如下的方式来检查我们些人的文档:
ini
`GET webhook/_search?filter_path=**.hits`AI写代码
bash
`
1. {
2. "hits": {
3. "hits": [
4. {
5. "_index": "webhook",
6. "_id": "1",
7. "_score": 1,
8. "_source": {
9. "hits": 500,
10. "@timestamp": "2025-08-12T01:25:21.628454Z"
11. }
12. }
13. ]
14. }
15. }
`AI写代码
我们可以看到有一个时间戳和 hits 字段。
我们来到创建 rule 的界面:




上面表面,当 hits 的值在 5 分钟内,它的总和超过5000,就要发警报。


我们选择之前创建的 WeCom 连接器:


点击 Create rule 来创建这个规则:

从上面显示中,我们可以看到已经创建了一个叫做 Index threshold rule 的规则。
接下来,我们在 Dev Tools 里运行如下的命令:
sql
`
1. PUT webhook/_doc/1?pipeline=add-timestamp
2. {
3. "hits": 2000
4. }
`AI写代码
当我们运行一次的时候,是没有任何反应的,因为 hits 的值只有 2000。我们接下来连续运行这个命令
sql
`
1. PUT webhook/_doc/1?pipeline=add-timestamp
2. {
3. "hits": 20000
4. }
`AI写代码
这样我们的 hits 总和已经超过 5000 了。我们希望能看到一条告警的信息。


我们检查企业微信,可以查看到如下的信息:

一旦是 Active 状态,它不会再发同样的通知,直到状态恢复到 Recovered:


等待状态变为 Recovered,我们再次运行如下的一天指令:
sql
`
1. PUT webhook/_doc/1?pipeline=add-timestamp
2. {
3. "hits": 20000
4. }
`AI写代码

至此,我们已经展示了如何在 Kibana 中把通知发送到企业微信中。祝大家学习愉快!