ClickHouse monitoring

ClickHouse server performance from built-in metrics data

SkyWalking leverages ClickHouse built-in metrics data since v20.1.2.4. It leverages OpenTelemetry Collector to transfer the metrics to OpenTelemetry receiver and into the Meter System.

Data flow

  1. Configure ClickHouse to expose metrics data for scraping from Prometheus.
  2. OpenTelemetry Collector fetches metrics from ClickeHouse server through Prometheus endpoint, and pushes metrics to SkyWalking OAP Server via OpenTelemetry gRPC exporter.
  3. The SkyWalking OAP Server parses the expression with MAL to filter/calculate/aggregate and store the results.

Set up

  1. Set up built-in prometheus endpoint .
  2. Set up OpenTelemetry Collector . For details on Prometheus Receiver in OpenTelemetry Collector, refer to here.
  3. Config SkyWalking OpenTelemetry receiver.

ClickHouse Monitoring

ClickHouse monitoring provides monitoring of the metrics 、events and asynchronous_metrics of the ClickHouse server. ClickHouse cluster is cataloged as a Layer: CLICKHOUSE Service in OAP. Each ClickHouse server is cataloged as an Instance in OAP.

ClickHouse Instance Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
CpuUsagecountmeter_clickhouse_instance_cpu_usageCPU time spent seen by OS per second(according to ClickHouse.system.dashboard.CPU Usage (cores)).ClickHouse
MemoryUsagepercentagemeter_clickhouse_instance_memory_usageTotal amount of memory (bytes) allocated by the server/ total amount of OS memory.ClickHouse
MemoryAvailablepercentagemeter_clickhouse_instance_memory_availableTotal amount of memory (bytes) available for program / total amount of OS memory.ClickHouse
Uptimesecmeter_clickhouse_instance_uptimeThe server uptime in seconds. It includes the time spent for server initialization before accepting connections.ClickHouse
Versionstringmeter_clickhouse_instance_versionVersion of the server in a single integer number in base-1000.ClickHouse
FileOpencountmeter_clickhouse_instance_file_openNumber of files opened.ClickHouse

ClickHouse Network Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
TcpConnectionscountmeter_clickhouse_instance_tcp_connections
meter_clickhouse_tcp_connections
Number of connections to TCP server.ClickHouse
MysqlConnectionscountmeter_clickhouse_instance_mysql_connections
meter_clickhouse_mysql_connections
Number of client connections using MySQL protocol.ClickHouse
HttpConnectionscountmeter_clickhouse_instance_http_connections
meter_clickhouse_mysql_connections
Number of connections to HTTP server.ClickHouse
InterserverConnectionscountmeter_clickhouse_instance_interserver_connections
meter_clickhouse_interserver_connections
Number of connections from other replicas to fetch parts.ClickHouse
PostgresqlConnectionscountmeter_clickhouse_instance_postgresql_connections
meter_clickhouse_postgresql_connections
Number of client connections using PostgreSQL protocol.ClickHouse
ReceiveBytesbytesmeter_clickhouse_instance_network_receive_bytes
meter_clickhouse_network_receive_bytes
Total number of bytes received from network.ClickHouse
SendBytesbytesmeter_clickhouse_instance_network_send_bytes
meter_clickhouse_network_send_bytes
Total number of bytes send to network.ClickHouse

ClickHouse Query Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
QueryCountcountmeter_clickhouse_instance_query
meter_clickhouse_query
Number of executing queries.ClickHouse
SelectQueryCountcountmeter_clickhouse_instance_query_select
meter_clickhouse_query_select
Number of executing queries, but only for SELECT queries.ClickHouse
InsertQueryCountcountmeter_clickhouse_instance_query_insert
meter_clickhouse_query_insert
Number of executing queries, but only for INSERT queries.ClickHouse
SelectQueryRatecount/secmeter_clickhouse_instance_query_select_rate
meter_clickhouse_query_select_rate
Number of SELECT queries per second.ClickHouse
InsertQueryRatecount/secmeter_clickhouse_instance_query_insert_rate
meter_clickhouse_query_insert_rate
Number of INSERT queries per second.ClickHouse
Querytimemicrosecmeter_clickhouse_instance_querytime_microseconds
meter_clickhouse_querytime_microseconds
Total time of all queries.ClickHouse
SelectQuerytimemicrosecmeter_clickhouse_instance_querytime_select_microseconds
meter_clickhouse_querytime_select_microseconds
Total time of SELECT queries.ClickHouse
InsertQuerytimemicrosecmeter_clickhouse_instance_querytime_insert_microseconds
meter_clickhouse_querytime_insert_microseconds
Total time of INSERT queries.ClickHouse
OtherQuerytimemicrosecmeter_clickhouse_instance_querytime_other_microseconds
meter_clickhouse_querytime_other_microseconds
Total time of queries that are not SELECT or INSERT.ClickHouse
QuerySlowCountcountmeter_clickhouse_instance_query_slow
meter_clickhouse_query_slow
Number of reads from a file that were slow.ClickHouse

ClickHouse Insertion Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
InsertQueryCountcountmeter_clickhouse_instance_query_insert
meter_clickhouse_query_insert
Number of executing queries, but only for INSERT queries.ClickHouse
InsertedRowCountcountmeter_clickhouse_instance_inserted_rows
meter_clickhouse_inserted_rows
Number of rows INSERTed to all tables.ClickHouse
InsertedBytesbytesmeter_clickhouse_instance_inserted_bytes
meter_clickhouse_inserted_bytes
Number of bytes INSERTed to all tables.ClickHouse
DelayedInsertCountcountmeter_clickhouse_instance_delayed_insert
meter_clickhouse_delayed_insert
Number of times the INSERT of a block to a MergeTree table was throttled due to high number of active data parts for partition.ClickHouse

ClickHouse Replicas Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
ReplicatedCheckscountmeter_clickhouse_instance_replicated_checks
meter_clickhouse_replicated_checks
Number of data parts checking for consistency.ClickHouse
ReplicatedFetchcountmeter_clickhouse_instance_replicated_fetch
meter_clickhouse_replicated_fetch
Number of data parts being fetched from replica.ClickHouse
ReplicatedSendcountmeter_clickhouse_instance_replicated_send
meter_clickhouse_replicated_send
Number of data parts being sent to replicas.ClickHouse

ClickHouse MergeTree Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
BackgroundMergeCountcountmeter_clickhouse_instance_background_merge
meter_clickhouse_background_merge
Number of executing background merges.ClickHouse
MergeRowscountmeter_clickhouse_instance_merge_rows
meter_clickhouse_merge_rows
Rows read for background merges. This is the number of rows before merge.ClickHouse
MergeUncompressedBytesbytesmeter_clickhouse_instance_merge_uncompressed_bytes
meter_clickhouse_merge_uncompressed_bytes
Uncompressed bytes (for columns as they stored in memory) that was read for background merges. This is the number before merge.ClickHouse
MoveCountcountmeter_clickhouse_instance_move
meter_clickhouse_move
Number of currently executing moves.ClickHouse
PartsActiveCountmeter_clickhouse_instance_parts_active
meter_clickhouse_parts_active
Active data part, used by current and upcoming SELECTs.ClickHouse
MutationsCountcountmeter_clickhouse_instance_mutations
meter_clickhouse_mutations
Number of mutations (ALTER DELETE/UPDATE).ClickHouse

ClickHouse Kafka Table Engine Supported Metrics

When table engine works with Apache Kafka.

Kafka lets you:

  • Publish or subscribe to data flows.
  • Organize fault-tolerant storage.
  • Process streams as they become available.
Monitoring PanelUnitMetric NameDescriptionData Source
KafkaMessagesReadcountmeter_clickhouse_instance_kafka_messages_read
meter_clickhouse_kafka_messages_read
Number of Kafka messages already processed by ClickHouse.ClickHouse
KafkaWritescountmeter_clickhouse_instance_kafka_writes
meter_clickhouse_kafka_writes
Number of writes (inserts) to Kafka tables.ClickHouse
KafkaConsumerscountmeter_clickhouse_instance_kafka_consumers
meter_clickhouse_kafka_consumers
Number of active Kafka consumers.ClickHouse
KafkaProducerscountmeter_clickhouse_instance_kafka_producers
meter_clickhouse_kafka_producers
Number of active Kafka producer created.ClickHouse

ClickHouse ZooKeeper Supported Metrics

ClickHouse uses ZooKeeper for storing metadata of replicas when using replicated tables. If replicated tables are not used, this section of parameters can be omitted.

Monitoring PanelUnitMetric NameDescriptionData Source
ZookeeperSessioncountmeter_clickhouse_instance_zookeeper_session
meter_clickhouse_zookeeper_session
Number of sessions (connections) to ZooKeeper.ClickHouse
ZookeeperWatchcountmeter_clickhouse_instance_zookeeper_watch
meter_clickhouse_zookeeper_watch
Number of watches (event subscriptions) in ZooKeeper.ClickHouse
ZookeeperBytesSentbytesmeter_clickhouse_instance_zookeeper_bytes_sent
meter_clickhouse_zookeeper_bytes_sent
Number of bytes send over network while communicating with ZooKeeper.ClickHouse
ZookeeperBytesReceivebytesmeter_clickhouse_instance_zookeeper_bytes_received
meter_clickhouse_zookeeper_bytes_received
Number of bytes send over network while communicating with ZooKeeper.ClickHouse

ClickHouse Keeper Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
KeeperAliveConnectionscountmeter_clickhouse_instance_keeper_connections_alive
meter_clickhouse_keeper_connections_alive
Number of alive connections for embedded ClickHouse Keeper.ClickHouse
KeeperOutstandingRequetscountmeter_clickhouse_instance_keeper_outstanding_requests
meter_clickhouse_keeper_outstanding_requests
Number of outstanding requests for embedded ClickHouse Keeper.ClickHouse

Customizations

You can customize your own metrics/expression/dashboard panel. The metrics definition and expression rules are found in /config/otel-rules/clickhouse. The ClickHouse dashboard panel configurations are found in /config/ui-initialized-templates/clickhouse.