Skip to main content

PowerDNS records exporter

Project description

Python PowerDNS Records Exporter

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

  • to 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdns_exporter-0.1.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

pdns_exporter-0.1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file pdns_exporter-0.1.0.tar.gz.

File metadata

  • Download URL: pdns_exporter-0.1.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for pdns_exporter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1a5f4a7c5ff5315725749d6dff5cbe10bfaecfe5a096a063636d5915c4f7207a
MD5 4e24d71695ead895c4369d5b37b31e8e
BLAKE2b-256 285e64ceaded58342e50b059af6ce6f6d7d7d3151cbdad3f49c80d4319e11bba

See more details on using hashes here.

File details

Details for the file pdns_exporter-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pdns_exporter-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for pdns_exporter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c2aaab55c73edddd5cdc12951d8a21f15c65d301f150c69b00423678f5bbbc9c
MD5 e6e5cadb5498bc7e8021f08d6d670892
BLAKE2b-256 e4094ace03170bf9f18ab504543f9d34eae0b078165469aa9505fdbfb1bbfca6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page