如何使用Prometheus和Grafana监视BIND DNS服务器

时间:2020-02-23 14:30:57  来源:igfitidea点击:

在这篇文章中,我们将介绍使用Prometheus Server和Grafana设置BIND DNS服务器监视以可视化绑定度量的步骤。
BIND代表"伯克利Internet名称域名"是一种开放源代码的域名服务器,它允许我们在Internet上发布DNS信息,并允许网络用户进行DNS查询。

可以用来监视BIND DNS服务器的工具数量是有限的,就我个人而言,我喜欢带有Grafana的Prometheus Bind导出器。
LibreNMS具有BIND应用程序监视功能,我打算尝试一下。

设置准备工作

已安装和配置的BIND DNS服务器BIND必须与 libxml2支持。
可以使用以下方法确认

# named -V | grep libxml2
using libxml2 version: 2.9.1

3.已安装的Prometheus –在Ubuntu/CentOS/Debian上安装Prometheus

步骤1:安装绑定Prometheus导出器

安装wget

--- Ubuntu/Debian --
$sudo apt -y install wget
--- CentOS/Fedora --
$sudo yum -y install wget

下载最新版本的bind_exporter二进制文件:

curl -s https://api.github.com/repos/prometheus-community/bind_exporter/releases/latest | grep browser_download_url | grep linux-amd64 |  cut -d '"' -f 4 | wget -qi 

这将下载适用于Linux的64位二进制版本,对于其他操作系统,请查看bind_exporter版本页面。
提取下载的文件。

tar xvf bind_exporter*.tar.gz

将提取的二进制文件移动到/usr/local/bin目录:

cd bind_exporter-*/
sudo mv bind_exporter /usr/local/bin

通过检查安装的版本来确认安装。

$bind_exporter --version
bind_exporter, version 0.3.0 (branch: HEAD, revision: c34ff3d6b4817f42e74b2b05b3797cf99683b4a9)
  build user:       Hyman@theitroad
  build date:       20170109-18:54:09
  go version:       go1.12.14

我们可以使用以下命令打印命令选项 bind_exporter --help

$bind_exporter --help
Usage of bind_exporter:
  -bind.pid-file string
    	Path to Bind's pid file to export process information. (default "/run/named/named.pid")
  -bind.stats-groups value
    	Comma-separated list of statistics to collect. Available: [server, view, tasks] (default "server,view,tasks")
  -bind.stats-url string
    	HTTP XML API address of an Bind server. (default "http://localhost:8053/")
  -bind.stats-version string
    	BIND statistics version. Can be detected automatically. Available: [xml.v2, xml.v3, auto] (default "auto")
  -bind.timeout duration
    	Timeout for trying to get stats from Bind. (default 10s)
  -version
    	Print version information.
  -web.listen-address string
    	Address to listen on for web interface and telemetry. (default ":9119")
  -web.telemetry-path string
    	Path under which to expose metrics. (default "/metrics")

步骤2:配置BIND DNS服务器

我们需要配置BIND以打开统计信息通道。
由于导出器和BIND在同一主机上,因此该端口在本地打开。
对于CentOS ISC BIND DNS服务器,请编辑该文件 /etc/named.conf添加。

statistics-channels {
  inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};

对于Ubuntu/Debian ISC BIND DNS服务器,编辑文件 /etc/bind/named.conf.options

statistics-channels {
  inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};

重新启动绑定以使更改生效

sudo systemctl restart named

步骤3:建立Bind Exporter systemd服务

下一部分是创建用于启动收集器的systemd服务,该服务可访问bind(named)pid文件并启用视图统计信息组: Prometheus系统用户帐号:

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

该用户将管理出口商服务。
添加用户帐户后,创建一个systemd服务单元文件:

sudo tee /etc/systemd/system/bind_exporter.service<<EOF
[Unit]
Description=Prometheus
Documentation=https://github.com/digitalocean/bind_exporter
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/bind_exporter \
  --bind.pid-file=/var/run/named/named.pid \
  --bind.timeout=20s \
  --web.listen-address=0.0.0.0:9153 \
  --web.telemetry-path=/metrics \
  --bind.stats-url=http://localhost:8053/\
  --bind.stats-groups=server,view,tasks
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
EOF

重新加载systemd并开始 bind_exporter服务:

sudo systemctl daemon-reload
sudo systemctl restart bind_exporter.service

启用服务以在启动时启动:

sudo systemctl enable bind_exporter.service

确认服务正在侦听端口 9153如配置

$sudo ss -tunelp | grep 9153
tcp    LISTEN     0      128      :::9153                 :::*                   users:(("bind_exporter",pid=23266,fd=3)) uid:997 ino:113951 sk:ffff8d17fab19980 v6only:0 <->

如果有,请打开防火墙上的端口 firewalld运行步:

sudo firewall-cmd --add-port=9153/tcp --permanent
sudo firewall-cmd --reload

步骤4:配置Prometheus服务器

如果我们没有正在运行的Prometheus服务器,请参阅我们之前的指南,了解如何在CentOS和Ubuntu Linux上安装Prometheus Server。
以下是我的两个工作的定义

- job_name: dns-master
    static_configs:
      - targets: ['10.1.5.3:9153']
        labels:
          alias: dns-master
  - job_name: dns-slave1
    static_configs:
      - targets: ['10.1.5.4:9153']
        labels:
          alias: dns-slave

重新开始 prometheus服务器:

sudo systemctl restart prometheus

第5步:添加Grafana信息中心

我们将使用Cristian Calin创建的Grafana仪表板。
资讯主页ID为 1666
登录Grafana并添加Prometheus数据源(如果尚未添加)。
添加Prometheus数据源后,通过导航至"仪表板">"导入"来导入"绑定Grafana仪表板"。
使用1666作为Grafana仪表板ID。

给它起一个描述性的名称,然后选择之前添加的Prometheus数据源。

单击"导入"按钮开始使用仪表板。
几分钟后,指标应开始显示。