Salta ai contenuti

HolmesGPT

HolmesGPT (Robusta, progetto CNCF) è un agente: l’LLM decide quali tool chiamare (kubectl, log, PromQL, Alertmanager), legge i risultati e itera fino a una diagnosi. Richiede un modello con tool calling affidabile: usa qwen2.5:14b-instruct o superiore.

Finestra del terminale
brew tap robusta-dev/homebrew-holmesgpt
Finestra del terminale
brew install holmesgpt
Finestra del terminale
holmes version

HolmesGPT usa LiteLLM, che supporta Ollama nativamente:

Finestra del terminale
export OLLAMA_API_BASE=http://localhost:11434
Finestra del terminale
ollama pull qwen2.5:14b-instruct

Alternativa via API OpenAI-compatible (stesso risultato, utile con vLLM):

Finestra del terminale
export OPENAI_API_BASE=http://localhost:11434/v1 OPENAI_API_KEY=ollama

In quel caso il modello si indica come openai/qwen2.5:14b-instruct.

Finestra del terminale
mkdir -p ~/.holmes
Finestra del terminale
cat > ~/.holmes/config.yaml <<'EOF2'
model: ollama_chat/qwen2.5:14b-instruct
alertmanager_url: http://localhost:9093
toolsets:
prometheus/metrics:
enabled: true
config:
prometheus_url: http://localhost:9090
EOF2
Finestra del terminale
holmes toolset list

I toolset Kubernetes (risorse, eventi, log) sono attivi di default.

Finestra del terminale
holmes ask "why is the api deployment in namespace shop-demo restarting?"
Finestra del terminale
holmes ask "why does service checkout-svc in shop-demo have no endpoints?"
Finestra del terminale
holmes ask "what is wrong in namespace shop-demo? list each root cause with evidence and the kubectl command to fix it"
Finestra del terminale
holmes ask "is memory usage of pods in shop-demo close to their limits? use prometheus"

Allegare un file al contesto (log applicativo, output di un comando):

Finestra del terminale
kubectl -n shop-demo logs deploy/checkout --tail=200 > /tmp/checkout.log
Finestra del terminale
holmes ask "correlate this log with the pod readiness status" -f /tmp/checkout.log

Prima genera gli alert con shop-demo e attendi 10–15 minuti.

Finestra del terminale
holmes investigate alertmanager --alertmanager-url http://localhost:9093

Opzioni per filtrare alert e limitare il numero di investigazioni:

Finestra del terminale
holmes investigate alertmanager --help

Holmes può girare come servizio HTTP nel cluster. Chart Robusta:

Finestra del terminale
helm repo add robusta https://robusta-charts.storage.googleapis.com
Finestra del terminale
helm repo update
Finestra del terminale
helm show values robusta/holmes > holmes-default-values.yaml
Finestra del terminale
cat > holmes-values.yaml <<'EOF2'
additionalEnvVars:
- name: OLLAMA_API_BASE
value: http://host.docker.internal:11434
- name: MODEL
value: ollama_chat/qwen2.5:14b-instruct
toolsets:
kubernetes/core:
enabled: true
kubernetes/logs:
enabled: true
prometheus/metrics:
enabled: true
config:
prometheus_url: http://kps-kube-prometheus-stack-prometheus.monitoring.svc:9090
EOF2

Confronta le chiavi con holmes-default-values.yaml prima di installare: cambiano tra versioni del chart.

Finestra del terminale
helm upgrade --install holmes robusta/holmes -n holmes --create-namespace -f holmes-values.yaml
Finestra del terminale
kubectl -n holmes get pods,svc
Finestra del terminale
kubectl -n holmes port-forward svc/holmes-holmes 8080:80
Finestra del terminale
curl -s localhost:8080/api/chat -H 'Content-Type: application/json' -d '{"ask":"what is wrong in namespace shop-demo?"}' | jq -r '.analysis'

Nome del service e schema dell’API dipendono dalla versione: verifica con kubectl -n holmes get svc e la documentazione del chart.

Sintomo Causa Rimedio
loop di tool call identiche modello troppo piccolo 14B+ o qwen3:14b
argomenti inventati (namespace/pod inesistenti) allucinazione domande con namespace e nome esplicito
risposta troncata contesto insufficiente Modelfile con num_ctx 16384 o superiore
molto lento CPU o swap chiudi altri carichi, vedi risorse