DEPRECATED, replaced by https://github.com/dmachard/python-pdnsbackup
This tool can be usedto export PowerDNS records database in several ways:
- bind zone format
- metrics for Prometheus
Deploy the pdns records exporter in your server with the pip command.
pip install pdns_exporter
After installation, you can execute the pdns_exporter
to start-it.
By default, the server is listening on the tcp port 9090
.
See config file example for more options.
Pull the pdns exporter image from Docker Hub.
sudo docker pull dmachard/pdns-exporter:latest
Deploy the container
sudo docker run -d -p 9090:9090 --name=pdnsexporter01 dmachard/pdns-exporter
The container can be configured with the following environment variables:
Variables | Description |
---|---|
PDNSEXPORT_VERBOSE | 1 or 0 to enable verbose mode |
PDNSEXPORT_LOCAL_ADDRESS | listening ip address of the server |
PDNSEXPORT_LOCAL_PORT | listening port |
PDNSEXPORT_API_LOGIN | login for basic authentication |
PDNSEXPORT_API_PASSWORD | password for basic authentication |
PDNSEXPORT_DB_HOST | Ip address of your database powerdns server |
PDNSEXPORT_DB_PORT | Port of your database powerdns server |
PDNSEXPORT_DB_USER | User database of your powerdns server |
PDNSEXPORT_DB_PWD | Password database of your powerdns server |
PDNSEXPORT_DB_NAME | Database name of your powerdns server |
Basic authentication method is only supported, don't forget to change the default login and password in settings.conf.
See the swagger documentation.
Get all dns zones
$ curl -u changeme:changeme http://127.0.0.1:9090/zones | jq .
[
{
"id": 1,
"name": "zone.test"
}
]
Get a specific zone with zone file format
$ curl -u changeme:changeme http://127.0.0.1:9090/zone/1
$ORIGIN .
zone.test 3600 IN SOA a.misconfigured.dns.server.invalid hostmaster.zone.test 0 10800 3600 604800 3600
zone.test 3600 IN NS ns1.zone.test
ns1.zone.test 3600 IN A 128.0.0.1
a.zone.test 300 IN A 128.0.0.2
a2.zone.test 300 IN A 128.0.0.2
a2.zone.test 300 IN A 128.0.0.3
aaaa.zone.test 300 IN AAAA fe80::42:1eff:feed:f6d6
cname.zone.test 300 IN CNAME a.zone.test
txt.zone.test 300 IN TXT "hello world"
Get metrics for prometheus of each dns zones declared in your dns server
$ curl -u changeme:changeme http://127.0.0.1:9090/metrics
# HELP pdnsexporter_zones_total Total number of zones
# TYPE pdnsexporter_zones_total counter
pdnsexporter_zones_total 4
# HELP pdnsexporter_records_total Total number of records
# TYPE pdnsexporter_records_total counter
pdnsexporter_records_total 32
...
See metrics file example.
from source
sudo python3 -c "from pdns_exporter import exporter; exporter.start_exporter();" -v
sudo python3 -m unittest -v
sudo docker build . --file Dockerfile -t pdns-exporter
Author | Denis Machard d.machard@gmail.com |
PyPI | https://pypi.org/project/python-pdns-exporter/ |
Github | https://github.com/dmachard/python-pdns-exporter |
DockerHub | https://hub.docker.com/r/dmachard/pdns-exporter |