pdns-exporter 0.3.0

Creator: railscoder56

Last updated:

Add to Cart

Description:

pdnsexporter 0.3.0

Python PowerDNS Records Exporter

This tool can be usedto export PowerDNS records database in several ways:

bind zone format
metrics for Prometheus

Installation
PyPI
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.
Docker Hub
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



HTTP API
Security
Basic authentication method is only supported, don't forget to change the default login and password in settings.conf.
Swagger
See the swagger documentation.
Examples
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.
Development
Run
the dnstap receiver from source
sudo python3 -c "from pdns_exporter import exporter; exporter.start_exporter();" -v

Testunits
sudo python3 -m unittest -v

Build docker image
sudo docker build . --file Dockerfile -t pdns-exporter

About









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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.