现代企业越来越使用微信来接收通知。一方面比较方便,另外一方面越来越多的企业也开始使用企业微信来接收通知。在今天的教程中,我们来详述如何使用企业微信来接收从 Kibana 中发出的通知。

更多阅读: Kibana:如何使用阿里钉钉来接收通知

安装

Elasticsearch 及 Kibana

 如果你还没有安装好自己的 Elasticsearch 及 Kibana,那么请参考一下的文章来进行安装:

在安装的时候,请选择 Elastic Stack 8.x/9.x 进行安装。在安装的时候,我们可以看到如下的安装信息:

为了能够使得 Kibana 获得通知的能力,我们需要依据 CLI tool 来创建一些 keys。在 Kibana 的根目录下,打入如下的命令:

./bin/kibana-encryption-keys generate

我们可以看到如下的输出:

我们把上面的 keys 拷贝到 config/kibana.yml 文件的末尾,然后保存,并重新启动 Kibana。这样我们的配置就完成了。更多有关 Alerts 的安装及配置,请参考文章 “Kibana:创建一个 webhook alert - Elastic Stack 8.2”。

启动白金试用

在默认的 basic 版权情况下,Elastic 只支持 index 及 server log:

在我们的企业微信通知中,我们需要使用到 Webhook。我们必须启动白金试用才可以进行测试:

这样我们的白金试用功能就启动了。

创建企业微信

之前我一直也没有用到企业微信。为了这个测试,我在苹果商店(针对苹果电脑)下载并安装了企业微信。

大家可以根据自己的平台或者电脑来分别进行安装。这里就不一一赘述了。具体步骤可以参考文章。我们可以在手机端中创建一个企业。比如,我创建了一个叫做 “刘氏集团” 的企业微信。然后,我们创建一个群聊:

.     

我们点击上面的 “添加” 来创建一个 Webhook 的消息推送:

    

我们拷贝在上面图中显示的 Webhook 地址。在接下来的配置中,我们将对它进行使用。

配置 Webhook connector

接下来,我们来配置 Webhook 连接器。我们按照如下的步骤来进行:

由于我们使用 API key 来进行鉴权,所以,我们在上面的 Authentication 部分选择 “None"。我们把所需要的信息填入进去。记得上面的 URL 就是之前我们创建的 URL。我们选择 Save & test 来进行测试:

我们在 Body 里填入如下的信息:

{
    "msgtype": "text",
    "text": {
        "content": "大家好,这是一条来自机器人的测试消息!"
    },
    "mentioned_list": [
        "张三",
        "李四"
    ],
    "mentioned_mobile_list": [
        "13800000000",
        "@all"
    ]
}

请注意:

  • msgtype: 固定为 "text"。

  • content: 消息的文本内容。

  • mentioned_list: 需要 @ 的成员UserID列表,@all 可以用来 @ 所有人。

  • mentioned_mobile_list: 需要 @ 的成员手机号列表,@all 也可以用来 @ 所有人。

点击上面的 Run,上面显示我们的消息已经成功地发出去了。我们检查手机端的企业微信,我们可以看到一条如下的消息:

很显然,我们收到了我们想要的信息。

如何使用我们的 WeCom 连接器呢?

我们来参考之前的文章 “Kibana:创建一个 webhook alert - Elastic Stack 8.2”。我们首先创建一个索引:

PUT webhook
{
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "hits": {
        "type": "long"
      }
    }
  }
}

为了方便插入时间戳,我们也创建如下的一个 ingest pipeline:

PUT _ingest/pipeline/add-timestamp
{
  "processors": [
    {
      "set": {
        "field": "@timestamp",
        "value": "{{_ingest.timestamp}}"
      }
    }
  ]
}

 我们可以通过如下的方式来写入一个文档:

PUT webhook/_doc/1?pipeline=add-timestamp
{
  "hits": 500
}

我们可以通过如下的方式来检查我们些人的文档:

GET webhook/_search?filter_path=**.hits
{
  "hits": {
    "hits": [
      {
        "_index": "webhook",
        "_id": "1",
        "_score": 1,
        "_source": {
          "hits": 500,
          "@timestamp": "2025-08-12T01:25:21.628454Z"
        }
      }
    ]
  }
}

我们可以看到有一个时间戳和 hits 字段。

我们来到创建 rule 的界面:

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

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

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

从上面显示中,我们可以看到已经创建了一个叫做 Index threshold rule 的规则。

接下来,我们在 Dev Tools 里运行如下的命令:

PUT webhook/_doc/1?pipeline=add-timestamp
{
  "hits": 2000
}

当我们运行一次的时候,是没有任何反应的,因为 hits 的值只有 2000。我们接下来连续运行这个命令

PUT webhook/_doc/1?pipeline=add-timestamp
{
  "hits": 20000
}

这样我们的 hits 总和已经超过 5000 了。我们希望能看到一条告警的信息。

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

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

等待状态变为 Recovered,我们再次运行如下的一天指令:

PUT webhook/_doc/1?pipeline=add-timestamp
{
  "hits": 20000
}

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

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐