Multi-target Prometheus exporter with an exclusive focus on DNS monitoring
Project description
dns_exporter
dns_exporter is a multi-target Prometheus exporter with an exclusive focus on DNS monitoring. It is built on the excellent libraries dnspython and the Prometheus Python client library.
dns_exporter can be used to monitor availability and performance of DNS servers, and to validate the responses they return. It can monitor recursive and authoritative servers regardless of the software they run. You can use it to make sure your (or your providers) DNS servers are sending the replies you expect and configure Prometheus and Alertmanager to notify you if something stops working.
dns_exporter works similar to the Blackbox exporter where Prometheus asks the exporter to scrape the target, rather than the exporter itself being the target. This is called the Multi Target Exporter Pattern. It is typically used in black-box style exporters where 1) the thing you are monitoring is not under your control, or 2) you want to measure the path as well. Often when monitoring DNS both 1) and 2) are relevant.
This means that for each scrape Prometheus speaks HTTP to the dns_exporter which then speaks DNS with the target DNS server and returns the resulting metrics over HTTP to Prometheus. dns_exporter supports doing DNS queries over plain port 53 UDP and TCP, as well as DoT, DoH, DoH3, and DoQ.
Installation
dns_exporter is not yet in any OS package managers but installing dns_exporter can be done from pypi. This is the recommended way to install for now:
pip install dns_exporter
There is also a Docker image so you can get your container on:
docker run -p 15353:15353 tykling/dns_exporter:latest
There is also a Kubernetes Helm Chart (maintained by @christianhuth) available on ArtifactHUB.
Python Support
Python 3.10, 3.11, 3.12, 3.13 and 3.14 are fully supported. dns_exporter aims to follow the officially supported Python versions.
Documentation
The documentation is available on ReadTheDocs
Grafana Dashboard
There is a Grafana dashboard you can use as a starting point for your own dashboards.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dns_exporter-1.2.2.tar.gz.
File metadata
- Download URL: dns_exporter-1.2.2.tar.gz
- Upload date:
- Size: 76.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e066f557e1d7799ae38bd7e8a394afc339545e06073d818e4a60b69aee9430f
|
|
| MD5 |
4792a9b94bc2bbfd9713ec1b546233d4
|
|
| BLAKE2b-256 |
220bf7e54003e05745c137d4cee0e0f030f982cb3c696f2c7264a51aca02ab4d
|
Provenance
The following attestation bundles were made for dns_exporter-1.2.2.tar.gz:
Publisher:
pypi.yml on tykling/dns_exporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dns_exporter-1.2.2.tar.gz -
Subject digest:
2e066f557e1d7799ae38bd7e8a394afc339545e06073d818e4a60b69aee9430f - Sigstore transparency entry: 1066542940
- Sigstore integration time:
-
Permalink:
tykling/dns_exporter@9b222a7452077881c8a27dd823736cefe2d1ae0e -
Branch / Tag:
refs/tags/v1.2.2 - Owner: https://github.com/tykling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@9b222a7452077881c8a27dd823736cefe2d1ae0e -
Trigger Event:
push
-
Statement type:
File details
Details for the file dns_exporter-1.2.2-py3-none-any.whl.
File metadata
- Download URL: dns_exporter-1.2.2-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7c530147e6ef2be6fa32119a473e549f386ddbed6ebf24d0f54e4bf3fda5bfd
|
|
| MD5 |
c6bf7bca3c9bbc6767facb3a3b723375
|
|
| BLAKE2b-256 |
9bfed152a45455fcde2114b63fe8a216de951f1ab952e8f18b97c76b99c0e50e
|
Provenance
The following attestation bundles were made for dns_exporter-1.2.2-py3-none-any.whl:
Publisher:
pypi.yml on tykling/dns_exporter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dns_exporter-1.2.2-py3-none-any.whl -
Subject digest:
e7c530147e6ef2be6fa32119a473e549f386ddbed6ebf24d0f54e4bf3fda5bfd - Sigstore transparency entry: 1066542942
- Sigstore integration time:
-
Permalink:
tykling/dns_exporter@9b222a7452077881c8a27dd823736cefe2d1ae0e -
Branch / Tag:
refs/tags/v1.2.2 - Owner: https://github.com/tykling
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@9b222a7452077881c8a27dd823736cefe2d1ae0e -
Trigger Event:
push
-
Statement type: