Valerter

Valerter

Real-time log alerting for VictoriaLogs with full log context in notifications.

CI codecov License Rust 1.85+

What is Valerter?

Valerter streams logs from VictoriaLogs in real-time and sends notifications with the actual log line plus extracted context (host, site, service, port, user, etc.). The goal is to put the key debugging context in the alert itself (full log line + fields), so you can start investigating right away.

Pipeline: VictoriaLogs → Parse → Throttle → Template → Notify

Why Valerter?

Some alerts are about trends (“how many errors over 5 minutes”). Others are about a critical event that just happened and requires immediate action.

Valerter is built for the second category: must-not-miss events where you want the full raw log line and enough context to act immediately—without jumping into a log explorer first.

When Valerter is the right tool

Use Valerter when the question is:

Examples:

  Valerter
Mode Real-time streaming
VictoriaLogs API /tail
Alert content Full log line + extracted context
Typical latency < 5 seconds

See Cisco Switches example for a complete implementation.

Features

Quick Start

Debian/Ubuntu (.deb)

# Install
curl -LO https://github.com/fxthiry/valerter/releases/latest/download/valerter_latest_amd64.deb
sudo dpkg -i valerter_latest_amd64.deb

# Configure
sudo vim /etc/valerter/config.yaml

# Start
sudo systemctl start valerter
sudo systemctl enable valerter

Static Binary

# Download (x86_64, or aarch64 for ARM)
curl -LO https://github.com/fxthiry/valerter/releases/latest/download/valerter-linux-x86_64.tar.gz
tar -xzf valerter-linux-x86_64.tar.gz
cd valerter-linux-x86_64

# Validate and run
./valerter --validate -c config.example.yaml
./valerter -c config.example.yaml

For production installation with systemd, see Getting Started.

Example configuration:

victorialogs:
  url: "http://victorialogs:9428"

notifiers:
  mattermost-ops:
    type: mattermost
    webhook_url: "https://mattermost.example.com/hooks/your-webhook-id"

defaults:
  throttle:
    count: 5
    window: 60s
  timestamp_timezone: "UTC"

templates:
  error_alert:
    title: "Error detected"
    body: ""

rules:
  - name: "error_logs"
    query: '_msg:~"(error|failed|critical)"'
    parser:
      regex: '(?P<message>.*)'
    notify:
      template: "error_alert"
      destinations:
        - "mattermost-ops"

Documentation

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

License

Apache License 2.0 — See LICENSE for details.