如何覆盖弹簧执行器的健康状况,以避免在依赖组件发生故障时出现DOWN状态?我应该吗?

时间:2019-03-13 09:46:19

标签: java spring spring-boot-actuator

我们已经在我们的一种应用中实现了弹簧执行器。

使用它,我们正在检查与我们的主要应用相关的外部应用的健康(ping能力)。这是一个看起来像的例子:

{
   "status":"UP",
   "details":{
      "certificateExpiration":{
         "status":"UP",
         "details": {...}
      },
      "desi":{
         "status":"UP",
         "details":{
            "afterCallDatetime":"Wed Mar 13 09:30:54 CET 2019",
            "Desi-URL-config":"https://dependancy1Host",
            "Desi-Call-URL":"https://dependancy1Host/ping",
            "Desi-Call-ExecStatus":"OK-Alles gut"
         }
      },
      "flowableDB":{
         "status":"UP",
          details":{
             "afterCallDatetime":"Wed Mar 13 09:30:54 CET 2019",
             "Flowable-Nb-ProcessDef":"7"
         }
      },
      "legalArchivingSystem":{
         "status":"UP",
         "details":{
            "Legal-Archiving-System-Call-URL":"http://dependancy2Host/ping",
            "afterCallDatetime":"Wed Mar 13 09:30:54 CET 2019",
            "Legal-Archiving-System-Call-ExecStatus":"OK-Alles gut",
            "Legal-Archiving-System-URL-config":"http://dependancy2Host"
         }
      },
      "diskSpace":{
         "status":"UP",
         "details":{
            "total":193272475648,
            "free":5613903872,
            "threshold":10485760
         }
      },
     "db":{
        "status":"UP",
        "details":{
           "database":"Oracle",
        }
     },
     "refreshScope":{
         "status":"UP"
     }
  }
}

基于主要健康状况,我们已执行一些触发的基础架构操作。例如,如果主要状态为“关闭”,它将 -复制VM实例以尝试启动一个 -部署步骤失败等。

但是,据您了解,主要状态还取决于外部组件(1和2)的运行状况指示器。因此,受监管的VM可能还可以,并且其中一个外部依赖项是KO,因此它将产生意外的动作。

所以我想找到一种避免这种情况的聪明方法,并且可以:

  • 在主要状态的定义中跳过一些运行状况指示器(如果外部依赖项之一关闭,则应在详细信息级别中显示它,但主要状态将保持UP,而VM Metrics正常,数据库等等。重要的东西)例如:

    {    “状态”:“ UP” ,    “细节”:{       “ certificateExpiration”:{          “ status”:“ UP”,          “细节”: {...}       },       “ desi”:{          “ status”:“ UP”,          “细节”:{             “ afterCallDatetime”:“ 2019年3月13日星期三09:30:54 CET”,             “ Desi-URL-config”:“ https://dependancy1Host”,             “ Desi-Call-URL”:“ https://dependancy1Host/ping”,             “ Desi-Call-ExecStatus”:“ OK-Alles直觉”          }       },       “ flowableDB”:{          “ status”:“ UP”,           细节”:{              “ afterCallDatetime”:“ 2019年3月13日星期三09:30:54 CET”,              “ Flowable-Nb-ProcessDef”:“ 7”          }       },       “法律档案系统”:{          “ status”:“ DOWN”,          “细节”:{             “法律存档系统调用URL”:“ http://dependancy2Host/ping”,             “ afterCallDatetime”:“ 2019年3月13日星期三09:30:54 CET”,             “ Legal-Archiving-System-Call-ExecStatus”:“ ERROR NotFoundException ...”,             “法律存档系统URL配置”:“ http://dependancy2Host”          }       },       “磁盘空间”:{          “ status”:“ UP”,          “细节”:{             “总计”:193272475648,             “免费”:5613903872,             “阈值”:10485760          }       },      “D b”:{         “ status”:“ UP”,         “细节”:{            “数据库”:“ Oracle”,         }      },      “ refreshScope”:{          “状态”:“ UP”      }   } }

有可能吗?可自定义吗?

  • 或者,将执行器/运行状况分为传统的/运行状况检查/虚拟机和重要内容(如数据库)之间。和一个自定义的/ deepHealth检查外部组件的运行状况吗?知道怎么做吗?
  • 或者我不知道,我很开放。因此,如果您有其他想法,我会很乐意谈论。

非常感谢

0 个答案:

没有答案