All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Template field
body_htmlrenamed toemail_body_htmlto reflect that only the email notifier consumes it (Telegram, Mattermost, and webhook always ignored it). Migration: in every template, replacebody_html:withemail_body_html:. This applies to templates defined inline inconfig.yamland to any split files undertemplates.d/. Configs using the old name are rejected at load time with a clear error that listsemail_body_htmlamong the expected fields, sovalerter --validatewill point out every template that needs updating on the first run.
- Dotted field access in templates (issue #25) — fields like
server.hostnameorhttp.request.methodcan now be referenced directly in Jinja templates using dotted notation, matching the shape users see in log payloads. - Empty Telegram message guard (issue #26) — Telegram no longer 400s when a
rendered body is empty. The notifier now substitutes a fallback string and
records the drop reason, and the template documentation explicitly calls out
that
body_html(nowemail_body_html) is email-only so users do not accidentally leavebodyempty.
1.1.0 - 2026-04-15
- Telegram notifier (issue #22) — native
type: telegramnotifier using the Bot APIsendMessageendpoint. Supports multi-chat delivery (one sequential HTTP call perchat_id), HTMLparse_modeby default, 429Retry-Afterhandling, automatic codepoint-safe truncation at Telegram's 4096 character limit, and a newvalerter_alerts_truncated_totalPrometheus counter.
- Templates define a single
bodyfield that is shared across all notifiers. If you write a Markdown-flavored body (e.g.**bold**, triple-backtick fences) for Mattermost, Telegram will render those markers literally because it is configured withparse_mode: HTML. Workaround: overridebody_templateon the Telegram notifier with HTML-friendly Jinja, for examplebody_template: "<b>{{ title|e }}</b>\n<pre>{{ body|e }}</pre>". A proper render-pipeline-per-notifier abstraction is planned for 1.2.
1.0.0 - 2026-04-14
Promote 1.0.0-rc.5 to stable. No functional changes.
- Dependency updates via
cargo updateto pick up patched versions:aws-lc-sys0.35.0 → 0.39.1 (GHSA advisories on AWS-LC crypto/x509)quinn-proto0.11.13 → 0.11.14 (QUIC transport parameter DoS)rustls-webpki0.103.8 → 0.103.11 (CRL scope check)bytes1.11.0 → 1.11.1 (BytesMut::reserveinteger overflow)
1.0.0-rc.5 - 2026-01-20
Final RC - Hardening and observability improvements before 1.0.0 stable.
- TCP keepalive - Prevents silent connection drops on long-lived VictoriaLogs streams (60s keepalive on reqwest client)
- StreamBuffer size limit - 1MB max line size with
valerter_lines_discarded_total{reason=oversized}metric to prevent OOM from malformed input - Strict config validation -
deny_unknown_fieldsrejects typos, URL format validation for VictoriaLogs and webhook endpoints - Rust load-generator - High-performance testing tool achieving 100k logs/sec for stress testing
- Comprehensive debug logging - Strategic debug/trace logs across all modules for troubleshooting
- Performance test suite - Load testing scripts and documented results (10k+ logs/sec sustained)
- Tracing span propagation - Use
instrument()for async-safe span propagation in all notifier functions (engine, queue, mattermost, webhook, email) - Notification success logging - Promoted from debug to info level for production visibility
- Metrics label cleanup - Removed unused
rule_namelabel fromalerts_dropped_total(global metric, not per-rule) - RUST_LOG support - Now properly respects environment variable for log filtering
- Documentation overhaul - Rewrote README "Why Valerter" section, updated metrics docs with
valerter_email_recipient_errors_totalandvalerter_notifier_config_errors_total, added performance report
1.0.0-rc.4 - 2026-01-16
Feature freeze - From this release, only bug fixes until 1.0.0 stable. No new features or refactoring.
- Multi-file configuration - Split rules, templates, and notifiers into separate files in
.d/directories (rules.d/,templates.d/,notifiers.d/) - Collision detection - Explicit errors when duplicate names are found across config files
- Warning for unused mattermost_channel - Warns when
mattermost_channelis set but no Mattermost notifier in destinations
- BREAKING:
notify.templaterequired - Each rule must now specify its template explicitly (no moredefaults.notify.templatefallback) - BREAKING:
notify.destinationsrequired - Each rule must specify at least one destination - BREAKING:
defaults.notifyremoved - The entiredefaults.notifysection has been removed - BREAKING:
notifierssection required - At least one notifier must be configured - BREAKING:
templatessection required - At least one template must be defined - BREAKING:
MATTERMOST_WEBHOOKenv var removed - Usenotifierssection instead - BREAKING:
notify.channelrenamed - Nownotify.mattermost_channelfor clarity - Strict field validation - Unknown fields in
notifysection now cause parsing errors
- Debian package - Creates
.d/directories on install
1.0.0-rc.3 - 2026-01-15
- Simplified tarball - Contains only binary + config.example.yaml (removed install.sh, uninstall.sh, valerter.service)
- Updated Quick Start - Clear separation between .deb and static binary installation paths
1.0.0-rc.2 - 2026-01-15
- Log timestamp in notifications - Original log timestamp now included in all channels (Mattermost footer, Email template, Webhook payload)
- Configurable timezone - New
timestamp_timezonesetting for formatted timestamps (default: UTC) - Cisco switches example - Complete alerting example for BPDU Guard violations in
examples/cisco-switches/ - Nginx proxy documentation - Required configuration for streaming endpoints (
proxy_buffering off)
- VictoriaLogs streaming connection - Use HTTP GET instead of POST for
/select/logsql/tailendpoint - Email Outlook compatibility - Simplified template with better rendering across email clients
- Metric description -
valerter_victorialogs_upnow correctly documented as connection status
- Refactored config module - Split monolithic
config.rsinto focused submodules - Refactored notify module - Split monolithic
notify.rsinto focused submodules
1.0.0-rc.1 - 2026-01-14
- Email body template system - HTML email templates with
body_htmlfield - Default email template - Built-in
templates/default-email.html.j2 - Fail-fast validation - Startup error if email destination uses template without
body_html - Modular documentation - New
docs/folder with detailed guides (getting-started, configuration, notifiers, metrics, architecture)
- Metrics recorder race condition - Resolved startup race in Prometheus recorder initialization
- BREAKING:
color→accent_color- Template field renamed for clarity - BREAKING:
iconremoved - Template field no longer supported - README refactored - Reduced from 445 to ~110 lines, now a showcase with links to docs/
- Pipeline diagram - Mermaid replaced with static SVG (no overlay controls)
1.0.0-beta.1 - 2025-01-14
valerter_build_infometric - Exposes version label for Prometheus dashboards- CHANGELOG.md - Document all changes following Keep a Changelog format
- Debian package auto-restart - Service now automatically restarts on upgrade if running
- CI optimization - Skip CI for documentation and asset-only changes (
.md, images)
1.0.0-alpha.2 - 2025-01-14
- 6 new Prometheus metrics for self-monitoring:
valerter_alerts_passed_total- alerts that passed throttlingvalerter_rule_panics_total- rule task panics (auto-restarted)valerter_rule_errors_total- fatal rule errorsvalerter_last_query_timestamp- timestamp of last successful queryvalerter_victorialogs_up- VictoriaLogs connection statusvalerter_query_duration_seconds- query latency histogram
- Official logo with SVG/PNG variants (light, dark, inverted, lockup)
- Example Prometheus alerts in README for monitoring valerter itself
- "Why Valerter?" section in README comparing with vmalert
- Simplified installation:
valerter_latest_amd64.debnow available via/releases/latest/download/ - README header with centered logo and badges (License, Rust version)
1.0.0-alpha.1 - 2025-01-12
- Initial alpha release
- Real-time log streaming from VictoriaLogs
/tailAPI - Multi-channel notifications: Mattermost, Email SMTP, Generic Webhook
- Declarative YAML configuration with regex/JSON parsing
- Intelligent throttling with configurable rate limiting per key
- Prometheus metrics endpoint (
/metrics) - Debian package (.deb) and tarball releases
- systemd service integration