服务发现系统consul-health check

为什么80%的码农都做不了架构师?>>>   hot3.png

       agent有两个主要的功能:系统管理和应用健康检测。健康检测如果是和服务相关联的,则被认为是在应用层面的检测。检测的定义可以通过配置文件定义,或者在agent运行时通过HTTP接口来定义。主要有两种不同的检测类型:

script+interval:该类型的检测依赖于调用外部程序的执行以及退出的状态,可能会产生一些输出,脚本是和执行时间配合的(每30s执行一次),这和nagios的插件系统有点类似。

TTL:这些检测保留在一个TTL周期内服务的状态。这些状态的检测必须周期性的通过HTTP接口进行更新,如果在给定的TTL周期内一个系统的状态更新失败,则检测会被标记为failed。这种机制允许应用直接汇报他的健康状态,例如:一个web应用可以通过curl来直接汇报他的状态,如果web失效,则TTL会过期后,健康检测则进入critical状态。

脚本定义类似这样:

{
  "check": {
    "id": "mem-util",
    "name": "Memory utilization",
    "script": "/usr/local/bin/check_mem.py",
    "interval": "10s"
  }
}

TTL定义类似这样:

{
  "check": {
    "id": "web-app",
    "name": "Web App Status",
    "notes": "Web app does a curl internally every 10 seconds",
    "ttl": "30s"
  }
}

        两个定义都必须包含name变量,也可以选择性的提供id和notes变量,在每个节点的所有检测都需要一个唯一的ID,因此如果name存在冲突,则必须提供id。notes变量提供的信息主要是描述性信息。在命令行上可以配置-config-file或者-config-dir来指定配置文件的位置,配置文件的名称必须以.json字符结尾。配置文件修改后,可以通过给agent发送SIGHUP信号来重新加载。 

        检测脚本的返回值:

Exit code 0 - Check is passing
Exit code 1 - Check is warning
Any other code - Check is failing



转载于:https://my.oschina.net/guol/blog/353396

你可能感兴趣的:(服务发现系统consul-health check)