云网牛站
所在位置:首页 > Linux云服务器 > 使用Prometheus和Grafana监视BIND DNS服务器的方法

使用Prometheus和Grafana监视BIND DNS服务器的方法

2019-02-15 21:42:59作者:叶云稿源:云网牛站

本文介绍使用Prometheus和Grafana监视BIND DNS服务器的方法,可以用来监视BIND DNS服务器的工具数量是有限的,就个人而言,我喜欢使用Grafana的Prometheus Bind导出器,同时BIND需要使用libxml2支持构建,可以使用named -V | grep libxml2.来确认,返回信息是using libxml2 version: 2.9.1,同时安装Prometheus和Grafana,参考在RHEL 8系统上安装Prometheus 2.6.0的步骤在RHEL 8系统上安装Grafana 5.4.2的步骤

 

一、安装Bind Prometheus Exporter

安装git:

sudo yum install git

对于Ubuntu运行:

sudo apt install wget

安装Go,需要在服务器上安装Go以构建bind_exporter,参考在Linux Mint 19系统中安装Go(Golang)的三种方法

一旦安装了git和Go,就下载bind_exporter:

go get github.com/digitalocean/bind_exporter

cd $GOPATH/src/github.com/digitalocean/bind_exporter

使用.make生成二进制文件:

# make

>> formatting code

>> building binaries

>   bind_exporter

>> running tests

ok   github.com/digitalocean/bind_exporter 0.099s

?   github.com/digitalocean/bind_exporter/bind [no test files]

?   github.com/digitalocean/bind_exporter/bind/auto [no test files]

?   github.com/digitalocean/bind_exporter/bind/v2 [no test files]

?   github.com/digitalocean/bind_exporter/bind/v3 [no test files]

将生成bind_exporter二进制文件,将二进制文件复制到/usr/local/bin:

chmod  +x bind_exporter

sudo mv bind_exporter  /usr/local/bin/

你可以使用bind_exporter --help打印命令选项:

# ./bind_exporter --help

Usage of ./bind_exporter:

-bind.pid-file string

 Path to Bind's pid file to export process information.

-bind.stats-groups value

 Comma-separated list of statistics to collect. Available: [server, view, tasks] (default "server,view")

-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)

-log.format value

 Set the log target and format. Example: "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true" (default "logger:stderr")

-log.level value

 Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal] (default "info")

-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")

 

二、配置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

 

三、创建绑定导出系统服务

下一部分是创建用于启动收集器的systemd服务,可以访问bind(命名)pid文件并启用view stats组。

添加Prometheus系统用户帐户:

sudo groupadd --system prometheus

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

该用户将管理导出器服务。

添加用户帐户后,创建systemd服务单元文件:

sudo vim /etc/systemd/system/bind_exporter.service

添加以下内容:

[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

重新加载systemd并启动bind_exporter服务:

sudo systemctl daemon-reload

sudo systemctl restart bind_exporter.service

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

$ sudo systemctl enable bind_exporter.service

Created symlink from /etc/systemd/system/multi-user.target.wants/bind_exporter.service to /etc/systemd/system/bind_exporter.service.

确认服务正在侦听已配置的端口9153:

# 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

 

四、配置Prometheus服务器

如果你没有正在运行的Prometheus服务器,请参考上面的文章安装,以下是我的两份工作的定义:

- 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

 

五、添加Grafana仪表板

我们将使用Cristian Calin已经创建的Grafana仪表板,仪表板ID为1666,如果还没有,请登录Grafana并添加Prometheus数据源。

添加Prometheus数据源后,通过导航到仪表板>导入来导入Bind Grafana仪表板,使用1666表示Grafana仪表板ID:

使用Prometheus和Grafana监视BIND DNS服务器的方法

为其指定一个描述性名称,然后选择之前添加的Prometheus数据源:

使用Prometheus和Grafana监视BIND DNS服务器的方法

单击导入按钮开始使用仪表板,等几分钟这样就可以显示相关的指标了,这表示目标达到,如下图:

使用Prometheus和Grafana监视BIND DNS服务器的方法

 

相关主题

采用BIND9在Ubuntu 18.04/16.04上设置Authoritative DNS Server

精选文章
热门文章