kube-state-metrics Agent Skills & AI Rules

GitHub

Add-on agent to generate and expose cluster-level metrics.

RAW Rules
1 Discovered Rules โ€ข ~1,142 Estimated Tokens
Loading skill content...

Rules Skill

tests/rules/alerts-test.yaml anthropic-skill ~1,142 tokens
Raw
rule_files:
  - ../../examples/prometheus-alerting-rules/alerts.yaml

evaluation_interval: 1m

tests:
  # Test long-lasting invalid configuration should trigger alert
  - interval: 1m
    input_series:
      # T=0: 3 shards with correct configuration
      # T=9m: shard #0 was incorrectly redeployed with --total-shards=1
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0"}'
        values: '3x9 1x21'
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-1-0"}'
        values: '3x30'
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-2-0"}'
        values: '3x30'
    alert_rule_test:
      - eval_time: 25m
        alertname: KubeStateMetricsShardingMismatch
        exp_alerts:
          - exp_labels:
              severity: critical
            exp_annotations:
              summary: "kube-state-metrics sharding is misconfigured."
              description: "kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all."

  # Test deployment from one shard to multiple shards should not trigger alert
  - interval: 1m
    input_series:
      # T=0: 1 shard with correct configuration
      # T=9m: two more shards were deployed, all shards were correctly configured
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0"}'
        values: '1x9 3x21'
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-1-0"}'
        values: '_x9 3x21'
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-2-0"}'
        values: '_x9 3x21'
      - series: 'kube_state_metrics_shard_ordinal{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0",shard_ordinal="0"}'
        values: '0x30'
      - series: 'kube_state_metrics_shard_ordinal{job="kube-state-metrics",pod="kube-state-metrics-shard-1-0",shard_ordinal="1"}'
        values: '_x9 1x21'
      - series: 'kube_state_metrics_shard_ordinal{job="kube-state-metrics",pod="kube-state-metrics-shard-2-0",shard_ordinal="2"}'
        values: '_x9 2x21'
    alert_rule_test: []

  # Test misconfigured single shard deployment
  - interval: 1m
    input_series:
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0"}'
        values: '3x30'
      - series: 'kube_state_metrics_shard_ordinal{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0",shard_ordinal="0"}'
        values: '0x30'
    alert_rule_test:
      - eval_time: 25m
        alertname: KubeStateMetricsShardsMissing
        exp_alerts:
          - exp_labels:
              severity: critical
            exp_annotations:
              summary: "kube-state-metrics shards are missing."
              description: "kube-state-metrics shards are missing, some Kubernetes objects are not being exposed."

  # Test misconfigured single shard deployment
  - interval: 1m
    input_series:
      - series: 'kube_state_metrics_total_shards{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0"}'
        values: '3x30'
      - series: 'kube_state_metrics_shard_ordinal{job="kube-state-metrics",pod="kube-state-metrics-shard-0-0",shard_ordinal="0"}'
        values: '0x30'
    alert_rule_test:
      - eval_time: 25m
        alertname: KubeStateMetricsShardsMissing
        exp_alerts:
          - exp_labels:
              severity: critical
            exp_annotations:
              summary: "kube-state-metrics shards are missing."
              description: "kube-state-metrics shards are missing, some Kubernetes objects are not being exposed."
    promql_expr_test:
      # Test that missing shards are #2 (0b100) and #1 (0b010)
      - expr: |
          2^max(kube_state_metrics_total_shards{job="kube-state-metrics"}) - 1
            -
          sum( 2 ^ max by (shard_ordinal) (kube_state_metrics_shard_ordinal{job="kube-state-metrics"}) )
        eval_time: 25m
        exp_samples:
          - value: 0b110