Skip to main content

Python client for dnsdist console

Project description

Python client for dnsdist console

Tool to interact with your dnsdist console from Python.

powerdns dnsdist 1.9.x powerdns dnsdist 1.8.x powerdns dnsdist 1.7.x powerdns dnsdist 1.6.x

Table of contents

Installation

python 3.12.x python 3.11.x python 3.10.x python 3.9.x python 3.8.x

This module can be installed from pypi website

pip install dnsdist_console

Generate console key

You must configure your dnsdist load balancer to accept remote connection to the console. This module can be used to generate the secret key as below.

The command in one line

python3 -c "from dnsdist_console import Key;print(Key().generate())"
OTgmgAR6zbrfrYlKgsAAJn+by4faMqI1bVCvzacXMW0=

Save-it in your /etc/dnsdist/dnsdist.conf with the setKey directive.

controlSocket('0.0.0.0:5199')
setKey("GQpEpQoIuzA6kzgwDokX9JcXPXFvO1Emg1wAXToJ0ag=")

Generate hash password

You can use this module to generate a hash for the webserver of your dnsdist. Since 1.7.0 the password should be hashed and salted.

The command in one line

python3 -c "from dnsdist_console import HashPassword as H;print(H().generate(\"bonjour\"))"
$scrypt$ln=10,p=1,r=8$SZmi+pjuZ4u7L4jhXIkLww==$VRW7BuYUjSVjkjDIK6J1VB/RWx2s4gbz+YXgflWspf8=

Run command

Configure the client with the IP address and the TCP port of your dnsdist as well as the associated secret key. If the provided key is incorrect, an exception will be raised.

from dnsdist_console import Console

console_ip = "127.0.0.1"
console_port = 5199
console_key = "GQpEpQoIuzA6kzgwDokX9JcXPXFvO1Emg1wAXToJ0ag="

console = Console(host=console_ip,
                  port=console_port, 
                  key=console_key)

Please refer to the dnsdist documentation for all available commands.

o = console.send_command(cmd="showVersion()")
print(o)
dnsdist 1.4.0

Get statistics

Use this module to extract some statistics on your dnsdist load balancer. Statistics are stored in a python dictionary.

from dnsdist_console import Statistics

s = Statistics(console=console)
print(s["global"]["queries"])
3993

# get top queries
print(s["top-queries"])
[
    {'entry': 'www.apple.com.', 'hits': '9'},
    {'entry': 'www.facebook.com.', 'hits': '3'},
    {'entry': 'www.microsoft.com.', 'hits': '3'}
]


# get top nx domain
print(s["top-nxdomain"])
[
    {'entry': 'www.nxdomain.com.', 'hits': '1'}
    
]

# get top clients
print(s["top-clients"])
[
    {'entry': '127.0.0.1', 'hits': '21'}
]

Display basic dashboard

You can use this client to display a dashboard of your dnsdist from your command line. The dashboard is updated every second.

from dnsdist_console import Dashboard

Dashboard(console=console)

Run your script and you will see something like below.

Dashboard for dnsdist

Global:
        Uptime (seconds): 47735
        Number of queries: 0
        Query per second: 0
        ACL drops: 0
        Dynamic drops: 0
        Rule drops: 0
        CPU Usage (%s): 2.8
        Cache hitrate: 0
Backends:
        #0 / 10.0.0.140:53 / -- / dns_others
                Number of queries: 0
                Query per second: 0.0
                Number of drops: 0
        #1 / 10.0.0.55:53 / -- / dns_internal
                Number of queries: 0
                Query per second: 0.0
                Number of drops: 0
        #2 / 8.8.8.8:53 / -- / dns_internet
                Number of queries: 0
                Query per second: 0.0
                Number of drops: 0
        #3 / 1.1.1.1:53 / dns_1 / --
                Number of queries: 0
                Query per second: 0.0
                Number of drops: 0

Ctrl+C to exit

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

dnsdist_console-1.5.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

dnsdist_console-1.5.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file dnsdist_console-1.5.0.tar.gz.

File metadata

  • Download URL: dnsdist_console-1.5.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for dnsdist_console-1.5.0.tar.gz
Algorithm Hash digest
SHA256 ed67ef85c90a02ccbe3f4f23896c2fe85098e5740e0ac7e5446d5e4b7d674d81
MD5 90eca225baddd3e4feb2bfe4b1089050
BLAKE2b-256 529d9330826c81fa128fdfe5c3476b4913a712e8f7b14e6b6b3668c882bd9f80

See more details on using hashes here.

File details

Details for the file dnsdist_console-1.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dnsdist_console-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4200879ef02dc7f4c1d98f51bdeac3ab3422940502b3d5b9604488212ee30075
MD5 1893fa34fe5278117e4385ccfed28e2c
BLAKE2b-256 266767243531b567cc19b2566eef8ea3562449c753ee18da7a6cc9897119038a

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