consul使用watches机制,healthcheck不通过时发送预警

参考文档:https://www.consul.io/docs/dynamic-app-config/watches#checks

 

watches是一个被动触发的动作,预定义有多个类型:

Key – 监视指定K/V键值对

Keyprefix – Watch a prefix in the KV store

Services – 监视服务列表

nodes – 监控节点列表

service – 监视服务实例

checks- 监视健康检查的值

event – 监视用户事件

 

我这里有个需求,希望在服务的健康检查为critical或者warning时自动启动backup容器来承载服务,至少要发送预警通知。于是就想到用warches的check类型。根据官方文档介绍,触发的动作可选script/http api,配置方式可选consul命令或config文件。我这里采用的是config文件+http api的方式

 

 

创建config文件

cd /usr/consul-config/

vi watch.json

 

#watch.json文件内容

{
  "watches": [
    {
      "type": "checks",
      "handler_type": "http",
      "state": "critical",
      "http_handler_config": {
        "path": "http://localhost/consulwatches.php",
        "method": "POST",
        "timeout": "10s",
        "header": { "Authorization": [ "token" ] }
      }
    }
  ]
}

path:需替换成自己的api链接

 

启动consul agent

consul agent -config-dir=/usr/consul-config/  -dev

-config-dir :agent启动时加载的config文件夹

其他要加的配置项自己随意

 

注册一个异常的服务进行测试

curl http://localhost:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{
"ID": "ValidateCode123",
"Name": "ValidateCo3de",
"Tags": [],
"Address": "http://172.19.0.13/ValidateCodeService",
"Port": 80,
"EnableTagOverride": false,
"Check": {
"HTTP": "http://172.19.0.12/healthcheck",
"Interval": "10s"
}
}'

这个check属性一定要设置,不然触发不了;HTTP可随便填个ip,就是为了异常;

当healthcheck判定为critical时,就会访问http://localhost/consulwatches.php,携带参数为

[
{
    * Node: "Pro.local",
    * CheckID: "service:ValidateCode123",
    * Name: "Service 'ValidateCode' check",
    * Status: "critical",
    * Notes: "",
    * Output: "Get http://172.19.0.12/sysinfo_healthcheck.php: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)",
    * ServiceID: "ValidateCode111",
    * ServiceName: "ValidateCo3de",
    * ServiceTags: [ ],
    * 
Definition: {
        * Interval: "0s",
        * Timeout: "0s",
        * DeregisterCriticalServiceAfter: "0s",
        * HTTP: "",
        * Header: null,
        * Method: "",
        * TLSSkipVerify: false,
        * TCP: ""
},
    * CreateIndex: 11,
    * ModifyIndex: 13
}
]

    至此我们就可以在接口中做各种操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值