Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7e9458e
feat: introduce alloy role to replace promtail in partition
ma-hartma May 4, 2026
7354a06
feat: use legacy_positions_file to avoid replaying syslog
ma-hartma May 5, 2026
17cb50e
feat: loki write endpoints allow remote_timeout
ma-hartma May 5, 2026
04731eb
docs(alloy): README with promtail migration guide
ma-hartma May 6, 2026
1ce97d1
chore: remove prometheus promtail targets
ma-hartma May 6, 2026
ad2eacc
chore: simplify naming
ma-hartma May 6, 2026
ef67f5b
fix: use correct alloy image from release
ma-hartma May 6, 2026
673f6be
feat: journal-file alloy snippet allows migrating from promtail posit…
ma-hartma May 7, 2026
f830d3d
fix: unify naming
ma-hartma May 7, 2026
8b3c47a
chore: unify label names
ma-hartma May 7, 2026
3759237
feat: label for journal level filtering
ma-hartma May 7, 2026
5155e05
docs(alloy): improve cursor/WAL part
ma-hartma May 12, 2026
f5758a9
docs(promtail): add important admonition for promtail deprecation
ma-hartma May 12, 2026
73f7b69
feat: add toggles and docs for different migration scenarios
ma-hartma May 12, 2026
1b1d28f
chore(metrics): bring back prometheus promtail job as it is optional
ma-hartma May 12, 2026
dccafd4
chore: provide promtail_migrate_stop and promtail_migrate_cleanup var…
ma-hartma May 13, 2026
d743431
chore: use recommended file_match block for syslog snippet
ma-hartma May 13, 2026
edd079e
docs: Ansible meta deprecation and README
ma-hartma May 19, 2026
5210a30
chore: disable alloy reporting
ma-hartma May 20, 2026
1d6a4d1
fix: deprecation warning
ma-hartma May 20, 2026
dd19f15
chore: partition defaults
ma-hartma May 28, 2026
cefbe81
fix: remove deprecation meta info
ma-hartma Jun 1, 2026
26bfc33
docs: credential rename
ma-hartma Jun 2, 2026
575a8f4
Merge branch 'master' into promtail-alloy-migration
ma-hartma Jun 2, 2026
a7a3853
chore: ansible lint
ma-hartma Jun 2, 2026
5ba4ded
docs: finalize documentation
ma-hartma Jun 3, 2026
1b66423
fix: remove unnecessary alloy restarts
ma-hartma Jun 3, 2026
e1c6cad
Generated-By: [Claude Sonnet 4.6] find and remove stale alloy config …
ma-hartma Jun 3, 2026
c762a47
Enable systemd collector in node-exporter and add SONiC service alerts
Sven-Ric Apr 7, 2026
5208db9
Add sflow configuration support to SONiC config-db role
Sven-Ric Apr 8, 2026
f034dc8
Add sflow collection and processing pipeline with Grafana dashboard
Sven-Ric Apr 8, 2026
e99ba73
Add geo-IP enrichment and geolocation panel to flow pipeline
Sven-Ric Apr 8, 2026
95eb1b3
Add weathermap dashboard
Sven-Ric Apr 15, 2026
604b6d0
Export Interface to VRF Mapping using promtail
Sven-Ric Apr 21, 2026
a8e024e
Fix promtail not seeing vrf-to-interface mapping updates
Sven-Ric Apr 22, 2026
6606ed0
Add vrf enrichment for flow samples.
Sven-Ric Apr 22, 2026
6e48d15
Change log enrichment vrf name to default when no other name can be f…
Sven-Ric Apr 23, 2026
0b0fe66
Enable filtering flows by vrf in sflow dashboard
Sven-Ric Apr 23, 2026
a84ddfb
Move pre enrichment logs from disk to memory
Sven-Ric Apr 26, 2026
b6ca83e
Add documentation for goflow/vector and sflow collector
Sven-Ric Apr 26, 2026
6ba95d4
Move pre enrichment logs to fifo pipe to prevent oomkilled
Sven-Ric Apr 27, 2026
7c9de95
Added traffic breakdown by AS number
Sven-Ric May 4, 2026
2e631c4
Added detailed documentation
Sven-Ric May 4, 2026
f363976
READMEs for lldp-weathermap and sonic-config
Sven-Ric May 15, 2026
4b276ed
Move enrichment pipeline from controlplane to partition
Sven-Ric May 18, 2026
aa7e5aa
expose more debug information in lldp weathermap
Sven-Ric May 26, 2026
9357d5d
Fix spelling
Sven-Ric May 28, 2026
eae750f
remove outdated documentation
Sven-Ric May 28, 2026
a3f4c33
Fix formatting
Sven-Ric May 28, 2026
3850b13
Added basic alerts
Sven-Ric May 28, 2026
d3840ca
add prefixlists to fabric peer-group
iljarotar Mar 30, 2026
b8d54ad
document
iljarotar Mar 30, 2026
45d9597
fix container dns
Sven-Ric Jun 1, 2026
ce5fb23
test: mount /run/log/journal for promtail
ma-hartma Jun 1, 2026
3fcc1b5
fix: provide secret name for thanos receive ingress tls
ma-hartma Jun 2, 2026
0b8e606
fix: remove secretName parameter
ma-hartma Jun 2, 2026
ec2df6f
fix: attempt extraTls for thanos
ma-hartma Jun 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions common/roles/defaults/defaults/main.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
metal_registry_auth_enabled: false

Check failure on line 2 in common/roles/defaults/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

var-naming[no-role-prefix]

Variables names from within roles should use defaults_ as a prefix. (vars: metal_registry_auth_enabled)
metal_registry_auth_user: ""

Check failure on line 3 in common/roles/defaults/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

var-naming[no-role-prefix]

Variables names from within roles should use defaults_ as a prefix. (vars: metal_registry_auth_user)
metal_registry_auth_password: ""

Check failure on line 4 in common/roles/defaults/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

var-naming[no-role-prefix]

Variables names from within roles should use defaults_ as a prefix. (vars: metal_registry_auth_password)
metal_registry_url: "https://index.docker.io/v1/"

Check failure on line 5 in common/roles/defaults/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

var-naming[no-role-prefix]

Variables names from within roles should use defaults_ as a prefix. (vars: metal_registry_url)

metal_stack_release:

Check failure on line 7 in common/roles/defaults/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

var-naming[no-role-prefix]

Variables names from within roles should use defaults_ as a prefix. (vars: metal_stack_release)
mapping:
# binaries
metal_hammer_image_tag: "binaries.metal-stack.metal-hammer.version"
Expand Down Expand Up @@ -98,6 +98,8 @@
capms_controller_name: "docker-images.metal-stack.kubernetes.cluster-api-provider-metal-stack-controller.name"
capms_controller_tag: "docker-images.metal-stack.kubernetes.cluster-api-provider-metal-stack-controller.tag"
# third party
alloy_image_tag: "docker-images.third-party.partition.alloy.tag"
alloy_image_name: "docker-images.third-party.partition.alloy.name"
event_exporter_name: "docker-images.third-party.control-plane.event-exporter.name"
event_exporter_tag: "docker-images.third-party.control-plane.event-exporter.tag"
nsq_image_tag: "docker-images.third-party.control-plane.nsq.tag"
Expand Down
1 change: 1 addition & 0 deletions common/roles/partition-prometheus-rules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ Contains default variables for partition prometheus alert manager rules. This wa
| partition_prometheus_rules_node_exporter | | node-exporter alert rules |
| partition_prometheus_rules_pixiecore | | pixiecore alert rules |
| partition_prometheus_rules_sonic_exporter | | sonic-exporter alert rules |
| partition_prometheus_rules_goflow2 | | goflow2 sFlow collector rules |
36 changes: 36 additions & 0 deletions common/roles/partition-prometheus-rules/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -343,3 +343,39 @@
annotations:
description: "Sonic switch {{$labels.instance}} in partition {{$externalLabels.partition}} could not be scraped for more than 10 minutes."
{% endraw %}

partition_prometheus_rules_sonic_systemd: |
{% raw %}
- name: sonic-systemd.rules
rules:
- record: sonic:systemd_service_uptime_seconds
expr: time() - node_systemd_unit_start_time_seconds{name=~"(swss|bgp).service"}
- alert: SonicServiceNotActive
expr: node_systemd_unit_state{name=~"(swss|bgp).service", state="active"} == 0
for: 5m
labels:
severity: critical
annotations:
description: "SONiC service {{ $labels.name }} on {{ $labels.instance }} is not active."
- alert: SonicServiceRestarted
expr: changes(node_systemd_unit_start_time_seconds{name=~"(swss|bgp).service"}[8h]) > 0
labels:
severity: critical
annotations:
description: "SONiC service {{ $labels.name }} on {{ $labels.instance }} has restarted in the last 8 hours."
{% endraw %}

partition_prometheus_rules_goflow2: |
{% raw %}
- name: goflow2-collector.rules
rules:
- alert: GoflowCollectorDown
expr: up{job="goflow2"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "goflow2 sFlow collector down ({{ $labels.instance }})"
description: "goflow2 instance {{ $labels.instance }} has been unreachable for more than 2 minutes. sFlow ingestion is halted."
{% endraw %}

Check failure on line 381 in common/roles/partition-prometheus-rules/defaults/main.yaml

View workflow job for this annotation

GitHub Actions / ansible-lint

yaml[empty-lines]

Too many blank lines (1 > 0)
1 change: 1 addition & 0 deletions control-plane/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ The `defaults` folder contains defaults that are used by multiple roles in the c
| [gardener-shoots](roles/gardener-shoots) | Deploys managed shoots into the virtual garden. |
| [gardener-virtual-garden-access](roles/gardener-virtual-garden-access) | Deploys a managed resource to access the the Virtual Garden with operator setup |
| [headscale](roles/headscale) | Deploys headscale for firewall VPN |
| [lldp-weathermap](roles/lldp-weathermap) | Generates a Grafana network topology dashboard from LLDP data with live link utilization |
| [ipam-db](roles/ipam-db) | Deploys a database for the [IPAM](https://github.com/metal-stack/go-ipam) of the metal-api |
| [isolated-clusters](roles/isolated-clusters) | Deploys services for Gardener isolated clusters |
| [logging](roles/logging) | Deploys metal-stack control plane logging components |
Expand Down
19 changes: 19 additions & 0 deletions control-plane/roles/lldp-weathermap/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# lldp-weathermap

Generates a Grafana canvas dashboard that visualizes network topology and live link utilization. Topology is derived from LLDP data collected from switches at deploy time. Nodes are organized into configurable tiers (e.g. spine, exit, leaf) and links are color-coded against configurable bandwidth thresholds.

You can look up all the default values of this role [here](defaults/main.yaml).

## Variables

| Name | Mandatory | Description |
| ---------------------------------- | --------- | ------------------------------------------------------------------------------------------------- |
| `lldp_weathermap_namespace` | | Kubernetes namespace for the Grafana dashboard ConfigMap |
| `lldp_weathermap_dashboard_name` | | Display name of the Grafana dashboard |
| `lldp_weathermap_tiers` | | List of tier definitions; each entry has `id`, `top_fraction`, `background_color`, `border_color` |
| `lldp_weathermap_fallback_tier` | | Tier assigned to nodes not matching any known tier id |
| `lldp_weathermap_panel_grid_rows` | | Grid row height of the canvas panel |
| `lldp_weathermap_thresholds` | | Link utilization thresholds mapping bps values to display colors |
| `lldp_weathermap_hosts_group` | yes | Ansible inventory group to collect LLDP data from |
| `lldp_weathermap_node_filter` | | List of tier IDs to include in the weathermap; nodes in other tiers are hidden |
| `lldp_weathermap_static_links` | | Static link definitions that can't be autodiscovered using LLDP |
38 changes: 38 additions & 0 deletions control-plane/roles/lldp-weathermap/defaults/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
lldp_weathermap_namespace: monitoring
lldp_weathermap_dashboard_name: "Network Weathermap"

lldp_weathermap_tiers:
- id: spine
top_fraction: 0.15
background_color: "#1f3a5f"
border_color: "#4a9eff"
- id: exit
top_fraction: 0.45
background_color: "#3a1f5f"
border_color: "#a855f7"
- id: leaf
top_fraction: 0.75
background_color: "#1f4a4a"
border_color: "#2dd4bf"

lldp_weathermap_fallback_tier: exit

lldp_weathermap_panel_grid_rows: 14

lldp_weathermap_thresholds:
- color: green
value: null
- color: yellow
value: 9000000000 # 9 Gbps
- color: orange
value: 18000000000 # 18 Gbps
- color: red
value: 24000000000 # 24 Gbps

lldp_weathermap_hosts_group: all_switches
lldp_weathermap_node_filter:
- leaf
- spine

lldp_weathermap_static_links: []
Loading
Loading