prometheus/documentation/examples/custom-sd
TJ Hoplock 6ebfbd2d54 chore!: adopt log/slog, remove go-kit/log
For: #14355

This commit updates Prometheus to adopt stdlib's log/slog package in
favor of go-kit/log. As part of converting to use slog, several other
related changes are required to get prometheus working, including:
- removed unused logging util func `RateLimit()`
- forward ported the util/logging/Deduper logging by implementing a small custom slog.Handler that does the deduping before chaining log calls to the underlying real slog.Logger
- move some of the json file logging functionality to use prom/common package functionality
- refactored some of the new json file logging for scraping
- changes to promql.QueryLogger interface to swap out logging methods for relevant slog sugar wrappers
- updated lots of tests that used/replicated custom logging functionality, attempting to keep the logical goal of the tests consistent after the transition
- added a healthy amount of `if logger == nil { $makeLogger }` type conditional checks amongst various functions where none were provided -- old code that used the go-kit/log.Logger interface had several places where there were nil references when trying to use functions like `With()` to add keyvals on the new *slog.Logger type

Signed-off-by: TJ Hoplock <t.hoplock@gmail.com>
2024-10-07 15:58:50 -04:00
..
adapter chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
adapter-usage chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
README.md Fix typo (#4760) 2018-10-18 21:19:21 +01:00

Custom SD

Custom SD is available via the file_sd adapter, which can be used to access SD mechanisms that are not included in official Prometheus releases. The sd adapter outputs a file that can be passed via your prometheus.yml as a file_sd file. This will allow you to pass your targets to Prometheus for scraping without having to use a static config.

Example

This directory (documentation/examples/custom-sd) contains an example custom service discovery implementation as well as a file_sd adapter usage. adapter-usage contains the Discoverer implementation for a basic Consul service discovery mechanism. It simply queries Consul for all it's known services (except Consul itself), and sends them along with all the other service data as labels as a TargetGroup. The adapter directory contains the adapter code you will want to import and pass your Discoverer implementation to.

Usage

To use file_sd adapter you must implement a Discoverer. In adapter-usage/main.go replace the example SD config and create an instance of your SD implementation to pass to the Adapter's NewAdapter. See the Note: comments for the structs and Run function.