External services show with an incorrect status in the PMM inventory

Description

Impact on the user
It makes the user think that something is wrong, when it may not be, as well as being unable to tell the difference between OK and Not OK.

Steps to reproduce

  • Add an external service to PMM

  • View the inventory page

Actual result
The service will show as:

  • Status = N/A

  • Monitoring = Failed

When selecting the hyperlinked "Failed" the user is then presented with another red status, this time showing as "Done"

Expected Result
External exporters should show just like any other service.
If data is being collected then they should definitely not be showing up as errors (red)

Workaround
N/A

Details
External exporters present themselves as problems, whether or not they are actually working as expected.

How to test

None

How to document

None

Attachments

4

Smart Checklist

Activity

Show:

C W September 7, 2023 at 11:07 AM
Edited

Instead of creating separate tickets, as the following do relate to this issue, adding as a comment here.

  • In addition to the UI giving inaccurate information to the user, it is not possible to tell the status of an external service via the API and also pmm-admin; the status field is absent. This means that is is also not possible to automatically detect if an external service is correctly configured.

  • The presentation of external services in pmm-admin is different for external services and makes little sense. Where all other exporters show their own port and then the service port shows against the service, for external services the port shows against the agent and nothing shows for the service; this compounds the previous point

Before noticing that it was only the connection check that prevented me from adding an external service that required query arguments in the metric path, I wrote a simple, purpose-specific reverse proxy that could be used to point PMM to and it would then handle the request and inject the query arguments. It seems that this would solve the external service issues completely, since it could be a generic `external.go` exporter. I see little change of performance issues by routing through it, since it would be in the PMM server or on the PMM client. That would allow knowledge of status and also standardise it with the other agents.

The code, which was quickly thrown together to see if it worked:

Details

Assignee

Reporter

Priority

Components

Needs QA

Yes

Needs Doc

Yes

Planned Version/s

Affects versions

Smart Checklist Progress

Smart Checklist

Created September 6, 2023 at 2:36 PM
Updated January 9, 2025 at 4:31 PM