44d91ea56f
Signed-off-by: Jakub Sokołowski <jakub@status.im> * agent: add failures_before_warning setting The new setting allows users to specify the number of check failures that have to happen before a service status us updated to be `warning`. This allows for more visibility for detected issues without creating alerts and pinging administrators. Unlike the previous behavior, which caused the service status to not update until it reached the configured `failures_before_critical` setting, now Consul updates the Web UI view with the `warning` state and the output of the service check when `failures_before_warning` is breached. The default value of `FailuresBeforeWarning` is the same as the value of `FailuresBeforeCritical`, which allows for retaining the previous default behavior of not triggering a warning. When `FailuresBeforeWarning` is set to a value higher than that of `FailuresBeforeCritical it has no effect as `FailuresBeforeCritical` takes precedence. Resolves: https://github.com/hashicorp/consul/issues/10680 Signed-off-by: Jakub Sokołowski <jakub@status.im> Co-authored-by: Jakub Sokołowski <jakub@status.im>
156 lines
5.4 KiB
Protocol Buffer
156 lines
5.4 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package pbservice;
|
|
|
|
option go_package = "github.com/hashicorp/consul/proto/pbservice";
|
|
|
|
import "google/protobuf/duration.proto";
|
|
import "proto/pbcommon/common.proto";
|
|
|
|
// This fake import path is replaced by the build script with a versioned path
|
|
import "gogoproto/gogo.proto";
|
|
|
|
option (gogoproto.goproto_unkeyed_all) = false;
|
|
option (gogoproto.goproto_unrecognized_all) = false;
|
|
option (gogoproto.goproto_getters_all) = false;
|
|
option (gogoproto.goproto_sizecache_all) = false;
|
|
|
|
// HealthCheck represents a single check on a given node
|
|
//
|
|
// mog annotation:
|
|
//
|
|
// target=github.com/hashicorp/consul/agent/structs.HealthCheck
|
|
// output=healthcheck.gen.go
|
|
// name=Structs
|
|
message HealthCheck {
|
|
string Node = 1;
|
|
string CheckID = 2 [(gogoproto.casttype) = "github.com/hashicorp/consul/types.CheckID"];
|
|
string Name = 3;
|
|
string Status = 4; // The current check status
|
|
string Notes = 5; // Additional notes with the status
|
|
string Output = 6; // Holds output of script runs
|
|
string ServiceID = 7; // optional associated service
|
|
string ServiceName = 8; // optional service name
|
|
repeated string ServiceTags = 9; // optional service tags
|
|
string Type = 12; // Check type: http/ttl/tcp/etc
|
|
|
|
HealthCheckDefinition Definition = 10 [(gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=RaftIndexToStructs func-from=NewRaftIndexFromStructs
|
|
common.RaftIndex RaftIndex = 11 [(gogoproto.embed) = true, (gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=EnterpriseMetaToStructs func-from=NewEnterpriseMetaFromStructs
|
|
common.EnterpriseMeta EnterpriseMeta = 13 [(gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=int func-from=int32
|
|
int32 ExposedPort = 14;
|
|
|
|
string Interval = 15;
|
|
string Timeout = 16;
|
|
}
|
|
|
|
message HeaderValue {
|
|
repeated string Value = 1;
|
|
}
|
|
|
|
// HealthCheckDefinition of a single HealthCheck.
|
|
//
|
|
// mog annotation:
|
|
//
|
|
// target=github.com/hashicorp/consul/agent/structs.HealthCheckDefinition
|
|
// output=healthcheck.gen.go
|
|
// name=Structs
|
|
message HealthCheckDefinition {
|
|
string HTTP = 1;
|
|
string TLSServerName = 19;
|
|
bool TLSSkipVerify = 2;
|
|
|
|
// mog: func-to=MapHeadersToStructs func-from=NewMapHeadersFromStructs
|
|
map<string, HeaderValue> Header = 3 [(gogoproto.nullable) = false];
|
|
string Method = 4;
|
|
string Body = 18;
|
|
string TCP = 5;
|
|
google.protobuf.Duration Interval = 6
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=uint func-from=uint32
|
|
uint32 OutputMaxSize = 9;
|
|
google.protobuf.Duration Timeout = 7
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
google.protobuf.Duration DeregisterCriticalServiceAfter = 8
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
repeated string ScriptArgs = 10;
|
|
string DockerContainerID = 11;
|
|
string Shell = 12;
|
|
string H2PING = 20;
|
|
string GRPC = 13;
|
|
bool GRPCUseTLS = 14;
|
|
string AliasNode = 15;
|
|
string AliasService = 16;
|
|
google.protobuf.Duration TTL = 17
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
}
|
|
|
|
// CheckType is used to create either the CheckMonitor or the CheckTTL.
|
|
// The following types are supported: Script, HTTP, TCP, Docker, TTL, GRPC,
|
|
// Alias. Script, H2PING,
|
|
// HTTP, Docker, TCP, H2PING and GRPC all require Interval. Only one of the types may
|
|
// to be provided: TTL or Script/Interval or HTTP/Interval or TCP/Interval or
|
|
// Docker/Interval or GRPC/Interval or H2PING/Interval or AliasService.
|
|
//
|
|
// mog annotation:
|
|
//
|
|
// target=github.com/hashicorp/consul/agent/structs.CheckType
|
|
// output=healthcheck.gen.go
|
|
// name=Structs
|
|
message CheckType {
|
|
string CheckID = 1 [(gogoproto.casttype) = "github.com/hashicorp/consul/types.CheckID"];
|
|
string Name = 2;
|
|
string Status = 3;
|
|
string Notes = 4;
|
|
|
|
repeated string ScriptArgs = 5;
|
|
string HTTP = 6;
|
|
// mog: func-to=MapHeadersToStructs func-from=NewMapHeadersFromStructs
|
|
map<string, HeaderValue> Header = 20 [(gogoproto.nullable) = false];
|
|
string Method = 7;
|
|
string Body = 26;
|
|
string TCP = 8;
|
|
google.protobuf.Duration Interval = 9
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
|
|
string AliasNode = 10;
|
|
string AliasService = 11;
|
|
string DockerContainerID = 12;
|
|
string Shell = 13;
|
|
string H2PING = 28;
|
|
string GRPC = 14;
|
|
bool GRPCUseTLS = 15;
|
|
string TLSServerName = 27;
|
|
bool TLSSkipVerify = 16;
|
|
google.protobuf.Duration Timeout = 17
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
google.protobuf.Duration TTL = 18
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=int func-from=int32
|
|
int32 SuccessBeforePassing = 21;
|
|
// mog: func-to=int func-from=int32
|
|
int32 FailuresBeforeWarning = 29;
|
|
// mog: func-to=int func-from=int32
|
|
int32 FailuresBeforeCritical = 22;
|
|
|
|
// Definition fields used when exposing checks through a proxy
|
|
string ProxyHTTP = 23;
|
|
string ProxyGRPC = 24;
|
|
|
|
// DeregisterCriticalServiceAfter, if >0, will cause the associated
|
|
// service, if any, to be deregistered if this check is critical for
|
|
// longer than this duration.
|
|
google.protobuf.Duration DeregisterCriticalServiceAfter = 19
|
|
[(gogoproto.stdduration) = true, (gogoproto.nullable) = false];
|
|
|
|
// mog: func-to=int func-from=int32
|
|
int32 OutputMaxSize = 25;
|
|
}
|