写在开头

  • 本教程同样适用于服务器监控以及其他BGP网络的监控
  • 本教程只是分享自己的方案,不一定适用于其他场景
  • 咱是 AS4242423396,欢迎来Peer

需要用到的软件

  • Prometheus: 用于收集其他程序的数据
  • Grafana: 用于展示Prometheus的数据
  • Bird_Exporter: 用于收集来自Bird的数据
  • node_exporter: 用于收集各个节点的基础信息

搭建过程

核心部分

prometheus 和 grafana 都可以直接使用Docker运行,具体命令如下:

1
2
3
4
# 启动 prometheus
$ docker run -d -p 9090:9090 -v /etc/prometheus:/opt/prometheus/config -v /opt/prometheus/data:/prometheus prom/prometheus
# 启动 grafana
$ docker run -d -p 3000:3000 -v /var/lib/grafana:/opt/grafana grafana/grafana

这里需要注意一点,Prometheus默认是没有任何鉴权的,所以请注意配置一下防火墙

节点部分

node_exporter因为需要收集完整的系统信息,直接在系统中运行可以省去很多配置工作,所以我们可以直接在系统中运行node_exporter

首先前往 node_exporter 下载安装

下载完成后直接解压就可以使用了,适当配置一下Service和防火墙即可

bird_exporter 也是同理,前往 bird_exporter 下载安装即可

PowerDNS

PowerDNS自带一个metrics,直接在配置文件中启用即可

配置Prometheus

以下是我的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
global:
scrape_interval: 15s
evaluation_interval: 15s

scrape_configs:
# 监控自己
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
# PowerDNS监控
- job_name: "dn42-nameserver"
scheme: https
metrics_path: /metrics
static_configs:
- targets: ['xxx.xxx.xxx.xxx:443']
# bird监控
- job_name: "dn42-bird"
scheme: https
metrics_path: /metrics
# 为了避免每次新增或减少服务器都需要修改配置,所以使用了最简单的HTTP服务发现
http_sd_configs:
# 填写你自己的url即可,具体内容我会放在后面
- url: "https://example.com/xxx.json"
refresh_interval: 10s
# 同上,这里填写的是 node_exporter
- job_name: "dn42-nodes"
scheme: https
metrics_path: /metrics
http_sd_configs:
- url: "https://example.com/xxx.json"
refresh_interval: 10s

服务发现配置,labels中可以填写任意内容,可以用Grafana展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
{
"targets": [
"example1.com:443"
],
"labels": {
"id": "node-1"
}
},
{
"targets": [
"example2.com:443"
],
"labels": {
"id": "node-2"
}
},
]

仪表盘配置

我的建议是去Grafana社区抄一个

额外内容

  • 安装和Prometheus配套运行的Alertmanager,可以通过它配置监控告警;也可以直接使用Grafana配置告警