274 lines
7.7 KiB
Markdown
274 lines
7.7 KiB
Markdown
# Environment Variables
|
|
|
|
Configure LogWisp through environment variables for containerized deployments.
|
|
|
|
## Naming Convention
|
|
|
|
- **Prefix**: `LOGWISP_`
|
|
- **Path separator**: `_` (underscore)
|
|
- **Array indices**: Numeric suffix (0-based)
|
|
- **Case**: UPPERCASE
|
|
|
|
Examples:
|
|
- `logging.level` → `LOGWISP_LOGGING_LEVEL`
|
|
- `pipelines[0].name` → `LOGWISP_PIPELINES_0_NAME`
|
|
|
|
## General Variables
|
|
|
|
```bash
|
|
LOGWISP_CONFIG_FILE=/etc/logwisp/config.toml
|
|
LOGWISP_CONFIG_DIR=/etc/logwisp
|
|
LOGWISP_BACKGROUND=true
|
|
LOGWISP_QUIET=true
|
|
LOGWISP_DISABLE_STATUS_REPORTER=true
|
|
LOGWISP_CONFIG_AUTO_RELOAD=true
|
|
LOGWISP_CONFIG_SAVE_ON_EXIT=true
|
|
```
|
|
|
|
### `LOGWISP_CONFIG_FILE`
|
|
Configuration file path.
|
|
```bash
|
|
export LOGWISP_CONFIG_FILE=/etc/logwisp/config.toml
|
|
```
|
|
|
|
### `LOGWISP_CONFIG_DIR`
|
|
Configuration directory.
|
|
```bash
|
|
export LOGWISP_CONFIG_DIR=/etc/logwisp
|
|
export LOGWISP_CONFIG_FILE=production.toml
|
|
```
|
|
|
|
### `LOGWISP_ROUTER`
|
|
Enable router mode.
|
|
```bash
|
|
export LOGWISP_ROUTER=true
|
|
```
|
|
|
|
### `LOGWISP_BACKGROUND`
|
|
Run in background.
|
|
```bash
|
|
export LOGWISP_BACKGROUND=true
|
|
```
|
|
|
|
### `LOGWISP_QUIET`
|
|
Suppress all output.
|
|
```bash
|
|
export LOGWISP_QUIET=true
|
|
```
|
|
|
|
### `LOGWISP_DISABLE_STATUS_REPORTER`
|
|
Disable periodic status reporting.
|
|
```bash
|
|
export LOGWISP_DISABLE_STATUS_REPORTER=true
|
|
```
|
|
|
|
## Logging Variables
|
|
|
|
```bash
|
|
# Output mode
|
|
LOGWISP_LOGGING_OUTPUT=both
|
|
|
|
# Log level
|
|
LOGWISP_LOGGING_LEVEL=debug
|
|
|
|
# File logging
|
|
LOGWISP_LOGGING_FILE_DIRECTORY=/var/log/logwisp
|
|
LOGWISP_LOGGING_FILE_NAME=logwisp
|
|
LOGWISP_LOGGING_FILE_MAX_SIZE_MB=100
|
|
LOGWISP_LOGGING_FILE_MAX_TOTAL_SIZE_MB=1000
|
|
LOGWISP_LOGGING_FILE_RETENTION_HOURS=168
|
|
|
|
# Console logging
|
|
LOGWISP_LOGGING_CONSOLE_TARGET=stderr
|
|
LOGWISP_LOGGING_CONSOLE_FORMAT=json
|
|
|
|
# Special console target override
|
|
LOGWISP_CONSOLE_TARGET=split # Overrides sink console targets
|
|
```
|
|
|
|
## Pipeline Configuration
|
|
|
|
### Basic Pipeline
|
|
```bash
|
|
# Pipeline name
|
|
LOGWISP_PIPELINES_0_NAME=app
|
|
|
|
# Source configuration
|
|
LOGWISP_PIPELINES_0_SOURCES_0_TYPE=directory
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATH=/var/log/app
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATTERN="*.log"
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_CHECK_INTERVAL_MS=100
|
|
|
|
# Sink configuration
|
|
LOGWISP_PIPELINES_0_SINKS_0_TYPE=http
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_PORT=8080
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BUFFER_SIZE=1000
|
|
```
|
|
|
|
### Pipeline with Formatter
|
|
|
|
```bash
|
|
# Pipeline name and format
|
|
LOGWISP_PIPELINES_0_NAME=app
|
|
LOGWISP_PIPELINES_0_FORMAT=json
|
|
|
|
# Format options
|
|
LOGWISP_PIPELINES_0_FORMAT_OPTIONS_PRETTY=true
|
|
LOGWISP_PIPELINES_0_FORMAT_OPTIONS_TIMESTAMP_FIELD=ts
|
|
LOGWISP_PIPELINES_0_FORMAT_OPTIONS_LEVEL_FIELD=severity
|
|
```
|
|
|
|
### Filters
|
|
```bash
|
|
# Include filter
|
|
LOGWISP_PIPELINES_0_FILTERS_0_TYPE=include
|
|
LOGWISP_PIPELINES_0_FILTERS_0_LOGIC=or
|
|
LOGWISP_PIPELINES_0_FILTERS_0_PATTERNS='["ERROR","WARN"]'
|
|
|
|
# Exclude filter
|
|
LOGWISP_PIPELINES_0_FILTERS_1_TYPE=exclude
|
|
LOGWISP_PIPELINES_0_FILTERS_1_PATTERNS='["DEBUG"]'
|
|
```
|
|
|
|
### HTTP Source
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SOURCES_0_TYPE=http
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PORT=8081
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_INGEST_PATH=/ingest
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_BUFFER_SIZE=1000
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_ENABLED=true
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=10.0
|
|
```
|
|
|
|
### TCP Source
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SOURCES_0_TYPE=tcp
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PORT=9091
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_BUFFER_SIZE=1000
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_ENABLED=true
|
|
LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=5.0
|
|
```
|
|
|
|
### HTTP Sink Options
|
|
```bash
|
|
# Basic
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_STREAM_PATH=/stream
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_STATUS_PATH=/status
|
|
|
|
# Heartbeat
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_ENABLED=true
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INTERVAL_SECONDS=30
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_FORMAT=comment
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INCLUDE_TIMESTAMP=true
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEARTBEAT_INCLUDE_STATS=false
|
|
|
|
# Rate Limiting
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_ENABLED=true
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=10.0
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_BURST_SIZE=20
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_LIMIT_BY=ip
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_MAX_CONNECTIONS_PER_IP=5
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_MAX_TOTAL_CONNECTIONS=100
|
|
```
|
|
|
|
### HTTP Client Sink
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SINKS_0_TYPE=http_client
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_URL=https://log-server.com/ingest
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BATCH_SIZE=100
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BATCH_DELAY_MS=5000
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_TIMEOUT_SECONDS=30
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_RETRIES=3
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETRY_DELAY_MS=1000
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETRY_BACKOFF=2.0
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_HEADERS='{"Authorization":"Bearer <API_KEY_HERE>"}'
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_INSECURE_SKIP_VERIFY=false
|
|
```
|
|
|
|
### TCP Client Sink
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SINKS_0_TYPE=tcp_client
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_ADDRESS=remote-server.com:9090
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_DIAL_TIMEOUT_SECONDS=10
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_WRITE_TIMEOUT_SECONDS=30
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_KEEP_ALIVE_SECONDS=30
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RECONNECT_DELAY_MS=1000
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_RECONNECT_DELAY_SECONDS=30
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RECONNECT_BACKOFF=1.5
|
|
```
|
|
|
|
### File Sink
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_DIRECTORY=/var/log/logwisp
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_NAME=app
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_SIZE_MB=100
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MAX_TOTAL_SIZE_MB=1000
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RETENTION_HOURS=168
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_MIN_DISK_FREE_MB=1000
|
|
```
|
|
|
|
### Console Sinks
|
|
```bash
|
|
LOGWISP_PIPELINES_0_SINKS_0_TYPE=stdout
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_BUFFER_SIZE=500
|
|
LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_TARGET=stdout
|
|
```
|
|
|
|
## Example
|
|
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
|
|
# General settings
|
|
export LOGWISP_DISABLE_STATUS_REPORTER=false
|
|
|
|
# Logging
|
|
export LOGWISP_LOGGING_OUTPUT=both
|
|
export LOGWISP_LOGGING_LEVEL=info
|
|
|
|
# Pipeline 0: Application logs
|
|
export LOGWISP_PIPELINES_0_NAME=app
|
|
export LOGWISP_PIPELINES_0_SOURCES_0_TYPE=directory
|
|
export LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATH=/var/log/myapp
|
|
export LOGWISP_PIPELINES_0_SOURCES_0_OPTIONS_PATTERN="*.log"
|
|
|
|
# Filters
|
|
export LOGWISP_PIPELINES_0_FILTERS_0_TYPE=include
|
|
export LOGWISP_PIPELINES_0_FILTERS_0_PATTERNS='["ERROR","WARN"]'
|
|
|
|
# HTTP sink
|
|
export LOGWISP_PIPELINES_0_SINKS_0_TYPE=http
|
|
export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_PORT=8080
|
|
export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_ENABLED=true
|
|
export LOGWISP_PIPELINES_0_SINKS_0_OPTIONS_RATE_LIMIT_REQUESTS_PER_SECOND=25.0
|
|
|
|
# Pipeline 1: System logs
|
|
export LOGWISP_PIPELINES_1_NAME=system
|
|
export LOGWISP_PIPELINES_1_SOURCES_0_TYPE=file
|
|
export LOGWISP_PIPELINES_1_SOURCES_0_OPTIONS_PATH=/var/log/syslog
|
|
|
|
# TCP sink
|
|
export LOGWISP_PIPELINES_1_SINKS_0_TYPE=tcp
|
|
export LOGWISP_PIPELINES_1_SINKS_0_OPTIONS_PORT=9090
|
|
|
|
# Pipeline 2: Remote forwarding
|
|
export LOGWISP_PIPELINES_2_NAME=forwarder
|
|
export LOGWISP_PIPELINES_2_SOURCES_0_TYPE=http
|
|
export LOGWISP_PIPELINES_2_SOURCES_0_OPTIONS_PORT=8081
|
|
export LOGWISP_PIPELINES_2_SOURCES_0_OPTIONS_INGEST_PATH=/logs
|
|
|
|
# HTTP client sink
|
|
export LOGWISP_PIPELINES_2_SINKS_0_TYPE=http_client
|
|
export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_URL=https://log-aggregator.example.com/ingest
|
|
export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_BATCH_SIZE=100
|
|
export LOGWISP_PIPELINES_2_SINKS_0_OPTIONS_HEADERS='{"Authorization":"Bearer <API_KEY_HERE>"}'
|
|
|
|
logwisp
|
|
```
|
|
|
|
## Precedence
|
|
|
|
1. Command-line flags (highest)
|
|
2. Environment variables
|
|
3. Configuration file
|
|
4. Defaults (lowest) |