Structure

Complete YAML structure reference for Sling monitor configuration files

Below is the structure of the monitor configuration file.

Root Level

At the root level, a monitor configuration accepts the following keys:

# 'connection' and 'objects' keys are required
connection: <connection name>

defaults: <monitor object config>

objects:
  <object name or pattern>: <monitor object config>

schemata:
  enabled: true | false
  exclude: [<glob patterns>]

Object Configuration

The <object name or pattern> identifies the table or view to monitor. This can be a fully qualified name (e.g., public.users), or a wildcard pattern using * and ? (e.g., public.*, analytics.fact_*).

The <monitor object config> accepts the following keys:

Column Configuration

The <monitor column config> accepts the following keys:

Schemata Configuration

The schemata block controls schema change detection across the monitored connection:

Key
Type
Default
Description

enabled

bool

false

Enable schema change detection

exclude

string[]

["*.*_tmp"]

Glob patterns for objects to exclude from schema tracking

circle-info

When exclude is not set, the default pattern ["*.*_tmp"] is applied automatically. Set exclude: [] (empty array) to disable all exclusions.

Configuration Reference

Object-Level Keys

Key
Type
Default
Description

disabled

bool

false

Exclude this object from monitoring

metadata

bool

false

Collect schema info (columns, types). Required for schema change detection

row_count

bool

false

Count total rows

body_md5

bool

false

Track MD5 hash of view/procedure definitions

freshness_threshold

string

β€”

Maximum data age before staleness alert (e.g., "24h", "7d")

freshness_column

string

β€”

Column to query MAX() for data age

anomaly_detection

object

β€”

Override anomaly detection parameters

alert_on_change

string[]

β€”

Change types that trigger alerts

columns

map

β€”

Column-level monitoring configuration

Column-Level Keys

Key
Type
Default
Description

count

bool

false

Non-null and null value counts

null_count

bool

false

Null value count

count_distinct

bool

false

Unique value count (cardinality)

unique_count

bool

false

Unique value count

size

bool

false

Total size in bytes

min_max_mean

bool

false

Minimum, maximum, and mean for numeric columns

min_max_len

bool

false

Minimum and maximum string length for text columns

percentile

bool

false

Percentile statistics (p50, p90, p95, p99) and standard deviation

regex_match

string[]

β€”

Patterns that values should match

regex_not_match

string[]

β€”

Patterns that values should NOT match

accepted_values

string[]

β€”

Valid values (anything else is a violation)

rejected_values

string[]

β€”

Values that should not appear

alert_on_change

string[]

β€”

Change types that trigger alerts

Anomaly Detection Keys

Key
Type
Default
Description

z_score_threshold

float

3.0

Z-score threshold for anomaly detection

min_history_points

int

7

Minimum data points required before detection begins

min_history_days

int

7

Minimum days of history required

history_days

int

30

Lookback window in days for baseline calculation

Wildcards & Patterns

Use * and ? wildcards in object names to monitor multiple objects with the same configuration:

  • * matches any sequence of characters

  • ? matches a single character

Use "*" as a column name in defaults to apply column metrics to all columns:

Definition Order

Objects are processed in definition order. When a wildcard expands to include a table and a later entry targets that same table, the later entry's configuration wins entirely.

Exclude specific tables from a wildcard:

Disable all, then re-enable specific tables:

circle-info

Definition order matters: when a wildcard expands to include a table, and a later entry targets that same table, the later entry's configuration wins entirely.

Defaults Inheritance

Settings defined under defaults are applied to all objects. Individual objects can override any default value.

Last updated

Was this helpful?