使用Prometheus和Grafana监控OpenVPN连接

    欢迎来到我们的教程,该教程如何使用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://:9090

    请点击 保存并测试

    使用Prometheus和Grafana监控OpenVPN连接

    在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连接

    使用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的样子;

    使用Prometheus和Grafana监控OpenVPN连接

    上面显示板的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连接的指南的结尾。

    Sidebar