Ontwerp een Prometheus-query voor aangepaste waarschuwingen
description
Met deze prompt kan ik snel een effectieve en op maat gemaakte Prometheus-waarschuwingsquery creëren die aansluit bij mijn specifieke monitoringbehoeften. Het helpt valse positieven te verminderen en de prestaties van mijn monitoring te verbeteren, waardoor ik gerichter kan reageren op kritieke situaties.
prompt
Help me een Prometheus-query te schrijven die waarschuwingen genereert voor <specifieke metriek> wanneer de waarde <drempelwaarde> overschri ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van een Prometheus-query die een waarschuwing genereert wanneer de CPU-gebruik (bijvoorbeeld gemeten met `cpu_usage_seconds_total`) gedurende de laatste 5 minuten de drempel van 80% overschrijdt:
```promql
avg_over_time(cpu_usage_seconds_total[5m]) > 0.8
```
**Uitleg:**
- `cpu_usage_seconds_total` is een counters die de totale CPU-gebruik in seconden bijhoudt.
- Om het percentage CPU-gebruik te berekenen, moet je meestal het verschil nemen tussen de begin- en eindwaarde over de periode en dat delen door de maximale tijd (bijvoorbeeld 5 minuten = 300 seconden) en het aantal cores.
**Betere aanpak voor CPU-gebruik:**
Omdat `cpu_usage_seconds_total` een counter is, is het gebruikelijk om de `rate()` te gebruiken en een percentage te berekenen op basis van het aantal cores. Bijvoorbeeld:
```promql
avg(
rate(cpu_usage_seconds_total[5m])
) * 100 / aantal_cores
```
Hierbij moet je het aantal cores weten (bijvoorbeeld via een label of metric). Een veelgebruikte aanpak is:
```promql
(sum(rate(cpu_usage_seconds_total[5m])) by (instance, cpu) / ignoring(cpu) group_left sum(machine_cpu_cores)) * 100
```
**Voor een eenvoudige waarschuwing:**
```promql
avg(rate(cpu_usage_seconds_total[5m])) * 100 > 80
```
**Advies voor optimalisatie en minimale valse positieven:**
- **Gebruik de juiste metric:** Gebruik `rate()` of `irate()` om het CPU-gebruik over tijd te berekenen, omdat counters continue toenemen.
- **Filter op relevante labels:** Als je meerdere CPU's hebt, zorg dat je de metingen per CPU of per host goed groepeert.
- **Stel een signaal in dat niet te ruw is:** Bijvoorbeeld, een korte piek kan vals alarm veroorzaken. Overweeg om de `avg_over_time()` of `max_over_time()` te gebruiken, afhankelijk van of je de gemiddelde of maximale CPU-belasting over 5 minuten wilt monitoren.
- **Gebruik drempelwaarden met voldoende marge:** Een drempel van 80% is redelijk, maar je kunt ook een buffer toevoegen of een hogere drempel gebruiken om valse alarmen te verminderen.
- **Implementeer hysterese:** Stel bijvoorbeeld een waarschuwing in die pas activeert bij >80% en uitgaat bij <75%, om schommelingen te vermijden.
**Voorbeeld van een complete alertregel:**
```yaml
- alert: HighCpuUsage
expr: (sum(rate(cpu_usage_seconds_total[5m])) by (instance) / ignoring(instance, cpu) group_left sum(machine_cpu_cores)) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
description: "CPU-gebruik op {{ $labels.instance }} is hoger dan 80% over de laatste 5 minuten."
```
Deze aanpak zorgt voor minder valse positieven door een drempel en een `for`-tijd te gebruiken, zodat de waarschuwing pas wordt getriggerd als de situatie langere tijd aanhoudt.
provider: deepseek
model: deepseek-chat
no_answer_for_language
error: Generation failed [deepseek] prompt_id=2075 locale=nl err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=en err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=de err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=fr err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=pt err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=es err=DeepSeek connection/timeout | Generation failed [deepseek] prompt_id=2075 locale=zh err=DeepSeek connection/timeout