Back to Skywalking

Support ClickHouse Monitoring

docs/en/swip/SWIP-5.md

10.4.016.4 KB
Original Source

Support ClickHouse Monitoring

Motivation

ClickHouse is a high-performance, column-oriented SQL database management system (DBMS) for online analytical processing (OLAP). It is available as both an open-source software and a cloud offering.

Now I want to add ClickHouse monitoring via the OpenTelemetry Collector which fetches metrics from it's own HTTP endpoint to expose metrics data for Prometheus (since ClickHouse v20.1.2.4). Clickhouse Exporter used only for old ClickHouse versions, modern versions have embedded prometheus endpoint.

Architecture Graph

There is no significant architecture-level change.

Proposed Changes

ClickHouse expose own metrics via HTTP endpoint to opentelemetry collector, using skyWalking openTelemetry receiver to fetch these metrics.

The exposed metrics are from the system.metrics table / the system.events table / the system.asynchronous_metrics table.

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_connectionsNumber of connections to TCP server.ClickHouse
MysqlConnectionscountmeter_clickhouse_instance_mysql_connections
meter_clickhouse_mysql_connectionsNumber of client connections using MySQL protocol.ClickHouse
HttpConnectionscountmeter_clickhouse_instance_http_connections
meter_clickhouse_mysql_connectionsNumber of connections to HTTP server.ClickHouse
InterserverConnectionscountmeter_clickhouse_instance_interserver_connections
meter_clickhouse_interserver_connectionsNumber of connections from other replicas to fetch parts.ClickHouse
PostgresqlConnectionscountmeter_clickhouse_instance_postgresql_connections
meter_clickhouse_postgresql_connectionsNumber of client connections using PostgreSQL protocol.ClickHouse
ReceiveBytesbytesmeter_clickhouse_instance_network_receive_bytes
meter_clickhouse_network_receive_bytesTotal number of bytes received from network.ClickHouse
SendBytesbytesmeter_clickhouse_instance_network_send_bytes
meter_clickhouse_network_send_bytesTotal number of bytes send to network.ClickHouse

ClickHouse Query Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
QueryCountcountmeter_clickhouse_instance_query
meter_clickhouse_queryNumber of executing queries.ClickHouse
SelectQueryCountcountmeter_clickhouse_instance_query_select
meter_clickhouse_query_selectNumber of executing queries, but only for SELECT queries.ClickHouse
InsertQueryCountcountmeter_clickhouse_instance_query_insert
meter_clickhouse_query_insertNumber of executing queries, but only for INSERT queries.ClickHouse
SelectQueryRatecount/secmeter_clickhouse_instance_query_select_rate
meter_clickhouse_query_select_rateNumber of SELECT queries per second.ClickHouse
InsertQueryRatecount/secmeter_clickhouse_instance_query_insert_rate
meter_clickhouse_query_insert_rateNumber of INSERT queries per second.ClickHouse
Querytimemicrosecmeter_clickhouse_instance_querytime_microseconds
meter_clickhouse_querytime_microsecondsTotal time of all queries.ClickHouse
SelectQuerytimemicrosecmeter_clickhouse_instance_querytime_select_microseconds
meter_clickhouse_querytime_select_microsecondsTotal time of SELECT queries.ClickHouse
InsertQuerytimemicrosecmeter_clickhouse_instance_querytime_insert_microseconds
meter_clickhouse_querytime_insert_microsecondsTotal time of INSERT queries.ClickHouse
OtherQuerytimemicrosecmeter_clickhouse_instance_querytime_other_microseconds
meter_clickhouse_querytime_other_microsecondsTotal time of queries that are not SELECT or INSERT.ClickHouse
QuerySlowCountcountmeter_clickhouse_instance_query_slow
meter_clickhouse_query_slowNumber 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_insertNumber of executing queries, but only for INSERT queries.ClickHouse
InsertedRowCountcountmeter_clickhouse_instance_inserted_rows
meter_clickhouse_inserted_rowsNumber of rows INSERTed to all tables.ClickHouse
InsertedBytesbytesmeter_clickhouse_instance_inserted_bytes
meter_clickhouse_inserted_bytesNumber of bytes INSERTed to all tables.ClickHouse
DelayedInsertCountcountmeter_clickhouse_instance_delayed_insert
meter_clickhouse_delayed_insertNumber 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_checksNumber of data parts checking for consistency.ClickHouse
ReplicatedFetchcountmeter_clickhouse_instance_replicated_fetch
meter_clickhouse_replicated_fetchNumber of data parts being fetched from replica.ClickHouse
ReplicatedSendcountmeter_clickhouse_instance_replicated_send
meter_clickhouse_replicated_sendNumber of data parts being sent to replicas.ClickHouse

ClickHouse MergeTree Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
BackgroundMergeCountcountmeter_clickhouse_instance_background_merge
meter_clickhouse_background_mergeNumber of executing background merges.ClickHouse
MergeRowscountmeter_clickhouse_instance_merge_rows
meter_clickhouse_merge_rowsRows read for background merges. This is the number of rows before merge.ClickHouse
MergeUncompressedBytesbytesmeter_clickhouse_instance_merge_uncompressed_bytes
meter_clickhouse_merge_uncompressed_bytesUncompressed 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_moveNumber of currently executing moves.ClickHouse
PartsActiveCountmeter_clickhouse_instance_parts_active
meter_clickhouse_parts_activeActive data part, used by current and upcoming SELECTs.ClickHouse
MutationsCountcountmeter_clickhouse_instance_mutations
meter_clickhouse_mutationsNumber 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_readNumber of Kafka messages already processed by ClickHouse.ClickHouse
KafkaWritescountmeter_clickhouse_instance_kafka_writes
meter_clickhouse_kafka_writesNumber of writes (inserts) to Kafka tables.ClickHouse
KafkaConsumerscountmeter_clickhouse_instance_kafka_consumers
meter_clickhouse_kafka_consumersNumber of active Kafka consumers.ClickHouse
KafkaProducerscountmeter_clickhouse_instance_kafka_producers
meter_clickhouse_kafka_producersNumber 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_sessionNumber of sessions (connections) to ZooKeeper.ClickHouse
ZookeeperWatchcountmeter_clickhouse_instance_zookeeper_watch
meter_clickhouse_zookeeper_watchNumber of watches (event subscriptions) in ZooKeeper.ClickHouse
ZookeeperBytesSentbytesmeter_clickhouse_instance_zookeeper_bytes_sent
meter_clickhouse_zookeeper_bytes_sentNumber of bytes send over network while communicating with ZooKeeper.ClickHouse
ZookeeperBytesReceivebytesmeter_clickhouse_instance_zookeeper_bytes_received
meter_clickhouse_zookeeper_bytes_receivedNumber of bytes send over network while communicating with ZooKeeper.ClickHouse

ClickHouse Keeper Supported Metrics

ClickHouse Keeper provides the coordination system for data replication and distributed DDL queries execution. ClickHouse Keeper is compatible with ZooKeeper.

ClickHouse Keeper can work in embedded mode or standalone cluster mode, the metrics below are for embedded mode.

Monitoring PanelUnitMetric NameDescriptionData Source
KeeperAliveConnectionscountmeter_clickhouse_instance_keeper_connections_alive
meter_clickhouse_keeper_connections_aliveNumber of alive connections for embedded ClickHouse Keeper.ClickHouse
KeeperOutstandingRequetscountmeter_clickhouse_instance_keeper_outstanding_requests
meter_clickhouse_keeper_outstanding_requestsNumber of outstanding requests for embedded ClickHouse Keeper.ClickHouse

Imported Dependencies libs and their licenses.

No new dependency.

Compatibility

no breaking changes.

General usage docs