Query NebulaGraph metrics
NebulaGraph supports querying the monitoring metrics through HTTP ports.
Metrics structure
Each metric of NebulaGraph consists of three fields: name, type, and time range. The fields are separated by periods, for example, num_queries.sum.600. Different NebulaGraph services (Graph, Storage, or Meta) support different metrics. The detailed description is as follows.
| Field | Example | Description |
|---|---|---|
| Metric name | num_queries | Indicates the function of the metric. |
| Metric type | sum | Indicates how the metrics are collected. Supported types are SUM, AVG, RATE, and the P-th sample quantiles such as P75, P95, P99, and P999. |
| Time range | 600 | The time range in seconds for the metric collection. Supported values are 5, 60, 600, and 3600, representing the last 5 seconds, 1 minute, 10 minutes, and 1 hour. |
Query metrics over HTTP
Syntax
curl -G "http://<host>:<port>/stats?stats=<metric_name_list> [&format=json]"
| Parameter | Description |
|---|---|
host | The IP (or hostname) of the server. You can find it in the configuration file in the installation directory. |
port | The HTTP port of the server. You can find it in the configuration file in the installation directory. The default ports are 19559 (Meta), 19669 (Graph), and 19779 (Storage). |
metric_name_list | The metrics names. Multiple metrics are separated by commas (,). |
&format=json | Optional. Returns the result in the JSON format. |
If NebulaGraph is deployed with Docker Compose, run docker-compose ps to check the ports that are mapped from the service ports inside of the container and then query through them.
Query a single metric
Query the query number in the last 10 minutes in the Graph Service.
$ curl -G "http://192.168.8.40:19669/stats?stats=num_queries.sum.600"
num_queries.sum.600=400
Query multiple metrics
Query the following metrics together:
-
The average heartbeat latency in the last 1 minute.
-
The average latency of the slowest 1% heartbeats, i.e., the P99 heartbeats, in the last 10 minutes.
$ curl -G "http://192.168.8.40:19559/stats?stats=heartbeat_latency_us.avg.60,heartbeat_latency_us.p99.600"heartbeat_latency_us.avg.60=281heartbeat_latency_us.p99.600=985
Return a JSON result.
Query the number of new vertices in the Storage Service in the last 10 minutes and return the result in the JSON format.
$ curl -G "http://192.168.8.40:19779/stats?stats=num_add_vertices.sum.600&format=json"
[{"value":1,"name":"num_add_vertices.sum.600"}]
Query all metrics in a service.
If no metric is specified in the query, NebulaGraph returns all metrics in the service.
$ curl -G "http://192.168.8.40:19559/stats"
heartbeat_latency_us.avg.5=304
heartbeat_latency_us.avg.60=308
heartbeat_latency_us.avg.600=299
heartbeat_latency_us.avg.3600=285
heartbeat_latency_us.p75.5=652
heartbeat_latency_us.p75.60=669
heartbeat_latency_us.p75.600=651
heartbeat_latency_us.p75.3600=642
heartbeat_latency_us.p95.5=930
heartbeat_latency_us.p95.60=963
heartbeat_latency_us.p95.600=933
heartbeat_latency_us.p95.3600=929
heartbeat_latency_us.p99.5=986
heartbeat_latency_us.p99.60=1409
heartbeat_latency_us.p99.600=989
heartbeat_latency_us.p99.3600=986
num_heartbeats.rate.5=0
num_heartbeats.rate.60=0
num_heartbeats.rate.600=0
num_heartbeats.rate.3600=0
num_heartbeats.sum.5=2
num_heartbeats.sum.60=40
num_heartbeats.sum.600=394
num_heartbeats.sum.3600=2364
...
Space-level metrics
The Graph service supports a set of space-level metrics that record the information of different graph spaces separately.
Space-level metrics can be queried only by querying all metrics. For example, run curl -G "http://192.168.8.40:19559/stats" to show all metrics. The returned result contains the graph space name in the form of {space=space_name}, such as num_active_queries{space=basketballplayer}.sum.5=0.
To enable space-level metrics, set the value of enable_space_level_metrics to true in the Graph service configuration file before starting NebulaGraph. For details about how to modify the configuration, see Configuration Management.