Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Distributed accelerator for cloud storage (DACS) espone metriche in formato Prometheus da ogni server cache. Utilizzare queste metriche per monitorare connessioni, capacità di cache, latenza e volume delle richieste, dimensioni delle richieste e pressione di rete del sistema operativo.
Importante
DACS attualmente non si integra con il servizio gestito Monitoraggio di Azure per Prometheus. Azure Container Storage non configura automaticamente un target di scrape per i DACS. Devi configurare la tua pipeline di metriche per fare scraping dell'endpoint Prometheus di ogni server di cache.
Endpoint delle metriche
Prima di iniziare, installa DACS e aspetta che i pod del server cache siano pronti. Sostituisci <cache-namespace> nei comandi e nella configurazione con lo spazio di nomi che contiene quei pod.
Ogni pod cache-server espone metriche sulla porta 9096 nel /metrics percorso. Inserire ogni pod del server di cache in modo che il sistema di monitoraggio acquisisca lo stato e i contatori per server.
Elenca i pod del cache-server e conferma la porta delle metriche:
kubectl get pods \
--namespace <cache-namespace> \
--selector app=cacheserver \
--output wide
kubectl get pods \
--namespace <cache-namespace> \
--selector app=cacheserver \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*].ports[*]}{.containerPort}{" "}{end}{"\n"}{end}'
Verifica localmente un endpoint:
CACHE_POD=$(kubectl get pods \
--namespace <cache-namespace> \
--selector app=cacheserver \
-o jsonpath='{.items[0].metadata.name}')
kubectl port-forward \
--namespace <cache-namespace> \
pod/$CACHE_POD \
9096:9096
In un altro terminale, recupera le metriche:
curl --fail --silent --show-error http://localhost:9096/metrics
Ferma il comando port-forward quando hai finito di controllare l'endpoint.
Configura la tua pipeline di metriche
Configura il tuo collector compatibile con Prometheus per scoprire i pod del server cache nel namespace DACS e fai scraping alla porta 9096 su /metrics. Il collector necessita di accesso di rete agli indirizzi IP del pod sulla porta 9096 e di accesso autenticato all'API Kubernetes. Concedere le autorizzazioni per l'identità get, list e watch per i pod nello spazio dei nomi DACS. Per un collector in-cluster, assegna un ruolo con questi permessi al suo account di servizio.
La seguente configurazione di Prometheus è un esempio di collettore in-cluster. Limita la scoperta di Kubernetes allo spazio dei nomi DACS. Sostituisci <cache-namespace> con il tuo namespace.
scrape_configs:
- job_name: dacs-cache-server
scrape_interval: 30s
metrics_path: /metrics
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- <cache-namespace>
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
action: keep
regex: <cache-namespace>
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: cacheserver
- source_labels: [__meta_kubernetes_pod_phase]
action: keep
regex: Running
- source_labels: [__meta_kubernetes_pod_container_port_number]
action: keep
regex: "9096"
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
Se la tua pipeline utilizza un Operatore Prometheus, crea una PodMonitor risorsa o una risorsa equivalente che selezioni app=cacheserver, il namespace DACS e la porta metrica. Usa le etichette e i nomi delle porte della versione preliminare installata.
Dopo aver configurato lo scraping, verifica che il tuo sistema di metriche abbia un target attivo per ogni pod di server cache. Conserva le etichette pod, instance e namespace così puoi identificare un singolo server cache malsano o saturo.
Informazioni di riferimento sulle metriche
Un server di cache espone le seguenti famiglie di metriche:
| Famiglia metrica | Type | Meaning |
|---|---|---|
cache_server_active_connections |
Misuratore | Numero di connessioni attive. Per TCP, questa metrica traccia le connessioni mentre gestisce le richieste, non tutti i socket inattivi già stabiliti. |
cache_server_cache_size_bytes |
Misuratore | Dimensione dei dati in cache in byte, non la capacità di cache configurata. |
cache_server_listen_backlog_max |
Misuratore | Backlog di ascolto configurato passato a listen(). |
cache_server_accept_queue_overflows_total |
Contatore | Overflow totale della coda di accettazione da TcpExt.ListenOverflows. |
cache_server_listen_drops_total |
Contatore | Riduzione totale degli ascolti da TcpExt.ListenDrops |
cache_server_syn_queue_full_drops_total |
Contatore | Riduzione totale della coda delle richieste SYN da TcpExt.TCPReqQFullDrop. |
cache_server_syn_cookies_sent_total |
Contatore | Total cookie SYN inviati da TcpExt.TCPReqQFullDoCookies. |
cache_server_passive_opens_total |
Contatore | Totale PassiveOpens da Tcp.PassiveOpens fino a nstat. |
cache_server_open_fds |
Misuratore | Handle di file allocati a livello di sistema da /proc/sys/fs/file-nr; non descrittori di file aperti per processo. |
cache_server_accept_errors_total |
Contatore | Errori totali accept(), etichettati in base al valore di errno. Una serie viene creata quando si verifica un errore; può essere assente su un server sano. |
cache_server_successful_request_latency_ms |
Histogram | Latenza delle richieste riuscite in millisecondi. |
cache_server_request_counter |
Contatore | Numero di richieste. |
cache_server_download_request_size_bytes |
Histogram | Dimensione delle richieste di download. |
cache_server_upload_request_size_bytes |
Histogram | Dimensione delle richieste di upload. |
Le famiglie di metriche degli istogrammi espongono le serie standard _bucket, _sum, e _count temporali. I valori dei contatori si resettano quando un processo del server di cache si riavvia. Usa rate() o increase() invece di confrontare i valori grezzi dei contatori tra i riavvii.
Usa i nomi delle metriche esposti dalla tua versione preview installata, inclusi cache_server_request_counter e l'unità _ms di latenza. Gli strumenti lint di Prometheus per le convenzioni di denominazione possono avvertire di questi nomi anche se Prometheus può analizzarli e interrogarli.
Esempi di query PromQL
I seguenti esempi presumono che la tua pipeline di metriche preservi le etichette namespace e pod. Per uno spazio di lavoro di metriche condiviso, aggiungi anche un'etichetta unica cluster ai campioni di ogni cluster. Le aggregazioni mantengono tutte e tre le etichette in modo che i pod con nomi identici non vengano combinati tra namespace o cluster. Se il tuo collector usa un'etichetta cluster diversa, sostituisci quel nome. Senza un'etichetta di cluster, usa una sorgente dati limitata a un solo cluster.
Consentire almeno due inserimenti prima di valutare rate() o increase(). Su un server inattivo, il quantile di latenza e la dimensione media della richiesta possono essere restituiti NaN perché non sono state osservate richieste nella finestra di interrogazione. Questa condizione di per sé non indica un errore di scraping. Controllare separatamente la metrica up della destinazione.
Connessioni attive tramite server cache
cache_server_active_connections
Tasso di richieste per server cache
sum by (cluster, namespace, pod) (rate(cache_server_request_counter[5m]))
La versione 0.1.0, cache_server_request_counter comprende le etichette request_type e status. Includere queste etichette nell'aggregazione per suddividere caricamenti, download ed errori. Controlla le etichette rese disponibili dalla versione installata.
Download riusciti nella cache
Per verificare l'attività di download del server cache durante le letture ripetute, filtra le richieste di download riuscite e aggrega su tutti i pod server posseduti dalla risorsa Cache selezionata:
sum by (cluster, namespace) (
increase(cache_server_request_counter{
cluster="<cluster>",
namespace="<cache-namespace>",
pod=~"<cache-server-pod-regex>",
request_type="Download",
status="Success"
}[5m])
)
Sostituisci i segnaposto cluster, namespace e pod-regex. Abbina solo i server pod posseduti dalla tua risorsa Cache e non quelli di altre cache in uno spazio di nomi condiviso. Per una sorgente dati a cluster singolo senza cluster etichetta, ometti quel selettore. I valori delle etichette Download e Success applicano la distinzione tra maiuscole e minuscole.
Registrare una linea di base prima delle letture e consentire almeno due inserimenti.
increase() stima l'attività sulla finestra e tiene conto dei reset dei contatori; non è una differenza esatta tra contatori grezzi. Una serie assente non è prova di attività pari a zero. Controlla lo stato dello scraping e le etichette esposte prima di interpretare il risultato.
Correla l'aumento con le metriche di cache hit del client e isola il traffico non correlato durante la validazione. Questo contatore non è un rapporto di cache hit, e una lettura dell'applicazione riuscita o più veloce da sola non prova l'uso della cache. La popolazione è asincrona, quindi le letture ripetute immediate potrebbero comunque non restituire dati. Vedi Verifica il percorso della richiesta DACS.
Latenza di richiesta di successo P95 (millisecondi)
histogram_quantile(
0.95,
sum by (le, cluster, namespace, pod) (
rate(cache_server_successful_request_latency_ms_bucket[5m])
)
)
Dimensione media delle richieste di download
sum by (cluster, namespace, pod) (rate(cache_server_download_request_size_bytes_sum[5m]))
/
sum by (cluster, namespace, pod) (rate(cache_server_download_request_size_bytes_count[5m]))
Accettare gli overflow della coda
sum by (cluster, namespace, pod) (increase(cache_server_accept_queue_overflows_total[5m]))
Ascolto e rimozioni della coda SYN
sum by (cluster, namespace, pod) (
increase(cache_server_listen_drops_total[5m])
+ increase(cache_server_syn_queue_full_drops_total[5m])
)
Avvisi consigliati
Crea avvisi che riflettano la baseline del carico di lavoro e la dimensione della VM del server cache. Al minimo, considera gli avvisi per:
- Un bersaglio di scraping DACS non disponibile o mancante.
- Aumenti sostenuti diversi da zero in
cache_server_accept_queue_overflows_total. - Aumenti persistenti diversi da zero in
cache_server_listen_drops_totalocache_server_syn_queue_full_drops_total. - Aumenti in
cache_server_accept_errors_total, raggruppati pererrno. - Latenza delle richieste riuscite P95 o P99 superiore all'obiettivo del carico di lavoro.
- Connessioni attive che si avvicinano alla capacità testata delle dimensioni della VM del server di cache.
- Cambiamenti inaspettati nella dimensione della cache o squilibri tra i pod dei server della cache.
- Handle di file allocati a livello di sistema anormalmente elevati. Ricorda che
cache_server_open_fdsnon è un conteggio di descrittori di file per processo.
Stabilire una linea di base in condizioni di concorrenza previste prima di impostare soglie fisse. Correlaciona le metriche di pressione di rete con la frequenza delle richieste, la dimensione della richiesta, la latenza, la CPU del nodo, la memoria dei nodi e le metriche di richiesta e byte di Azure Blob.