feat(emqx_resource): include error with alarm for resource_down
This commit is contained in:
parent
53825b9aba
commit
c1384b6e6e
|
@ -522,7 +522,7 @@ start_resource(Data, From) ->
|
||||||
id => Data#data.id,
|
id => Data#data.id,
|
||||||
reason => Reason
|
reason => Reason
|
||||||
}),
|
}),
|
||||||
_ = maybe_alarm(disconnected, Data#data.id),
|
_ = maybe_alarm(disconnected, Data#data.id, Data#data.error),
|
||||||
%% Keep track of the error reason why the connection did not work
|
%% Keep track of the error reason why the connection did not work
|
||||||
%% so that the Reason can be returned when the verification call is made.
|
%% so that the Reason can be returned when the verification call is made.
|
||||||
UpdatedData = Data#data{status = disconnected, error = Reason},
|
UpdatedData = Data#data{status = disconnected, error = Reason},
|
||||||
|
@ -597,7 +597,7 @@ with_health_check(Data, Func) ->
|
||||||
ResId = Data#data.id,
|
ResId = Data#data.id,
|
||||||
HCRes = emqx_resource:call_health_check(Data#data.manager_id, Data#data.mod, Data#data.state),
|
HCRes = emqx_resource:call_health_check(Data#data.manager_id, Data#data.mod, Data#data.state),
|
||||||
{Status, NewState, Err} = parse_health_check_result(HCRes, Data),
|
{Status, NewState, Err} = parse_health_check_result(HCRes, Data),
|
||||||
_ = maybe_alarm(Status, ResId),
|
_ = maybe_alarm(Status, ResId, Err),
|
||||||
ok = maybe_resume_resource_workers(ResId, Status),
|
ok = maybe_resume_resource_workers(ResId, Status),
|
||||||
UpdatedData = Data#data{
|
UpdatedData = Data#data{
|
||||||
state = NewState, status = Status, error = Err
|
state = NewState, status = Status, error = Err
|
||||||
|
@ -616,15 +616,20 @@ update_state(Data, _DataWas) ->
|
||||||
health_check_interval(Opts) ->
|
health_check_interval(Opts) ->
|
||||||
maps:get(health_check_interval, Opts, ?HEALTHCHECK_INTERVAL).
|
maps:get(health_check_interval, Opts, ?HEALTHCHECK_INTERVAL).
|
||||||
|
|
||||||
maybe_alarm(connected, _ResId) ->
|
maybe_alarm(connected, _ResId, _Error) ->
|
||||||
ok;
|
ok;
|
||||||
maybe_alarm(_Status, <<?TEST_ID_PREFIX, _/binary>>) ->
|
maybe_alarm(_Status, <<?TEST_ID_PREFIX, _/binary>>, _Error) ->
|
||||||
ok;
|
ok;
|
||||||
maybe_alarm(_Status, ResId) ->
|
maybe_alarm(_Status, ResId, Error) ->
|
||||||
|
HrError =
|
||||||
|
case Error of
|
||||||
|
undefined -> <<"Unknown reason">>;
|
||||||
|
_Else -> emqx_misc:readable_error_msg(Error)
|
||||||
|
end,
|
||||||
emqx_alarm:activate(
|
emqx_alarm:activate(
|
||||||
ResId,
|
ResId,
|
||||||
#{resource_id => ResId, reason => resource_down},
|
#{resource_id => ResId, reason => resource_down},
|
||||||
<<"resource down: ", ResId/binary>>
|
<<"resource down: ", HrError/binary>>
|
||||||
).
|
).
|
||||||
|
|
||||||
maybe_resume_resource_workers(ResId, connected) ->
|
maybe_resume_resource_workers(ResId, connected) ->
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
Fix `bridges` API to report error conditions for a failing bridge as `status_reason`.
|
Fix `bridges` API to report error conditions for a failing bridge as
|
||||||
|
`status_reason`. Also when creating an alarm for a failing resource we include
|
||||||
|
this error condition with the alarm's message.
|
||||||
|
|
Loading…
Reference in New Issue