openvpn

package
v0.54.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2023 License: GPL-3.0 Imports: 7 Imported by: 1

README

OpenVPN collector

Overview

OpenVPN is an open-source commercial software that implements virtual private network techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.

This collector monitors one or more OpenVPN servers, depending on your configuration.

It uses OpenVPN Management Interface to collect metrics.

Collected metrics

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

global

These metrics refer to the entire monitored application.

This scope has no labels.

Metrics:

Metric Dimensions Unit
openvpn.active_clients clients clients
openvpn.total_traffic in, out kilobits/s
user

These metrics refer to the VPN user.

Labels:

Label Description
username VPN username

Metrics:

Metric Dimensions Unit
openvpn.user_traffic in, out kilobits/s
openvpn.user_connection_time time seconds

Setup

Prerequisites
Enable in go.d.conf.

This collector is disabled by default. You need to explicitly enable it in go.d.conf.

From the documentation for the OpenVPN Management Interface:

Currently, the OpenVPN daemon can at most support a single management client any one time.

It is disabled to not break other tools which use Management Interface.

Configuration
File

The configuration file name is go.d/openvpn.conf.

The file format is YAML. Generally, the format is:

update_every: 1
autodetection_retry: 0
jobs:
  - name: some_name1
  - name: some_name1

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/openvpn.conf
Options

The following options can be defined globally: update_every, autodetection_retry.

Config options
Name Description Default Required
update_every Data collection frequency. 1
autodetection_retry Re-check interval in seconds. Zero means not to schedule re-check. 0
address Server address in IP:PORT format. 127.0.0.1:7505 yes
per_user_stats User selector. Determines which user metrics will be collected.
connect_timeout Connection timeout in seconds. The timeout includes name resolution, if required. 2
read_timeout Read timeout in seconds. Sets deadline for read calls. 2
write_timeout Write timeout in seconds. Sets deadline for write calls. 2
per_user_stats

Metrics of users matching the selector will be collected.

  • Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)
  • Pattern syntax: matcher.
  • Syntax:
    per_user_stats:
      includes:
        - pattern1
        - pattern2
      excludes:
        - pattern3
        - pattern4
    
Examples
Basic

A basic example configuration.

Config
jobs:
  - name: local
    address: 127.0.0.1:7505
With user metrics

Collect metrics of all users.

Config
jobs:
  - name: local
    address: 127.0.0.1:7505
    per_user_stats:
      includes:
        - "* *"
Multi-instance

Note: When you define multiple jobs, their names must be unique.

Collecting metrics from local and remote instances.

Config
jobs:
  - name: local
    address: 127.0.0.1:7505

  - name: remote
    address: 203.0.113.0:7505

Troubleshooting

Debug mode

To troubleshoot issues with the openvpn collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

  • Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the plugins setting under [directories].

    cd /usr/libexec/netdata/plugins.d/
    
  • Switch to the netdata user.

    sudo -u netdata -s
    
  • Run the go.d.plugin to debug the collector:

    ./go.d.plugin -d -m openvpn
    

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Charts

type Charts = module.Charts

Charts is an alias for module.Charts

type Config

type Config struct {
	Address        string
	ConnectTimeout web.Duration       `yaml:"connect_timeout"`
	ReadTimeout    web.Duration       `yaml:"read_timeout"`
	WriteTimeout   web.Duration       `yaml:"write_timeout"`
	PerUserStats   matcher.SimpleExpr `yaml:"per_user_stats"`
}

Config is the OpenVPN module configuration.

type Dims

type Dims = module.Dims

Dims is an alias for module.Dims

type OpenVPN

type OpenVPN struct {
	module.Base
	Config `yaml:",inline"`
	// contains filtered or unexported fields
}

OpenVPN OpenVPN module.

func New

func New() *OpenVPN

New creates OpenVPN with default values.

func (OpenVPN) Charts

func (o OpenVPN) Charts() *Charts

Charts creates Charts.

func (*OpenVPN) Check

func (o *OpenVPN) Check() bool

Check makes check.

func (*OpenVPN) Cleanup

func (o *OpenVPN) Cleanup()

Cleanup makes cleanup.

func (*OpenVPN) Collect

func (o *OpenVPN) Collect() map[string]int64

Collect collects metrics.

func (*OpenVPN) Init

func (o *OpenVPN) Init() bool

Init makes initialization.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL