Statistiche

/v1/stats

Raccogli statistiche importanti di Coreapp e database con il nodo stats. Misura le prestazioni della tua coda con la dimensione della coda di callback e il numero di messaggi in sospeso correnti.

Questo documento tratta gli argomenti seguenti:

Statistiche di Coreapp

Usa l'endpoint /v1/stats/app per ottenere statistiche di Coreapp in formato JSON. Le statistiche di Coreapp sono conservate nella memoria e possono essere interrogate a intervalli regolari, se necessario.

Richiesta

GET /v1/stats/app

Risposta

Se l'azione è eseguita correttamente, la richiesta restituisce 200 OK e un corpo del messaggio contenente un oggetto app.

Istanza singola

"stats": {
    "app": {
        "callback_queue_size": {
            "data": [
                {
                    "value": 450
                }
            ],
            "help": "Current callback queue size",
            "type": "gauge"
        },
        "callback_requests_duration_ms_count": {
            "data": [
                {
                    "labels": {
                        "result": "success",
                        "type": "inbound_message"
                    },
                    "value": 2
                },
                {
                    "labels": {
                        "result": "1",
                        "type": "status_change"
                    },
                    "value": 28
                }
            ],
            "help": "Total number of callback requests",
            "type": "counter"
        },
        "callback_requests_duration_ms_sum": {
            "data": [
                {
                    "labels": {
                        "result": "success",
                        "type": "inbound_message"
                    },
                    "value": 32
                },
                {
                    "labels": {
                        "result": "1",
                        "type": "status_change"
                    },
                    "value": 451
                }
            ],
            "help": "Total duration(ms) of callback requests",
            "type": "counter"
        },
        "db_request_duration_us_count": {
            "data": [
                {
                    "labels": {
                        "db": "messageStore",
                        "request": "commit"
                    },
                    "value": 5
                },
                {
                    "labels": {
                        "db": "_jobqueue-WhatsApp",
                        "request": "prepare"
                    },
                    "value": 10
                }, ...
            "help": "Total number of successful SQL queries",
            "type": "counter"
        },
        "db_request_duration_us_sum": {
            "data": [
                {
                    "labels": {
                        "db": "messageStore",
                        "request": "commit"
                    },
                    "value": 14967
                },
                {
                    "labels": {
                        "db": "_jobqueue-WhatsApp",
                        "request": "prepare"
                    },
                    "value": 4236
                },...
            "help": "Total duration(microseconds) of successful SQL queries",
            "type": "counter"
        },
        "endpoint_requests": {
            "data": [
                {
                    "labels": {
                        "method": "contacts",
                        "result": "ok"
                    },
                    "value": 3864
                },
                {
                    "labels": {
                        "method": "messaging",
                        "result": "ok"
                    },
                    "value": 3576
                },
                {
                    "labels": {
                        "method": "messaging",
                        "result": "1020"
                    },
                    "value": 15
                },
                {
                    "labels": {
                        "method": "control",
                        "result": "ok"
                    },
                    "value": 4169
                }
            ],
            "help": "Total number of endpoint requests made",
            "type": "counter"
        },
        "endpoint_requests_duration_ms_count": {
            "data": [
                {
                    "labels": {
                        "method": "app_stats",
                        "result": "ok"
                    },
                    "value": 1
                },
                ...
            ],
            "help": "Total number of endpoint requests",
            "type": "counter"
        },
        "endpoint_requests_duration_ms_sum": {
            "data": [
                {
                    "labels": {
                        "method": "app_stats",
                        "result": "ok"
                    },
                    "value": 2
                },
                ...
            ],
            "help": "Total duration(ms) of endpoint requests",
            "type": "counter"
        },
        "in_message_decoded": {
            "data": [
                {
                    "labels": {
                        "type": "image"
                    },
                    "value": 1
                },
                {
                    "labels": {
                        "type": "undefined"
                    },
                    "value": 8
                }
            ],
            "help": "Total number of incoming messages",
            "type": "counter"
        },
        "in_message_from_server": {
            "data": [
                {
                    "value": 9
                }
            ],
            "help": "Total number of incoming encrypted messages from server",
            "type": "counter"
        },
        "in_message_persisted": {
            "data": [
                {
                    "labels": {
                        "type": "image"
                    },
                    "value": 1
                },
                {
                    "labels": {
                        "type": "system"
                    },
                    "value": 3350
                },
                {
                    "labels": {
                        "type": "undefined"
                    },
                    "value": 8
                }
            ],
            "help": "Total number of incoming messages cached in DB",
            "type": "counter"
        },
        "in_messages_pending_processing": {
            "data": [
                {
                    "value": 0
                }
            ],
            "help": "Number of encrypted messages received yet to be processed",
            "type": "gauge"
        },
        "internal_server_conn_duration_ms_count": {
            "data": [
                {
                    "labels": {
                        "result": "Connected"
                    },
                    "value": 1
                }
            ],
            "help": "Total number of internal server connection requests made",
            "type": "counter"
        },
        "internal_server_conn_duration_ms_sum": {
            "data": [
                {
                    "labels": {
                        "result": "Connected"
                    },
                    "value": 584
                }
            ],
            "help": "Total time spent in connecting to internal server in ms",
            "type": "counter"
        },
        "internal_server_requests_duration_ms_count": {
            "data": [
                {
                    "labels": {
                        "operation": "FieldStatsResult",
                        "result": "ok"
                    },
                    "value": 2
                },
                {
                    "labels": {
                        "operation": "GetPrivacyListResult",
                        "result": "404"
                    },
                    "value": 1
                },...
            "help": "Number of internal server requests",
            "type": "counter"
        },
        "internal_server_requests_duration_ms_sum": {
            "data": [
                {
                    "labels": {
                        "operation": "FieldStatsResult",
                        "result": "ok"
                    },
                    "value": 158
                },
                {
                    "labels": {
                        "operation": "GetPrivacyListResult",
                        "result": "404"
                    },
                    "value": 347
                },...
            "help": "Duration of internal server requests",
            "type": "counter"
        },
        "media_downloads": {
            "data": [
                {
                    "labels": {
                        "result": "unknown",
                        "type": "image"
                    },
                    "value": 1
                }
            ],
            "help": "Total number of media messages downloaded from server",
            "type": "counter"
        },
        "media_uploads": {
            "data": [
                {
                    "labels": {
                        "result": "ok",
                        "type": "audio"
                    },
                    "value": 95
                },
                {
                    "labels": {
                        "result": "ok",
                        "type": "document"
                    },
                    "value": 145
                },
                {
                    "labels": {
                        "result": "ok",
                        "type": "image"
                    },
                    "value": 81
                }
            ],
            "help": "Total number of media messages uploaded to server",
            "type": "counter"
        },
        "out_message_persisted": {
            "data": [
                {
                    "labels": {
                        "type": "document"
                    },
                    "value": 145
                },
                {
                    "labels": {
                        "type": "audio"
                    },
                    "value": 95
                },
                {
                    "labels": {
                        "type": "image"
                    },
                    "value": 81
                },
                {
                    "labels": {
                        "type": "undefined"
                    },
                    "value": 79
                },
                {
                    "labels": {
                        "type": "hsm"
                    },
                    "value": 3176
                }
            ],
            "help": "Total number of outgoing messages cached in DB",
            "type": "counter"
        },
        "out_message_sent_duration_ms_count": {
            "data": [
                {
                    "labels": {
                        "retry": "0",
                        "type": "hsm"
                    },
                    "value": 3576
                }, ...
            ],
            "help": "Total number of messages sent to server successfully",
            "type": "counter"
        },
        "out_message_sent_duration_ms_sum": {
            "data": [
                {
                    "labels": {
                        "retry": "0",
                        "type": "hsm"
                    },
                    "value": 536433
                }, ...
            ],
            "help": "Total number of durations used to send messages to server",
            "type": "counter"
        },
        "out_message_status": {
            "data": [
                {
                    "labels": {
                        "status": "delivered"
                    },
                    "value": 1034
                },
                {
                    "labels": {
                        "status": "sent"
                    },
                    "value": 3576
                },
                {
                    "labels": {
                        "status": "read"
                    },
                    "value": 1034
                }
            ],
            "help": "Total number of outgoing messages of a particular status",
            "type": "counter"
        },
        "pending_callbacks": {
            "data": [
                {
                    "labels": {
                        "type": "inbound_message"
                    },
                    "value": 8
                },
                {
                    "labels": {
                        "type": "status_change"
                    },
                    "value": 442
                }
            ],
            "help": "Current number of pending callbacks in the queue",
            "type": "gauge"
        },
        "pending_messages": {
            "data": [
                {
                    "value": 0
                }
            ],
            "help": "Current number of pending messages in the queue",
            "type": "gauge"
        }
    }
}

High Availability/Multiconnect

{
    "stats": {
       "app": {
           "your-hostname1:your-container-id1":{
             "callback_queue_size": {
               "data": [
                 {"value": 450}
               ],
               "help": "Current callback queue size",
               "type": "gauge"
             },
             ...
           },
           "your-hostname2:your-container-id2":{
             "callback_queue_size": {
               "data": [
                 {"value": 10}
               ],
               "help": "Current callback queue size",
               "type": "gauge"
             },
             ...
           },
           ...
        }
    }
}

Parametri

NomeTipoDescrizione

callback_queue_size

Oggetto

Dimensione della coda di callback attuali

callback_requests_duration_ms_count

Oggetto

Numero totale di richieste di callback effettuate e risultato

callback_requests_duration_ms_sum

Oggetto

Durata totale (ms) delle richieste di callback

concurrent_rate_limit_triggered*

Oggetto

Numero attuale di trigger del rate limiting concorrenti

db_request_duration_us_count

Oggetto

Numero totale di query SQL eseguite correttamente

db_request_duration_us_sum

Oggetto

Durata totale (microsecondi) delle query SQL eseguite correttamente

db_request_error_duration_us_count

Oggetto

Numero totale di query SQL non riuscite

db_request_error_duration_us_sum

Oggetto

Durata totale (microsecondi) delle query SQL non riuscite

endpoint_requests

Oggetto

Numero totale di richieste di endpoint effettuate per un determinato endpoint e risultato (ok o un codice di errore)

endpoint_requests_duration_ms_count

Oggetto

Numero totale di richieste di endpoint

endpoint_requests_duration_ms_sum

Oggetto

Durata totale (ms) delle richieste di endpoint

in_message_decoded*

Oggetto

Numero totale di messaggi in entrata decodificati correttamente

in_message_from_server*

Oggetto

Numero totale di messaggi crittografati in entrata dal server

in_message_persisted*

Oggetto

Numero totale di messaggi in entrata memorizzati nella cache del database

in_messages_pending_processing

Oggetto

Numero di messaggi crittografati ricevuti ancora da elaborare

internal_server_conn_duration_ms_count

Oggetto

Numero totale di richieste di connessione al server interno effettuate

internal_server_conn_duration_ms_sum

Oggetto

Tempo totale (ms) impiegato per connettersi al server interno in ms

internal_server_requests_duration_ms_count

Oggetto

Numero totale di richieste del server interno

internal_server_requests_duration_ms_sum

Oggetto

Durata totale (ms) delle richieste del server interno

media_downloads*

Oggetto

Numero totale di file multimediali scaricati dal server

media_uploads*

Oggetto

Numero totale di file multimediali caricati sul server

out_message_persisted*

Oggetto

Numero totale di messaggi in uscita memorizzati nella cache del database

out_message_status

Oggetto

Numero totale di messaggi in uscita di uno status specifico

out_message_sent_duration_ms_count

Oggetto

Numero totale di messaggi inviati correttamente al server

out_message_sent_duration_ms_sum

Oggetto

Tempo totale (ms) impiegato per inviare messaggi al server

pending_callbacks*

Oggetto

Numero attuale di callback in sospeso nella coda per ciascun tipo di callback

pending_messages

Oggetto

Numero attuale di messaggi in sospeso nella coda

per_sec_request_rate_limit_triggered*

Oggetto

Numero attuale di trigger di rate limiting delle richieste per secondo

per_hour_request_rate_limit_triggered*

Oggetto

Numero attuale di trigger di rate limiting delle richieste per ora

per_day_request_rate_limit_triggered*

Oggetto

Numero attuale di trigger di rate limiting delle richieste per giorno

per_day_contacts_scrape_limit_triggered*

Oggetto

Numero attuale di trigger del limite di estrazione di contatti per giorno

*Questi campi di risposta sono disponibili a partire dalla v2.21.3.

Statistiche di Coreapp - Prometheus

Restituisce i dati di Coreapp in formato Prometheus.

Richiesta

GET /v1/stats/app?format=prometheus

Risposta

Istanza singola

# HELP callback_queue_size Current callback queue size
# TYPE callback_queue_size gauge
callback_queue_size 450
# HELP callback_requests_duration_ms_count Total number of callback requests
# TYPE callback_requests_duration_ms_count counter
callback_requests_duration_ms_count{result="success",type="inbound_message"} 2
callback_requests_duration_ms_count{result="1",type="status_change"} 28
# HELP callback_requests_duration_ms_sum Total duration(ms) of callback requests
# TYPE callback_requests_duration_ms_sum counter
callback_requests_duration_ms_sum{result="success",type="inbound_message"} 32
callback_requests_duration_ms_sum{result="1",type="status_change"} 451
# HELP db_request_duration_us_count Total number of successful SQL queries
# TYPE db_request_duration_us_count counter
db_request_duration_us_count{db="messageStore",request="commit"} 5
db_request_duration_us_count{db="_jobqueue-WhatsApp",request="prepare"} 10
...
# HELP db_request_duration_us_sum Total duration(microseconds) of successful SQL queries
# TYPE db_request_duration_us_sum counter
db_request_duration_us_sum{db="messageStore",request="commit"} 14967
db_request_duration_us_sum{db="_jobqueue-WhatsApp",request="prepare"} 4236
...
# HELP endpoint_requests Total number of endpoint requests made
# TYPE endpoint_requests counter
endpoint_requests{method="contacts",result="ok"} 3864
endpoint_requests{method="messaging",result="ok"} 3576
endpoint_requests{method="messaging",result="1020"} 15
endpoint_requests{method="control",result="ok"} 4262
# HELP endpoint_requests_duration_ms_count Total number of endpoint requests
# TYPE endpoint_requests_duration_ms_count counter
endpoint_requests_duration_ms_count{method="app_stats",result="ok"} 1
...
# HELP endpoint_requests_duration_ms_sum Total duration(ms) of endpoint requests
# TYPE endpoint_requests_duration_ms_sum counter
endpoint_requests_duration_ms_sum{method="app_stats",result="ok"} 2
...
# HELP in_message_decoded Total number of incoming messages
# TYPE in_message_decoded counter
in_message_decoded{type="image"} 1
in_message_decoded{type="undefined"} 8
# HELP in_message_from_server Total number of incoming encrypted messages from server
# TYPE in_message_from_server counter
in_message_from_server 9
# HELP in_message_persisted Total number of incoming messages cached in DB
# TYPE in_message_persisted counter
in_message_persisted{type="image"} 1
in_message_persisted{type="system"} 3350
in_message_persisted{type="undefined"} 8
# HELP in_messages_pending_processing Number of encrypted messages received yet to be processed
# TYPE in_messages_pending_processing gauge
in_messages_pending_processing 0
# HELP internal_server_conn_duration_ms_count Total number of internal server connection requests made
# TYPE internal_server_conn_duration_ms_count counter
internal_server_conn_duration_ms_count{result="Connected"} 1
# HELP internal_server_conn_duration_ms_sum Total time spent in connecting to internal server in ms
# TYPE internal_server_conn_duration_ms_sum counter
internal_server_conn_duration_ms_sum{result="Connected"} 584
# HELP internal_server_requests_duration_ms_count Number of internal server requests
# TYPE internal_server_requests_duration_ms_count counter
internal_server_requests_duration_ms_count{operation="FieldStatsResult",result="ok"} 2
internal_server_requests_duration_ms_count{operation="GetPrivacyListResult",result="404"} 1
...
# HELP internal_server_requests_duration_ms_sum Duration of internal server requests
# TYPE internal_server_requests_duration_ms_sum counter
internal_server_requests_duration_ms_sum{operation="FieldStatsResult",result="ok"} 158
internal_server_requests_duration_ms_sum{operation="GetPrivacyListResult",result="404"} 347
...
# HELP media_downloads Total number of media messages downloaded from server
# TYPE media_downloads counter
media_downloads{result="unknown",type="image"} 1
# HELP media_uploads Total number of media messages uploaded to server
# TYPE media_uploads counter
media_uploads{result="ok",type="audio"} 95
media_uploads{result="ok",type="document"} 145
media_uploads{result="ok",type="image"} 81
# HELP out_message_persisted Total number of outgoing messages cached in DB
# TYPE out_message_persisted counter
out_message_persisted{type="document"} 145
out_message_persisted{type="audio"} 95
out_message_persisted{type="image"} 81
out_message_persisted{type="undefined"} 79
out_message_persisted{type="hsm"} 3176
# HELP out_message_sent_duration_ms_count Total number of messages sent to server successfully
# TYPE out_message_sent_duration_ms_count counter
out_message_sent_duration_ms_count{retry="0",type="hsm"} 3576
...
# HELP out_message_sent_duration_ms_sum Total number of durations used to send messages to server
# TYPE out_message_sent_duration_ms_sum counter
out_message_sent_duration_ms_sum{retry="0",type="hsm"} 536433
...
# HELP out_message_status Total number of outgoing messages of a particular status
# TYPE out_message_status counter
out_message_status{status="delivered"} 1034
out_message_status{status="sent"} 3576
out_message_status{status="read"} 1034
# HELP pending_callbacks Current number of pending callbacks in the queue
# TYPE pending_callbacks gauge
pending_callbacks{type="inbound_message"} 8
pending_callbacks{type="status_change"} 442
# HELP pending_messages Current number of pending messages in the queue
# TYPE pending_messages gauge
pending_messages 0

High Availability/Multiconnect

# HELP callback_queue_size Current callback queue size
# TYPE callback_queue_size gauge
callback_queue_size{node="your-hostname1:your-container-id1"} 0
callback_queue_size{node="your-hostname2:your-container-id2"} 0
...

Statistiche del database

Usa l'endpoint /v1/stats/db per ottenere statistiche del database in formato JSON.

Il controllo delle statistiche del database può richiedere molto tempo e influire sulle prestazioni dell'app se il database è di grandi dimensioni. Si consiglia di raccogliere queste informazioni solo quando necessario.

Richiesta

GET /v1/stats/db

Risposta

Se l'azione è eseguita correttamente, la richiesta restituisce 200 OK e un corpo del messaggio contenente un oggetto db.

Istanza singola

{
    "stats": {
        "db": {
            "db_contacts": {
                "data": [
                    {
                        "labels": {
                            "type": "non_whatsapp_user"
                        },
                        "value": 2
                    },
                    {
                        "labels": {
                            "type": "whatsapp_user"
                        },
                        "value": 5
                    }
                ],
                "help": "Current number of contacts in DB",
                "type": "gauge"
            },
            "db_message_receipts": {
                "data": [
                    {
                        "value": 6
                    }
                ],
                "help": "Current number of message receipts in DB",
                "type": "gauge"
            },
            "db_messages": {
                "data": [
                    {
                        "labels": {
                            "type": "undefined"
                        },
                        "value": 2
                    },
                    {
                        "labels": {
                            "type": "system"
                        },
                        "value": 1
                    }
                ],
                "help": "Current number of messages in DB",
                "type": "gauge"
            },
            "db_pending_callbacks": {
                "data": [
                    {
                        "value": 0
                    }
                ],
                "help": "Current number of pending callbacks in DB",
                "type": "gauge"
            },
            "db_pending_messages": {
                "data": [
                    {
                        "value": 0
                    }
                ],
                "help": "Current number of pending messages in DB",
                "type": "gauge"
            }
        }
    },
    "meta": {
        "api_status": "stable",
        "version": "2.18.13"
    }
} 
  

High Availability/Multiconnect

Solo il master primario restituirà stats, gli altri restituiranno {}.

{
    "stats": {
       "db": {
          "your-hostname1:your-container-id1": {},
          "your-primary-master:your-container-id2": {
             "db_contacts": {
               "data": [ {
                 "labels": {
                   "type": "whatsapp_user"
                 },
                 "value": 4
               } ],
               "help": "Current number of contacts in DB",
               "type": "gauge"
             },

             "db_message_receipts": { ... },

             "db_messages": { ... },
           
             "db_pending_callbacks": { ... },
           
             "db_pending_messages": { ... }
          },
         "your-hostname3:your-container-id3": {},
         ...
       }   
    }
}

Parametri

NomeTipoDescrizione

db_contacts

Oggetto

Numero attuale di contatti nel database

db_message_receipts

Oggetto

Numero attuale di ricevute dei messaggi nel database

db_messages

Oggetto

Numero attuale di messaggi nel database

db_pending_callbacks

Oggetto

Numero attuale di callback in sospeso nel database

db_pending_messages

Oggetto

Numero attuale di messaggi in sospeso nel database

Statistiche del database - Prometheus

Restituisce le statistiche del database in formato Prometheus.

Richiesta

GET /v1/stats/db?format=prometheus

Risposta

Istanza singola

# HELP db_contacts Current number of contacts in DB
# TYPE db_contacts gauge
db_contacts{type="whatsapp_user"} 3
# HELP db_message_receipts Current number of message receipts in DB
# TYPE db_message_receipts gauge
db_message_receipts 0

High Availability/Multiconnect

# HELP db_contacts Current number of contacts in DB
# TYPE db_contacts gauge
db_contacts{node="your-primary-master:your-container-id", type="whatsapp_user"} 3
# HELP db_message_receipts Current number of message receipts in DB
# TYPE db_message_receipts gauge
db_message_receipts{node="your-primary-master:your-container-id"} 0