groups:
  - name: solana-validator
    rules:
      - alert: SolanaExporterDown
        expr: up{job="solana"} == 0
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: Solana exporter is unavailable
          description: The Solana exporter on {{ $labels.instance }} has not been reachable for five minutes.

      - alert: SolanaValidatorVoteLag
        expr: (solana_cluster_last_vote{job="solana"} - on(node, instance, network) solana_validator_last_vote{job="solana"}) > 100
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: Solana validator vote lag is high
          description: Validator {{ $labels.instance }} is more than 100 votes behind the cluster reference.

      - alert: SolanaValidatorDelinquent
        expr: solana_validator_delinquent{job="solana"} > 0
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: Solana validator is delinquent
          description: Validator {{ $labels.instance }} is reported delinquent. Check vote progression, slot lag, logs, and host pressure.

      - alert: SolanaValidatorBlockHeightStalled
        expr: rate(solana_node_block_height{job="solana"}[5m]) < 0.5
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: Solana block-height progression is slow
          description: {{ $labels.instance }} is progressing at fewer than 0.5 blocks per second for five minutes.

      - alert: SolanaValidatorLastVoteStalled
        expr: increase(solana_validator_last_vote{job="solana"}[10m]) < 10
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: Solana validator vote progression is stalled
          description: {{ $labels.instance }} has made fewer than 10 vote-progress increments over ten minutes.

      - alert: SolanaValidatorSkippedLeaderSlots
        expr: increase(solana_leader_slots_total{job="solana",status="skipped"}[10m]) > 0
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: Solana validator has skipped leader slots
          description: {{ $labels.instance }} skipped one or more leader slots. Check CPU scheduling, IO wait, UDP loss, and validator logs.

      - alert: SolanaValidatorIdentityBalanceLow
        expr: solana_account_balance{job="solana"} < 1
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: Solana validator identity balance is low
          description: The monitored identity on {{ $labels.instance }} has less than 1 SOL. Confirm that the selected account is the validator fee payer.

      - alert: SolanaLedgerDiskLow
        expr: (node_filesystem_avail_bytes{mountpoint=~".*(ledger|accounts|snapshot).*"} / node_filesystem_size_bytes{mountpoint=~".*(ledger|accounts|snapshot).*"}) * 100 < 15
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: Solana data filesystem is low on space
          description: {{ $labels.instance }} has less than 15% free space on a ledger, accounts, or snapshot filesystem.
