使用Prometheus和Grafana监控OpenVPN连接
WhatsApp的
欢迎来到我们的教程,该教程如何使用Prometheus和Grafana监视OpenVPN连接。 格拉法纳 是一种数据可视化和监视工具,支持时间序列数据存储,例如Graphite,InfluxDB,Prometheus,Elasticsearch。 普罗米修斯 另一方面是一个开源系统和服务监视工具。它以给定的时间间隔通过HTTP调用从已配置目标中收集指标,评估规则表达式,显示结果,并在满足某些条件时触发警报。 Grafana可用于更好地可视化Prometheus收集的指标。但是,在此设置中,我们将学习如何使用Prometheus收集OpenVPN连接指标并在Grafana上进行可视化。
使用Prometheus和Grafana监控OpenVPN连接
在本教程中,我们将使用Ubuntu 20.04系统进行演示实验室。随时使用其他操作系统。
为了监视与Prometheus和Grafana的OpenVPN连接,我们将分别安装和设置监视的每个组件。
在Ubuntu 20.04上安装Prometheus
在先前的指南中,我们介绍了在Ubuntu 20.04上安装Prometheus的方法。请点击以下链接在Ubuntu 20.04上安装和设置Prometheus;
在Ubuntu 20.04上安装和设置Prometheus
您也可以改用CentOS 8。
在CentOS 8上安装和配置Prometheus
在Ubuntu 20.04上安装Grafana
按照下面的链接在Ubuntu 20.04上安装Grafana;
在Ubuntu 20.04上安装Grafana
是否要使用CentOS?请点击以下链接在CentOS 8上设置Grafana。
在CentOS 8上安装最新的Grafana
将Grafana与Prometheus集成
一旦Grafana和Prometheus都到位,您就可以配置Grafana从Prometheus获取指标。
systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-09-21 17:01:07 UTC; 5min ago
Docs: http://docs.grafana.org
Main PID: 14610 (grafana-server)
Tasks: 8 (limit: 2282)
Memory: 18.0M
CGroup: /system.slice/grafana-server.service
└─14610 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/l>
Sep 21 17:02:16 ubuntu20 grafana-server[14610]: t=2020-09-21T17:02:16+0000 lvl=info msg="Executing migration" logger=migrator id="create cache_data table"
...
systemctl status prometheus
● prometheus.service - Prometheus Time Series Collection and Processing Server
Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-09-21 16:35:03 UTC; 32min ago
Main PID: 2464 (prometheus)
Tasks: 8 (limit: 2282)
Memory: 27.6M
CGroup: /system.slice/prometheus.service
└─2464 /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus>
Sep 21 16:35:03 ubuntu20 prometheus[2464]: level=info ts=2020-09-21T16:35:03.205Z caller=head.go:644 component=tsdb msg="Replaying on-disk memory
...
ss -altnp | grep -E ":3000|:9090"
LISTEN 0 4096 *:9090 *:* users:(("prometheus",pid=2464,fd=10))
LISTEN 0 4096 *:3000 *:* users:(("grafana-server",pid=14610,fd=8))
要将Grafana与Prometheus集成,您需要将Prometheus数据源添加到Grafana。
可以通过登录Grafana Web界面并导航到 组态 (像齿轮一样的齿轮)> 数据源 > 添加数据源。
从数据源类型中,选择Prometheus。这将打开Prometheus数据源配置页面。
输入Prometheus服务器URL。如果您在同一台服务器上运行Grafana和Prometheus,请使用该地址 http://本地主机:9090 否则,请使用地址 http://
请点击 保存并测试。
在OpenVPN服务器上安装OpenVPN Prometheus节点导出器
接下来,您需要在OpenVPN服务器上安装OpenVPN节点导出器。
我们已经介绍了如何安装和配置OpenVPN和OpenVPN客户端。
在Ubuntu 20.04上安装和设置OpenVPN Server
在CentOS 8 / Ubuntu 18.04上安装和配置OpenVPN Client
在CentOS 8上设置OpenVPN服务器
在此设置中,我们的OpenVPN服务器在CentOS 8系统上运行。因此,我们需要在CentOS 8 OpenVPN服务器上安装OpenVPN节点导出器。适用于Prometheus的OpenVPN Exporter是一个托管在Github上的开源项目,由 久名。所有功劳归功于该出口商的创建者。
您可以将导出器运行为 码头集装箱 或一个 独立可执行二进制文件。
在此设置中,我们在托管vpn服务器的Centos 8服务器上将其作为独立的可执行二进制文件运行。
在CentOS 8上安装Go
从以下位置下载Go tarball进行安装 前往下载页面。
wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
将其解压缩到/ usr / local中,在/ usr / local / go中创建一个Go树。
tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
将/ usr / local / go / bin添加到 PATH
环境变量。
vim .bashrc_profile
... # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/local/go/bin export PATH
源文件以使更改生效。
source .bash_profile
现在应该在您的PATH上。
下载OpenVPN节点导出器
从以下位置下载OpenVPN节点导出器 Github发布页面。
wget https://github.com/kumina/openvpn_exporter/archive/v0.3.0.tar.gz
提取它;
tar xzf v0.3.0.tar.gz
接下来,构建OpenVPN节点导出器;
cd openvpn_exporter-0.3.0/
设置OpenVPN服务器状态日志文件的路径;
vim main.og
... func main() { var ( listenAddress = flag.String("web.listen-address", ":9176", "Address to listen on for web interface and telemetry.") metricsPath = flag.String("web.telemetry-path", "/metrics", "Path under which to expose metrics.") // openvpnStatusPaths = flag.String("openvpn.status_paths", "examples/client.status,examples/server2.status,examples/server3.status", "Paths at which OpenVPN places its status files.") openvpnStatusPaths = flag.String("openvpn.status_paths", "/var/log/openvpn/openvpn-status.log", "Paths at which OpenVPN places its status files.") ...
保存并退出文件。
现在建立出口商;
go build -o openvpn_exporter main.go
这将创建Prometheus OpenVPN节点导出程序二进制文件, openvpn_eporter
,在当前目录中。将二进制文件复制到/ usr / local / bin二进制路径。
cp openvpn_eporter /usr/local/bin/
默认情况下,导出器侦听TCP端口9176,因此您需要在防火墙上打开此端口。
firewall-cmd --add-port=9176/tcp --permanent firewall-cmd --reload
以独立模式运行导出器以对其进行测试;
openvpn_exporter
2020/09/21 23:37:50 Starting OpenVPN Exporter
2020/09/21 23:37:50 Listen address: :9176
2020/09/21 23:37:50 Metrics path: /metrics
2020/09/21 23:37:50 openvpn.status_path: /var/log/openvpn/openvpn-status.log
2020/09/21 23:37:50 Ignore Individuals: false
配置Prometheus来抓取OpenVPN Node导出程序指标;
vim /etc/prometheus/prometheus.yml
... # The job name is added as a label `job=` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] ## Add OpenVPN Node Exporter - job_name: 'openvpn-metrics' scrape_interval: 5s static_configs: - targets: ['192.168.60.6:9176']
重新启动Prometheus;
systemctl restart prometheus
检查普罗米修斯目标, http://server-IP:9090/targets
。
使用Prometheus和Grafana监控OpenVPN连接
在Grafana上创建OpenVPN Node Exporter可视化
您可以创建自己的可视化仪表板,也可以利用社区创建的仪表板。例如,我们使用 Grafana社区的Grafana OpenVPN节点导出器可视化仪表板。
要导入此仪表板,请导航至 http://grafana-server-IP:3000/dashboard/import
。
粘贴仪表板ID或JSON文件,然后加载并导入。
例如,我们从 https://grafana.com/grafana/dashboards/10562
并对其进行了修改以满足我们的需求。
修改完上述仪表板后,这就是我们简单的OpenVPN连接dashabaord的样子;
上面显示板的JSON文件位于 Google云端硬碟。仪表板需要饼图插件。
通过执行以下命令安装Grafana饼图插件。
grafana-cli plugins install grafana-piechart-panel
运行OpenVPN Node Exporter即服务
为OpenVPN Prometheus节点导出器创建systemd服务。
vim /etc/systemd/system/openvpn_exporter.service
[Unit]
Description=Prometheus OpenVPN Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/openvpn_exporter
[Install]
WantedBy=multi-user.target
重新加载systemd Manager配置。
systemctl daemon-reload
启动并启用Node Exporter以在系统引导上运行。
systemctl enable --now openvpn_exporter.service
检查状态;
systemctl status openvpn_exporter
● openvpn_exporter.service - Prometheus OpenVPN Node Exporter
Loaded: loaded (/etc/systemd/system/openvpn_exporter.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-09-22 22:56:01 EAT; 13s ago
Main PID: 5391 (openvpn_exporte)
Tasks: 4 (limit: 23968)
Memory: 9.1M
CGroup: /system.slice/openvpn_exporter.service
└─5391 /usr/local/bin/openvpn_exporter
Sep 22 22:56:01 centos8.kifarunix-demo.com systemd[1]: Stopped Prometheus OpenVPN Node Exporter.
Sep 22 22:56:01 centos8.kifarunix-demo.com systemd[1]: Started Prometheus OpenVPN Node Exporter.
Sep 22 22:56:01 centos8.kifarunix-demo.com openvpn_exporter[5391]: 2020/09/22 22:56:01 Starting OpenVPN Exporter
Sep 22 22:56:01 centos8.kifarunix-demo.com openvpn_exporter[5391]: 2020/09/22 22:56:01 Listen address: :9176
Sep 22 22:56:01 centos8.kifarunix-demo.com openvpn_exporter[5391]: 2020/09/22 22:56:01 Metrics path: /metrics
Sep 22 22:56:01 centos8.kifarunix-demo.com openvpn_exporter[5391]: 2020/09/22 22:56:01 openvpn.status_path: /var/log/openvpn/openvpn-status.log
Sep 22 22:56:01 centos8.kifarunix-demo.com openvpn_exporter[5391]: 2020/09/22 22:56:01 Ignore Individuals: false
您的OpenVPN连接状态应自动取消。
这标志着我们指南中有关如何使用Prometheus和Grafana监视OpenVPN连接的指南的结尾。
。