Skip to content

Instantly share code, notes, and snippets.

@jplitza
Last active December 12, 2025 09:41
Show Gist options
  • Select an option

  • Save jplitza/5b852ecdd1f3730d2c895c194e9c80ae to your computer and use it in GitHub Desktop.

Select an option

Save jplitza/5b852ecdd1f3730d2c895c194e9c80ae to your computer and use it in GitHub Desktop.
YAOOK Monitoring
customResourceState:
enabled: true
config:
kind: CustomResourceStateMetrics
spec:
resources:
- &resource
groupVersionKind:
group: yaook.cloud
version: "v1"
kind: "*"
metricNamePrefix: kube_yaook
labelsFromPath:
name: [metadata, name]
namespace: [metadata, namespace]
metrics:
- name: phase_info
help: "The current phase of a YAOOK resource"
each:
type: Info
info:
labelsFromPath:
phase: [status, phase]
- name: status_condition
help: "The current status conditions of a YAOOK resource"
each:
type: Gauge
gauge:
path: [status, conditions]
labelsFromPath:
condition: ["type"]
valueFrom: ["status"]
- name: created
help: UNIX creation timestamp
each:
type: Gauge
gauge:
path: [metadata, creationTimestamp]
- name: metadata_generation
help: Sequence number representing a specific generation of the desired state.
each:
type: Gauge
gauge:
path: [metadata, generation]
- name: status_observed_generation
help: The generation observed by the YAOOK operator.
each:
type: Gauge
gauge:
path: [status, observedGeneration]
- name: status_updated_generation
help: Indicates the version of the resource used to generate child resources.
each:
type: Gauge
gauge:
path: [status, updatedGeneration]
- <<: *resource
groupVersionKind:
group: compute.yaook.cloud
version: "v1"
kind: "*"
- <<: *resource
groupVersionKind:
group: infra.yaook.cloud
version: "v1"
kind: "*"
- <<: *resource
groupVersionKind:
group: network.yaook.cloud
version: "v1"
kind: "*"
rbac:
extraRules:
- apiGroups:
- yaook.cloud
- apps.yaook.cloud
- compute.yaook.cloud
- infra.yaook.cloud
- network.yaook.cloud
- octavia.yaook.cloud
resources: ['*']
verbs: ['list', 'watch']
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: yaook-operators
spec:
groups:
- name: yaook
rules:
- alert: YaookResourceGenerationMismatch
annotations:
description: >-
{{ $labels.customresource_kind }} generation for {{ $labels.namespace }}/{{ $labels.name
}} does not match, this indicates that the reconciliation has failed but has
not been rolled back on cluster {{ $labels.cluster }}.
summary: "{{ $labels.customresource_kind }} generation mismatch due to possible reconciliation error"
expr: |-
kube_yaook_status_observed_generation{job="kube-state-metrics", namespace=~".*"}
!=
kube_yaook_metadata_generation{job="kube-state-metrics", namespace=~".*"}
for: 15m
labels:
severity: warning
- alert: YaookResourceReconciliationStuck
annotations:
description: Reconciliation of {{ $labels.customresource_kind }} {{ $labels.namespace }}/{{ $labels.name
}} is not progressing for longer than 15 minutes on cluster {{ $labels.cluster
}}.
summary: "{{ $labels.customresource_kind }} reconciliation is not progressing"
expr: |-
kube_yaook_status_condition{condition="Converged", job="kube-state-metrics", namespace=~".*"}
!= 1
for: 15m
labels:
severity: warning
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment