Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[OpenVPN] How do you monitor Your OpenVPN-Server via Prometheus and Grafana

Posted on March 29, 2022March 30, 2022 By nim No Comments on [OpenVPN] How do you monitor Your OpenVPN-Server via Prometheus and Grafana

Sau bao ngày chạy Openvpn thì cuồi cùng đã monitor được

https://kifarunix.com/monitor-openvpn-connections-with-prometheus-and-grafana/

Contents

Toggle
  • 1) Install Golang
    • 1.1) Raspberry (chipset armvX)
    • 1.2) Ubuntu (not chipset armvX)
  • 2) Download openvpn_exporter and config
  • 3) Config on Prometheus
  • 4) Config on Grafana
  • 5) Running OpenVPN Node Exporter as a Service
  • 6) Docker

1) Install Golang

1.1) Raspberry (chipset armvX)

wget https://redirector.gvt1.com/edgedl/go/go1.15.2.linux-armv6l.tar.gz
tar -C /usr/local -xvf go1.15.2.linux-armv6l.tar.gz
export PATH=$PATH:/usr/local/go/bin

1.2) Ubuntu (not chipset armvX)

wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

2) Download openvpn_exporter and config

mkdir openvpn_exporter
wget https://github.com/kumina/openvpn_exporter/archive/v0.3.0.tar.gz
tar xzf v0.3.0.tar.gz
cd openvpn_exporter-0.3.0/
vi main.go

Bạn nhớ kiểm tra file log status của bạn ở đâu nhé

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", "/var/log/openvpn/status.log", "Paths at which OpenVPN places its status files.")
		ignoreIndividuals  = flag.Bool("ignore.individuals", false, "If ignoring metrics for individuals")
	)
	flag.Parse()

GIờ tiến hành build file.

go build -o openvpn_exporter main.go

The suggestion of @Burak Serdar to re-install Go fixed the issue.
The problem happened because I installed new version of Go on top a previous one.

Nếu bị fail
Fail to build with code Go: “redeclared in this block” [duplicate]

The solution:
1. Remove Go: rm -rvf /usr/local/go/
2. Install it again from Golang website:

cd ~/go/Downloads
// Depends on the version you download
tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
cd ~/go/src/myproj/
go build
// no errors
giờ bạn đã có file build
cp openvpn_exporter /usr/local/bin/
openvpn_exporter

Sau đó bạn truy cập vào trang web:

http://<IP-openvpn-server>:9176/metrics

Nếu bạn bị lỗi:
Failed to scrape showq socket: unexpected file contents: “OpenVPN CLIENT LIS”

https://github.com/kumina/openvpn_exporter/issues/16
bạn sẽ cần thêm "status-version 3" vào file /etc/openvpn/server.conf

status /var/log/openvpn/status.log
status-version 3

3) Config on Prometheus

  ## Add OpenVPN Node Exporter
  - job_name: 'openvpn-metrics'
    scrape_interval: 5s
    static_configs:
    - targets:
      - <IP-OpenVPN-Server>:9176

4) Config on Grafana

Bạn sẽ sài cái chart này:
For instance, we took the community dashboard from https://grafana.com/grafana/dashboards/10562 and modified it to fit our needs.

Panel plugin not found: grafana-piechart-panel

Nếu gặp lỗi trên thì:

grafana-cli plugins install grafana-piechart-panel
Bạn cần restart grafana

5) Running OpenVPN Node Exporter as a Service

vi /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

Giờ khởi động lại service

systemctl daemon-reload
systemctl enable --now openvpn_exporter.service
systemctl status openvpn_exporter
Chart tạm thời sẽ như trên bạn sẽ edit/change nếu muốn chart đẹp hơn nhé

6) Docker

To use with docker you must mount your status file to /etc/openvpn_exporter/server.status.

docker run -p 9176:9176 \
  -v /path/to/openvpn_server.status:/etc/openvpn_exporter/server.status \
  kumina/openvpn-exporter -openvpn.status_paths /etc/openvpn_exporter/server.status

Metrics should be available at http://localhost:9176/metrics.

Grafana, Log, Monitor & Tracing, Prometheus

Post navigation

Previous Post: [Linux] Remove systemd services
Next Post: [Kafka-Connect] Overwrite value of Key on Mongo Source Connector – Mongodb

More Related Articles

[Kibana] Sankey chart draw from point A to point B – So beautiful ELK
[Kafka] Kafka Console Producer CLI. Apache Kafka
[Prometheus/Grafana] Install Prometheus and Grafana on ubuntu. BareMetal
[Grafana] Draw table visualization in Grafana Prometheus
[Vector by DataDog] Use Vector to parse and convert logs to anything. Log, Monitor & Tracing
[Loadtest/vegeta] Why did I choose Vegeta to load test? I like it Coding

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Laravel] Laravel Helpful June 26, 2025
  • [VScode] Hướng dẫn điều chỉnh font cho terminal June 20, 2025
  • [WordPress] Hướng dấn gửi mail trên WordPress thông qua gmail. June 15, 2025
  • [Bitbucket] Git Clone/Pull/Push with Bitbucket through API Token. June 12, 2025
  • [Teamcity] How to transfer the value from pipeline A to pipeline B June 9, 2025

Archives

  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.