https://github.com/secustor/prometheus-nagios-exporter
🆙 Prometheus exporter that scrapes a Nagios status page for alerts.
https://github.com/secustor/prometheus-nagios-exporter
Last synced: about 1 year ago
JSON representation
🆙 Prometheus exporter that scrapes a Nagios status page for alerts.
- Host: GitHub
- URL: https://github.com/secustor/prometheus-nagios-exporter
- Owner: secustor
- License: mit
- Created: 2020-02-06T12:04:46.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-13T20:14:50.000Z (over 2 years ago)
- Last Synced: 2025-02-14T14:31:29.253Z (over 1 year ago)
- Language: Go
- Size: 3.64 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# prometheus-nagios-exporter
🆙 Prometheus exporter that scrapes a Nagios status pages for alerts.
Prometheus asks this exporter for metrics, one Nagios target at a time.
The timeout for this exporter is 15 seconds, rather than the normal 10 seconds for Prometheus Exporters
## Exported Metrics
### `nagios_check_ok`
Labels `host`, `check_id`, `state`, `notify`, `acknowledged`, type Gauge
Info about each Nagios host monitored, and whether they have a failing check (0 == failing check)
### `nagios_request_duration_seconds`
How long the exporter took to scrape the Nagios hosts status?
### `nagios_up`
Whether the last nagios scrape was successful (1: up, 0: down).
### Prometheus Configuration
```yaml
- job_name: nagios_exporter
scheme: https
static_configs:
- targets:
- prometheus-nagios-exporter-eu-west-1.in.ft.com
- prometheus-nagios-exporter-us-east-1.in.ft.com
labels:
system: prometheus-nagios-exporter
observe: yes
# optional '__meta_nagios_param_host/__meta_nagios_param_hostgroup/__meta_nagios_param_servicegroup' labels passed to the nagios status page
# useful when a host/hostgroup/servicegroup maps to a different label set on the same instance
# multiple parameters are not supported and may produce unexpected results
#
# A further optional label is '__meta_nagios_param_protocol'. This labels allows to control the protocol which is used
# to scrape the nagios instance. Valid values are `http` (default) and `https`.
- job_name: nagios
scheme: https
metrics_path: /collect
scrape_timeout: 15s
static_configs:
- targets:
- 10.0.0.1
labels:
observe: yes
system: an-example-system-code
- targets:
- 10.0.0.2
labels:
observe: yes
system: an-example-system-code
__meta_nagios_param_host: specific-host-to-label
- targets:
- 10.0.0.2
labels:
observe: yes
system: an-example-system-code
__meta_nagios_param_host: other-host-to-label
- targets:
- 10.0.0.3
labels:
observe: yes
system: some-system-1
__meta_nagios_param_hostgroup: some-nagios-host-group
- targets:
- 10.0.0.4
labels:
observe: yes
system: some-system-2
__meta_nagios_param_servicegroup: some-nagios-service-group
relabel_configs:
- source_labels: [__address__]
regex: (.*?)[#?].*?
replacement: $1
target_label: __param_instance
- action: labelmap
regex: __meta_nagios_param_(.*)
replacement: __param_$1
- source_labels: [__param_instance]
target_label: instance
- target_label: __address__
replacement: prometheus-nagios-exporter.in.ft.com
```
## Runbook
View [RUNBOOK.md](./RUNBOOK.md).
## Development
### Parameter
| Parameter | Shorthand | Environment variable | Default | Description |
| -------------- | --------- | -------------------- | -------- | ---------------------------------------------------------------------------------- |
| port | p | `PORT` | `8080` | The port which the service listens to HTTP connections over |
| verbose | v | `VERBOSE` | `false` | Whether to enable verbose logging |
| username | U | `USERNAME` | `nil` | Set username for basic auth at Nagios |
| password | P | `PASSWORD` | `nil` | Set password for basic auth at Nagios |
| insecure | k | `INSECURE` | `false` | Ignore TLS validation errors when calling Nagios |
| client-timeout | t | `CLIENT_TIMEOUT` | `60` | Hard HTTP client timeout. This should be bigger then the Prometheus Timeout Header |
| log-format | | `LOG_FORMAT` | `logfmt` | Set the logging format. Available values `logfmt` and `json` |
### Local Development
Use the Makefile to locally test your changes. The 'make build' command will create a new local docker image, then the 'make run' command will execute these changes locally.
Go to `http://localhost:8080/` (or the port specified on the `make run` command) on your browser to see the index page for the exporter.