Как сделать отслеживание доступности внешнего API сервиса

Создаем исходящий метод API в /asapi.

Это может быть Get/Post метод с некими параметрами (в простейшем случае get метод без параметров). 

Процедура request: 

CREATE PROCEDURE [dbo].[api_checksomeapi_request]
  @parameters ExtendedDictionaryParameter READONLY, 
  @username nvarchar(32) 
AS
BEGIN
  -- SELECT 1  Msg, Result, Url (адрес, куда будет идти запрос)
  select '' Msg, 1 Result, 'XXXXXXXXX' Url 

  -- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
  select 1 
END

Процедура response: 

CREATE PROCEDURE [dbo].[api_checksomeapi_response]
  @response nvarchar(max),
  @parameters ExtendedDictionaryParameter READONLY,    
  @username nvarchar(32)
AS
BEGIN
  -- SELECT 1
  select '' Msg, 1 Result, @response Response
	declare @success bit = iif(isjson(@response) =1 and JSON_VALUE(@response, '$.success')='true', 1, 0)
   	-- SELECT 2 Внешние действия
	if(@success =0) begin 
    	select 'notification' type, 'Внешний API не отвечает (ping запрос с сайта)' text , username [to], 'common' typeCode, ''  url, '' additional
        from dbo.sec_getRoleUsers('admin')      
       
   end 
END

В процедуре мы разбираем ответ и если у нас неверный отклик, то создаем уведомления для админов сайта. 

И последний шаг - вызывать это в периодических действиях в /syssp создаем команду, которая выполняется каждые 5 минут. Для нее прописываем процедуру: 

CREATE PROCEDURE [dbo].[sync_checksomeapi]
	@code nvarchar(128),
	@result bit output,
	@msg  nvarchar(max) output
AS
BEGIN
	select 'apirequest' type, 'checksomeapi' code
    
	set @result = 1
	set @msg = 'ok'
END

Таким образом мы настроили периодическую проверку внешнего сервиса. Также эти данные можно собирать в некую таблицу и вести лог доступности внешнего сервиса. 

Страница-источник на сайте falconspace.ru