blob: 9179125bee474b126b1d8601d8ed5c18f0234ba7 [file] [log] [blame] [view]
# MongoDB monitoring
SkyWalking leverages mongodb-exporter for collecting metrics data from MongoDB. It leverages OpenTelemetry
Collector to transfer the metrics to
[OpenTelemetry receiver](opentelemetry-receiver.md) and into the [Meter System](./../../concepts-and-designs/mal.md).
## Data flow
1. The `mongodb-exporter` collects metrics data from MongoDB. The exporter works side by side with the MongoDB node.
2. OpenTelemetry Collector fetches metrics from mongodb-exporter via Prometheus Receiver and pushes metrics to
SkyWalking OAP Server via OpenTelemetry gRPC exporter.
3. The SkyWalking OAP Server parses the expression with [MAL](../../concepts-and-designs/mal.md) to
filter/calculate/aggregate and store the results.
## Setup
1. Setup [mongodb-exporter](https://github.com/percona/mongodb_exporter).
2. Set up [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/getting-started/#docker). The example for OpenTelemetry Collector configuration, refer
to [here](../../../../test/e2e-v2/cases/mongodb/otel-collector-config.yaml).
3. Config SkyWalking [OpenTelemetry receiver](opentelemetry-receiver.md).
## MongoDB Monitoring
MongoDB monitoring provides multidimensional metrics monitoring of MongoDB clusters as `Layer: MONGODB` `Service` in the OAP. In each cluster, the nodes are represented as `Instance`.
### MongoDB Cluster Supported Metrics
| Monitoring Panel | Unit | Metric Name | Description | Data Source |
|---------------------------|------|-------------------------------------------|---------------------------------------------------------------------|------------------|
| Uptime (day) | day | meter_mongodb_cluster_uptime | Maximum uptime of nodes in the cluster | mongodb-exporter |
| Data Size (GB) | GB | meter_mongodb_cluster_data_size | Total data size of the cluster | mongodb-exporter |
| Collection Count | | meter_mongodb_cluster_collection_count | Number of collection of the cluster | mongodb-exporter |
| Object Count | | meter_mongodb_cluster_object_count | Number of object of the cluster | mongodb-exporter |
| Document Total QPS | | meter_mongodb_cluster_document_avg_qps | Total document operations rate of nodes | mongodb-exporter |
| Operation Total QPS | | meter_mongodb_cluster_operation_avg_qps | Total operations rate of nodes | mongodb-exporter |
| Total Connections | | meter_mongodb_cluster_connections | Cluster total connections of nodes | mongodb-exporter |
| Cursor Total | | meter_mongodb_cluster_cursor_avg | Total Opened cursor of nodes | mongodb-exporter |
| Replication Lag (ms) | ms | meter_mongodb_cluster_repl_lag | Repl set member avg replication lag, this metric works in repl mode | mongodb-exporter |
| DB Total Data Size (GB) | GB | meter_mongodb_cluster_db_data_size | Total data size of every database | mongodb-exporter |
| DB Total Index Size (GB) | GB | meter_mongodb_cluster_db_index_size | Total index size per of every database | mongodb-exporter |
| DB Total Collection Count | | meter_mongodb_cluster_db_collection_count | Total collection count of every database | mongodb-exporter |
| DB Total Index Count | | meter_mongodb_cluster_db_index_count | Total index count of every database | mongodb-exporter |
### MongoDB Node Supported Metrics
| Monitoring Panel | Unit | Metric Name | Description | Data Source |
|------------------------------|------|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------|------------------|
| Uptime (day) | day | meter_mongodb_node_uptime | Uptime of the node | mongodb-exporter |
| QPS | | meter_mongodb_node_qps | Operations per second of the node | mongodb-exporter |
| Latency | µs | meter_mongodb_node_op_rate<br/>meter_mongodb_node_latency_rate | Latency of operations | mongodb-exporter |
| Memory Usage | % | meter_mongodb_node_memory_usage | Memory usage percent of RAM | mongodb-exporter |
| Version | | meter_mongodb_node_version | MongoDB edition and version | mongodb-exporter |
| ReplSet State | | meter_mongodb_node_rs_state | Repl set state of the node, this metric works in repl mode | mongodb-exporter |
| CPU Usage (%) | % | meter_mongodb_node_cpu_total_percentage | Cpu usage percent of the node | mongodb-exporter |
| Network (KB/s) | KB/s | meter_mongodb_node_network_bytes_in<br/>meter_mongodb_node_network_bytes_out | Inbound and outbound network bytes of node | mongodb-exporter |
| Memory Free (GB) | GB | meter_mongodb_node_memory_free_kb<br/>meter_mongodb_node_swap_memory_free_kb | Free memory of RAM and swap | mongodb-exporter |
| Disk (GB) | GB | meter_mongodb_node_fs_used_size<br/>meter_mongodb_node_fs_total_size | Used and total size of disk | mongodb-exporter |
| Connections | | meter_mongodb_node_connections | Connection nums of node | mongodb-exporter |
| Active Client | | meter_mongodb_node_active_total_num<br/>meter_mongodb_node_active_reader_num<br/>meter_mongodb_node_active_writer_num | Count of active reader and writer | mongodb-exporter |
| Transactions | | meter_mongodb_node_transactions_active<br/>meter_mongodb_node_transactions_inactive | Count of transactions running on the node | mongodb-exporter |
| Document QPS | | meter_mongodb_node_document_qps | Document operations per second | mongodb-exporter |
| Operation QPS | | meter_mongodb_node_operation_qps | Operations per second | mongodb-exporter |
| Repl Operation QPS | | meter_mongodb_node_repl_operation_qps | Repl operations per second | mongodb-exporter |
| Operation Latency s) | µs | meter_mongodb_node_op_rate<br/>meter_mongodb_node_latency_rate | Latencies for different operation type | mongodb-exporter |
| Cursor | | meter_mongodb_node_cursor | Opened cursor of the node | mongodb-exporter |
| Server Status Memory (MB) | MB | meter_mongodb_node_mem_virtual<br/>meter_mongodb_node_mem_resident | Virtual and resident memory of the node | mongodb-exporter |
| Asserts | | meter_mongodb_node_asserts | The rate of raised assertions | mongodb-exporter |
| Repl Buffer Count | | meter_mongodb_node_repl_buffer_count | The current number of operations in the oplog buffer | mongodb-exporter |
| Repl Buffer Size (MB) | MB | meter_mongodb_node_repl_buffer_size<br/>meter_mongodb_node_repl_buffer_size_max | The maximum size of the oplog buffer | mongodb-exporter |
| Queued Operation | | meter_mongodb_node_queued_operation | The number of operations queued because of a lock | mongodb-exporter |
| getLastError Write Num | | meter_mongodb_node_write_wait_num<br/>meter_mongodb_node_write_wait_timeout_num | The number of write concern operation | mongodb-exporter |
| getLastError Write Time (ms) | ms | meter_mongodb_node_write_wait_time | The wait time of write concern operation | mongodb-exporter |
## Customizations
You can customize your own metrics/expression/dashboard panel.
The metrics definition and expression rules are found
in `/config/otel-rules/mongodb/mongodb-cluster.yaml, /config/otel-rules/mongodb/mongodb-node.yaml`.
The MongoDB dashboard panel configurations are found in `/config/ui-initialized-templates/mongodb`.