本文介绍使用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数据源:
单击导入按钮开始使用仪表板,等几分钟这样就可以显示相关的指标了,这表示目标达到,如下图:
相关主题 |