nginx-site-discovery/README.md

64 lines
2.6 KiB
Markdown

# Nginx site discovery
This repo provides a tool to use as both a service discovery sidecar for Prometheus and a discovery agent. The tool watches Nginx configuration file for changes and either write the service discovery file to the provided path or send it to a server for centralisation.
## Configuration
* To disable a single website from being scraped append `# monitoring:ignore` after the listen directive.
```nginx
listen 10.114.1.1:8032; # monitoring:ignore
```
* To configure the healthcheck URL, that is used for example with the [Blackbox exporter](https://github.com/prometheus/blackbox_exporter)
```nginx
server_name example.com; # monitoring:healthcheck_url=/health
```
## Command line usage
```
usage: nginx-sites-discovery [-h] [-l [LABELS [LABELS ...]]] [-s [LISTEN]] [-o OUTPUT_FILE] [-d OUTPUT_DIR] [-u SERVER_URL] [-e SITES_ENABLED] [-n] [-x EXTENSION]
Watch Nginx configuration to create files for service discovery
optional arguments:
-h, --help show this help message and exit
-l [LABELS [LABELS ...]], --labels [LABELS [LABELS ...]]
Optional, extra labels to add to the jobs in the format key=value
-s [LISTEN], --listen [LISTEN]
Optional, start a web server to listen for discovery files, if no listening address is provided the default is 127.0.0.1:4567
-o OUTPUT_FILE, --output-file OUTPUT_FILE
Optional, output the discovery file to the provided path
-d OUTPUT_DIR, --output-dir OUTPUT_DIR
Only valid with --listen, the directory in wich the files are dumped, default to current working directory
-u SERVER_URL, --server-url SERVER_URL
Optional, post the discovery file to the provided url, should be https://<server>/<service name>/<key>.
-e SITES_ENABLED, --sites-enabled SITES_ENABLED
Path to the Nginx configuration file directory, default to /etc/nginx/sites-enabled
-n, --no-watch Disable watching, useful for the server only mode
-x EXTENSION, --extension EXTENSION
Configuration file extension, default to empty string
```
## Prometheus config
```yml
scrape_configs:
- job_name: 'blackbox-http'
metrics_path: /probe
params:
module: [http_ok]
file_sd_configs:
- files:
- '/var/lib/prometheus/discovery/nginx-*.json'
relabel_configs:
- source_labels: [__address__, healthcheck_url]
separator: ''
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
```