dns-exporter


Namedns-exporter JSON
Version 1.0.0 PyPI version JSON
download
home_page
SummaryMulti-target Prometheus exporter with an exclusive focus on DNS monitoring
upload_time2024-03-07 06:33:57
maintainer
docs_urlNone
authorThomas Steen Rasmussen
requires_python>=3.9
licenseBSD 3-Clause License
keywords prometheus dns monitoring
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Run Tox CI](https://github.com/tykling/dns_exporter/actions/workflows/tox.yml/badge.svg?branch=main)](https://github.com/tykling/dns_exporter/actions/workflows/tox.yml)
[![Documentation Status](https://readthedocs.org/projects/dns-exporter/badge/?version=latest)](https://dns-exporter.readthedocs.io/latest/)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![codecov](https://codecov.io/gh/tykling/dns_exporter/graph/badge.svg?token=OKP40B9H10)](https://codecov.io/gh/tykling/dns_exporter)
[![PyPI version](https://badge.fury.io/py/dns-exporter.svg)](https://pypi.org/project/dns-exporter/)
[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/tykling/dns_exporter)](https://hub.docker.com/r/tykling/dns_exporter)

# dns_exporter
`dns_exporter` is a [multi-target](https://prometheus.io/docs/guides/multi-target-exporter/) [Prometheus](https://prometheus.io/) exporter with an exclusive focus on DNS monitoring. It is built on the excellent libraries [dnspython](https://github.com/rthalley/dnspython) and [the Prometheus Python client library](https://github.com/prometheus/client_python).

`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](https://prometheus.io/) and [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) to notify you if something stops working.

`dns_exporter` works similar to the [Blackbox exporter](https://github.com/prometheus/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](https://prometheus.io/docs/guides/multi-target-exporter/). 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` 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`


# Documentation
The documentation is available on [ReadTheDocs](https://dns-exporter.readthedocs.io/latest/)

# Grafana Dashboard
There is a [Grafana dashboard](https://grafana.com/grafana/dashboards/20617-dns-exporter/) you can use as a starting point for your own dashboards.

# Fancy Repo Activity Graphics
![Alt](https://repobeats.axiom.co/api/embed/3c531c8db07c5982061d4c6e800238c7ddf8ab59.svg "Repobeats analytics image")

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "dns-exporter",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "prometheus,dns,monitoring",
    "author": "Thomas Steen Rasmussen",
    "author_email": "thomas@gibfest.dk",
    "download_url": "https://files.pythonhosted.org/packages/85/22/57fa1f3e146757bcf9c457b0a06fa559637a1d4462e089e45c3d8b4387d8/dns_exporter-1.0.0.tar.gz",
    "platform": null,
    "description": "[![Run Tox CI](https://github.com/tykling/dns_exporter/actions/workflows/tox.yml/badge.svg?branch=main)](https://github.com/tykling/dns_exporter/actions/workflows/tox.yml)\n[![Documentation Status](https://readthedocs.org/projects/dns-exporter/badge/?version=latest)](https://dns-exporter.readthedocs.io/latest/)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![codecov](https://codecov.io/gh/tykling/dns_exporter/graph/badge.svg?token=OKP40B9H10)](https://codecov.io/gh/tykling/dns_exporter)\n[![PyPI version](https://badge.fury.io/py/dns-exporter.svg)](https://pypi.org/project/dns-exporter/)\n[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/tykling/dns_exporter)](https://hub.docker.com/r/tykling/dns_exporter)\n\n# dns_exporter\n`dns_exporter` is a [multi-target](https://prometheus.io/docs/guides/multi-target-exporter/) [Prometheus](https://prometheus.io/) exporter with an exclusive focus on DNS monitoring. It is built on the excellent libraries [dnspython](https://github.com/rthalley/dnspython) and [the Prometheus Python client library](https://github.com/prometheus/client_python).\n\n`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](https://prometheus.io/) and [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) to notify you if something stops working.\n\n`dns_exporter` works similar to the [Blackbox exporter](https://github.com/prometheus/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](https://prometheus.io/docs/guides/multi-target-exporter/). 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.\n\nThis 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` and `DoQ`.\n\n# Installation\n`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:\n\n`pip install dns_exporter`\n\nThere is also a Docker image so you can get your container on:\n\n`docker run -p 15353:15353 tykling/dns_exporter:latest`\n\n\n# Documentation\nThe documentation is available on [ReadTheDocs](https://dns-exporter.readthedocs.io/latest/)\n\n# Grafana Dashboard\nThere is a [Grafana dashboard](https://grafana.com/grafana/dashboards/20617-dns-exporter/) you can use as a starting point for your own dashboards.\n\n# Fancy Repo Activity Graphics\n![Alt](https://repobeats.axiom.co/api/embed/3c531c8db07c5982061d4c6e800238c7ddf8ab59.svg \"Repobeats analytics image\")\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License",
    "summary": "Multi-target Prometheus exporter with an exclusive focus on DNS monitoring",
    "version": "1.0.0",
    "project_urls": {
        "documentation": "https://dnsexporter.readthedocs.org/",
        "homepage": "https://github.com/tykling/dns_exporter"
    },
    "split_keywords": [
        "prometheus",
        "dns",
        "monitoring"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e8665f21b52dad67a30953a725edfb184374668edb938bfaf10a75823ceccc0f",
                "md5": "535e9102454967fb212fddae46442901",
                "sha256": "7b9f9221b353d874ecb51446bf8d47b77d93162463d62f45c36c6002106f6d48"
            },
            "downloads": -1,
            "filename": "dns_exporter-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "535e9102454967fb212fddae46442901",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 29826,
            "upload_time": "2024-03-07T06:33:55",
            "upload_time_iso_8601": "2024-03-07T06:33:55.745028Z",
            "url": "https://files.pythonhosted.org/packages/e8/66/5f21b52dad67a30953a725edfb184374668edb938bfaf10a75823ceccc0f/dns_exporter-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "852257fa1f3e146757bcf9c457b0a06fa559637a1d4462e089e45c3d8b4387d8",
                "md5": "7b011c304a32caa65c60cec9b0c81934",
                "sha256": "122c249da5ba9d5b98f56bf233f2c5beb1e160717305d04a5d3a51b587edf5ce"
            },
            "downloads": -1,
            "filename": "dns_exporter-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7b011c304a32caa65c60cec9b0c81934",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 58554,
            "upload_time": "2024-03-07T06:33:57",
            "upload_time_iso_8601": "2024-03-07T06:33:57.364414Z",
            "url": "https://files.pythonhosted.org/packages/85/22/57fa1f3e146757bcf9c457b0a06fa559637a1d4462e089e45c3d8b4387d8/dns_exporter-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-07 06:33:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tykling",
    "github_project": "dns_exporter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "dns-exporter"
}
        
Elapsed time: 0.20753s