Documentation ¶
Index ¶
- Constants
- Variables
- func CreateHealthChecksLogger(logDir string) logs.StructuredLogger
- func LogHealthCheckResults(healthCheckResults []HealthCheckResult, logger logs.StructuredLogger)
- type APICheck
- type HealthCheck
- type HealthCheckError
- type HealthCheckRegistry
- type HealthCheckResult
- type MultiWrappedError
- type NetworkCheck
- type PortsCheck
- type SelfLogTranslationEntry
Constants ¶
View Source
const ( ServiceDisabled = "SERVICE_DISABLED" AccessTokenScopeInsufficient = "ACCESS_TOKEN_SCOPE_INSUFFICIENT" IamPermissionDenied = "IAM_PERMISSION_DENIED" MaxMonitoringPingRetries = 1 )
View Source
const ( Api = "API" Connection = "CONNECTION" Generic = "GENERIC" Port = "PORT" Permission = "PERMISSION" Runtime = "RUNTIME" )
Error classification
View Source
const MaxRequestElapsedTime = 30 * time.Second
Variables ¶
View Source
var ( FbMetricsPortErr = HealthCheckError{ Code: "FbMetricsPortErr", Class: Port, Message: "Port 20202 needed for Ops Agent self metrics is unavailable.", Action: "Verify that port 20202 is open.", ResourceLink: "https://cloud.google.com/logging/docs/agent/ops-agent/troubleshooting", IsFatal: true, } OtelMetricsPortErr = HealthCheckError{ Code: "OtelMetricsPortErr", Class: Port, Message: "Port 20201 needed for Ops Agent self metrics is unavailable.", Action: "Verify that port 20201 is open.", ResourceLink: "https://cloud.google.com/monitoring/agent/ops-agent/troubleshooting", IsFatal: true, } LogApiConnErr = HealthCheckError{ Code: "LogApiConnErr", Class: Connection, Message: "Request to Logging API failed.", Action: "Check your internet connection and firewall rules.", ResourceLink: "https://cloud.google.com/logging/docs/agent/ops-agent/troubleshooting", IsFatal: true, } MonApiConnErr = HealthCheckError{ Code: "MonApiConnErr", Class: Connection, Message: "Request to Monitoring API failed.", Action: "Check your internet connection and firewall rules.", ResourceLink: "https://cloud.google.com/monitoring/agent/ops-agent/troubleshooting", IsFatal: true, } PacApiConnErr = HealthCheckError{ Code: "PacApiConnErr", Class: Connection, Message: "Request to packages.cloud.google.com failed.", Action: "Check your internet connection and firewall rules.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/troubleshoot-run-ingest#network-issues", IsFatal: false, } DLApiConnErr = HealthCheckError{ Code: "DLApiConnErr", Class: Connection, Message: "Request to dl.google.com failed", Action: "Check your internet connection and firewall rules.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/troubleshoot-run-ingest#network-issues", IsFatal: false, } MetaApiConnErr = HealthCheckError{ Code: "MetaApiConnErr", Class: Connection, Message: "Request to GCE Metadata server failed", Action: "Check your internet connection and firewall rules.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/troubleshoot-run-ingest#network-issues", IsFatal: true, } LogApiScopeErr = HealthCheckError{ Code: "LogApiScopeErr", Class: Permission, Message: "VM is missing the https://www.googleapis.com/auth/logging.write scope.", Action: "Add the https://www.googleapis.com/auth/logging.write scope to the Compute Engine VM.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization", IsFatal: true, } MonApiScopeErr = HealthCheckError{ Code: "MonApiScopeErr", Class: Permission, Message: "VM is missing the https://www.googleapis.com/auth/monitoring.write scope.", Action: "Add the https://www.googleapis.com/auth/monitoring.write scope to the Compute Engine VM.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization", IsFatal: true, } LogApiPermissionErr = HealthCheckError{ Code: "LogApiPermissionErr", Class: Permission, Message: "Service account is missing the roles/logging.logWriter role.", Action: "Add the roles/logging.logWriter role to the Google Cloud service account.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization#create-service-account", IsFatal: true, } MonApiPermissionErr = HealthCheckError{ Code: "MonApiPermissionErr", Class: Permission, Message: "Service account is missing the roles/monitoring.metricWriter role.", Action: "Add the roles/monitoring.metricWriter role to the Google Cloud service account.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization#create-service-account", IsFatal: true, } LogApiDisabledErr = HealthCheckError{ Code: "LogApiDisabledErr", Class: Api, Message: "The Logging API is disabled in the current Google Cloud project.", Action: "Enable Logging API in the current Google Cloud project.", ResourceLink: "https://cloud.google.com/logging/docs/api/enable-api", IsFatal: true, } MonApiDisabledErr = HealthCheckError{ Code: "MonApiDisabledErr", Class: Api, Message: "The Monitoring API is disabled in the current Google Cloud project.", Action: "Enable Monitoring API in the current Google Cloud project.", ResourceLink: "https://cloud.google.com/monitoring/api/enable-api", IsFatal: true, } LogApiUnauthenticatedErr = HealthCheckError{ Code: "LogApiUnauthenticatedErr", Class: Api, Message: "The current VM couldn't authenticate to the Logging API.", Action: "Verify that your credential files, VM access scopes and permissions are set up correctly.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization", IsFatal: true, } MonApiUnauthenticatedErr = HealthCheckError{ Code: "MonApiUnauthenticatedErr", Class: Api, Message: "The current VM couldn't authenticate to the Monitoring API.", Action: "Verify that your credential files, VM access scopes and permissions are set up correctly.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/authorization", IsFatal: true, } LogPipelineErr = HealthCheckError{ Code: "LogPipelineErr", Class: Runtime, Message: "Ops Agent logging pipeline failed", Action: "Refer to provided documentation link.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/troubleshoot-find-info", IsFatal: true, } LogParseErr = HealthCheckError{ Code: "LogParseErr", Class: Runtime, Message: "Ops Agent failed to parse logs", Action: "Refer to provided documentation link.", ResourceLink: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/troubleshoot-find-info", IsFatal: false, } HcFailureErr = HealthCheckError{ Code: "HcFailureErr", Class: Generic, Message: "The Health Check encountered an internal error.", Action: "Submit a support case from Google Cloud console.", ResourceLink: "https://cloud.google.com/logging/docs/support", IsFatal: false, } )
View Source
var FluentBitSelfLogTranslationList = []SelfLogTranslationEntry{ { RegexMatch: `\[error\]\s\[lib\]\sbackend\sfailed`, Message: singleErrorResultMessage(LogPipelineErr, "Runtime Check"), Code: LogPipelineErr.Code, }, { RegexMatch: `\[error\]\s\[parser\]\scannot\sparse`, Message: singleErrorResultMessage(LogParseErr, "Runtime Check"), Code: LogParseErr.Code, }, }
Functions ¶
func CreateHealthChecksLogger ¶
func CreateHealthChecksLogger(logDir string) logs.StructuredLogger
func LogHealthCheckResults ¶
func LogHealthCheckResults(healthCheckResults []HealthCheckResult, logger logs.StructuredLogger)
Types ¶
type HealthCheck ¶
type HealthCheck interface { Name() string RunCheck(logger logs.StructuredLogger) error }
type HealthCheckError ¶
type HealthCheckError struct { Code string Class string Message string Action string ResourceLink string IsFatal bool }
func (HealthCheckError) Error ¶
func (e HealthCheckError) Error() string
type HealthCheckRegistry ¶
type HealthCheckRegistry []HealthCheck
func HealthCheckRegistryFactory ¶
func HealthCheckRegistryFactory() HealthCheckRegistry
func (HealthCheckRegistry) RunAllHealthChecks ¶
func (r HealthCheckRegistry) RunAllHealthChecks(logger logs.StructuredLogger) []HealthCheckResult
type HealthCheckResult ¶
func (HealthCheckResult) ErrorSlice ¶
func (r HealthCheckResult) ErrorSlice() []error
func (HealthCheckResult) LogResult ¶
func (r HealthCheckResult) LogResult(logger logs.StructuredLogger)
type MultiWrappedError ¶
type MultiWrappedError interface {
Unwrap() []error
}
Interface used to verify if an error implements `Unwrap() []error`. The resulting error from `errors.Join(errs ...error)` implements this interface. This error features were added in Go 1.20 release (https://tip.golang.org/doc/go1.20).
type NetworkCheck ¶
type NetworkCheck struct{}
func (NetworkCheck) Name ¶
func (c NetworkCheck) Name() string
func (NetworkCheck) RunCheck ¶
func (c NetworkCheck) RunCheck(logger logs.StructuredLogger) error
type PortsCheck ¶
type PortsCheck struct{}
func (PortsCheck) Name ¶
func (c PortsCheck) Name() string
func (PortsCheck) RunCheck ¶
func (c PortsCheck) RunCheck(logger logs.StructuredLogger) error
type SelfLogTranslationEntry ¶
Click to show internal directories.
Click to hide internal directories.