in internal/beater/api/config/agent/handler.go [161:213]
func extractInternalError(c *request.Context, err error) {
msg := err.Error()
var body interface{}
var keyword string
switch {
case strings.Contains(msg, agentcfg.ErrMsgSendToKibanaFailed):
body = authErrMsg(c, msg, agentcfg.ErrMsgSendToKibanaFailed)
keyword = agentcfg.ErrMsgSendToKibanaFailed
case strings.Contains(msg, agentcfg.ErrMsgReadKibanaResponse):
body = authErrMsg(c, msg, agentcfg.ErrMsgReadKibanaResponse)
keyword = agentcfg.ErrMsgReadKibanaResponse
case strings.Contains(msg, agentcfg.ErrUnauthorized):
fullMsg := "APM Server is not authorized to query Kibana. " +
"Please configure apm-server.kibana.username and apm-server.kibana.password, " +
"and ensure the user has the necessary privileges."
body = authErrMsg(c, fullMsg, agentcfg.ErrUnauthorized)
keyword = agentcfg.ErrUnauthorized
case strings.Contains(msg, agentcfg.ErrNoValidElasticsearchConfig):
body = "Your Elasticsearch configuration does not support agent config queries. Check your configurations at `output.elasticsearch` or `apm-server.agent.config.elasticsearch`."
c.Result.Set(
request.IDResponseErrorsForbidden,
http.StatusForbidden,
keyword,
body,
err,
)
return
case strings.Contains(msg, agentcfg.ErrInfrastructureNotReady):
body = "Agent configuration infrastructure is not ready. Please retry later."
c.Result.Set(
request.IDResponseErrorsServiceUnavailable,
http.StatusServiceUnavailable,
keyword,
body,
err,
)
return
default:
body = authErrMsg(c, msg, msgServiceUnavailable)
keyword = msgServiceUnavailable
}
c.Result.Set(request.IDResponseErrorsServiceUnavailable,
http.StatusServiceUnavailable,
keyword,
body,
err)
}