ClickHouse系统表和监控指标、监控工具和平台

目录

1. 系统表和监控指标

1.1 如何查看服务状态

1.2 ClickHouse系统表

1.2.1 system.tables表

1.2.2 system.columns表

1.2.3 system.databases表

1.2.4 system.metrics表

1.2.5 system.events表

1.2.6 system.processes表

1.2.7 system.asynchronous_metrics表

1.3 ClickHouse系统日志表

1.3.1 metric_log表

1.3.2 system.query_log表

1.3.3 system.query_thread_log表

1.3.4 system.trace_log表

1.3.5 system.part_log表

1.3.6 system.crash_log表

1.3.7 system.text_log表

1.4 ClickHouse常用的监控指标

2. 监控工具和平台

2.1 监控工具和平台-常用监控工具简介

2.2 集成第三方监控平台(如Grafana、Zabbix等)

2.2.1 如何使用Grafana监控ClickHouse

2.2.2 如何安装并配置Grafana

2.2.3 如何安装ClickHouse插件

2.2.4 如何配置数据源

2.2.5 如何创建仪表盘

2.2.6 如何使用Zabbix监控ClickHouse?

2.2.7 如何安装Zabbix

2.2.8 如何配置Zabbix来监控ClickHouse

2.2.9 如何导入Zabbix模板

2.2.10 Zabbix能监控ClickHouse哪些指标

2.2.11 如何查看Zabbix监控结果

2.2.12 如何使用Datadog监控ClickHouse

2.2.13 如何安装Datadog

2.2.14 如何查看Datadog监控结果


1. 系统表和监控指标

ClickHouse提供了一些系统表,可以用来查看服务器的状态、进程以及环境,以及服务器的内部进程。这些系统表存储在`system`数据库中,仅提供数据读取功能。大多数系统表将其数据存储在RAM中,而系统日志表(如`metric_log`, `query_log`, `query_thread_log`, `trace_log`, `part_log`, `crash_log`和`text_log`)默认采用MergeTree引擎并将其数据存储在文件系统中。

1.1 如何查看服务状态

可以通过多种方式查看ClickHouse服务器的状态。例如,可以通过观察服务器日志来跟踪服务器事件。此外,ClickHouse服务本身具有用于自我状态监视的指标,可以在`system.metrics`,`system.events`以及`system.asynchronous_metrics`等系统表中查看所有的指标项。

还可以通过HTTP API监视服务器可用性,例如将HTTP GET请求发送到/ping。如果服务器可用,它将以200 OK响应。

要查看ClickHouse服务器的状态,您可以使用以下命令:`sudo systemctl status clickhouse-server`。这将显示有关ClickHouse服务器进程的信息,包括其运行状态和最近的日志条目。

此外,您还可以通过查询系统表`system.processes`来查看后台进程。要执行此操作,您可以使用ClickHouse客户端或任何支持SQL查询的工具连接到ClickHouse服务器,并运行以下查询:`SELECT * FROM system.processes`。这将返回有关当前正在运行的查询的信息,包括它们的用户、查询ID、查询文本、持续时间和内存使用情况。

1.2 ClickHouse系统表

ClickHouse有许多有用的系统表,它们提供有关服务器状态、进程和环境以及服务器内部进程的信息。这些系统表位于system数据库中,仅可用于读取数据,不能删除或更改,但可以分离。

- system.tables:包含服务器知道的每个表的元数据。
- system.columns:包含每个表中每个列的元数据。
- system.databases:包含每个数据库的元数据。

此外,还有一些系统日志表,如metric_log、query_log、query_thread_log、trace_log、part_log、crash_log和text_log。它们由MergeTree表引擎提供服务,并默认将其数据存储在文件系统中。

1.2.1 system.tables表

ClickHouse的system.tables表包含服务器知道的每个表的元数据。它包含以下列:

- database (String) - 表所在的数据库名称。
- name (String) - 表名。
- engine (String) - 表引擎名称(不带参数)。
- is_temporary (UInt8) - 指示表是否为临时表的标志。
- data_paths (Array(String)) - 文件系统中表数据的路径。
- metadata_path (String) - 文件系统中表元数据的路径。
- metadata_modification_time (DateTime) - 表元数据最近修改时间。
- create_table_query (String) - 用于创建表的查询。
- engine_full (String) - 表引擎的参数。

1.2.2 system.columns表

ClickHouse的system.columns表包含所有表中列的信息。你可以使用这个表来获得类似于DESCRIBE TABLE查询的信息,但是可以同时获得多个表的信息。临时表中的列只在创建它们的会话中的system.columns中才可见,并且它们的database字段显示为空。

system.columns表包含以下列:

- database (String) - 数据库名称。
- table (String) - 表名。
- name (String) - 列名。
- type (String) - 列类型。
- position (UInt64) - 表中列的序号,从1开始。
- default_kind (String) - 默认值的表达式类型(DEFAULT、MATERIALIZED、ALIAS),如果未定义,则为空字符串。
- default_expression (String) - 默认值的表达式,如果未定义,则为空字符串。

例如,你可以使用以下查询来查看system.numbers表中所有列的名称和类型:

SELECT name, type FROM system.columns WHERE table = 'numbers'

这将返回以下结果:

┌─name────┬─type───┐
│ number  │ UInt64 │
└─────────┴────────┘

1.2.3 system.databases表

 ClickHouse的system.databases表包含当前用户可用的数据库的信息。它包含以下列:

- name (String) - 数据库名称。
- engine (String) - 数据库引擎。
- data_path (String) - 数据路径。
- metadata_path (String) - 元数据路径。

例如,你可以使用以下查询来查看当前用户可用的所有数据库:

SELECT * FROM system.databases

这将返回类似于以下的结果:

┌─name────────────┬─engine───┬─data_path────────────────────┬─metadata_path──────────────────────────────┐
│ default         │ Ordinary │ /var/lib/clickhouse/data/    │ /var/lib/clickhouse/metadata/default.sql   │
│ system          │ Ordinary │ /var/lib/clickhouse/data/    │ /var/lib/clickhouse/metadata/system.sql    │
│ _temporary_and_external_tables│ Ordinary │ /var/lib/clickhouse/data/    │                                            │
└─────────────────┴──────────┴─────────────────────────────┴

1.2.4 system.metrics表

`system.metrics`表包含可以即时计算或具有当前值的指标。例如,同时处理的查询数量或当前的复制延迟。它的列包括:

- `metric` (String) - 指标名称。
- `value` (Int64) - 指标的值。
- `description` (String) - 指标的描述。

查看指标名称:

SELECT metric FROM system.metrics

查看同时处理的查询数量:

`SELECT value FROM system.metrics WHERE metric = 'Query'`

这将返回一个值,表示当前正在处理的查询数量。

1.2.5 system.events表

`system.events`表包含有关系统中发生的事件数量的信息。它的列包括:

- `event` (String) - 事件名称。
- `value` (UInt64) - 发生的事件数量。
- `description` (String) - 事件描述。

仅查看SELECT查询事件的数量:

SELECT value FROM system.events WHERE event = 'SelectQuery'

1.2.6 system.processes表

ClickHouse的system.processes表用于实现SHOW PROCESSLIST查询¹。它包含以下列:

- user (String) - 发出查询的用户。请注意,对于分布式处理,查询在默认用户下发送到远程服务器。该字段包含特定查询的用户名,而不是该查询启动的查询的用户名。
- address (String) - 请求发出的IP地址。对于分布式处理也是如此。要跟踪分布式查询最初从哪里发出,请在查询请求服务器上查看system.processes。
- elapsed (Float64) - 自请求执行开始以来经过的时间(以秒为单位)。
- rows_read (UInt64) - 从表中读取的行数。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。
- bytes_read (UInt64) - 从表中读取的未压缩字节数。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。
- total_rows_approx (UInt64) - 应读取的行总数的近似值。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。在请求处理期间,当新的要处理的源变得已知时,它可以更新。
- memory_usage (UInt64) - 请求使用的RAM量。它可能不包括某些类型的专用内存。请参阅max_memory_usage设置。
- query (String) - 查询文本。对于INSERT,它不包括要插入的数据。
- query_id (String) - 查询ID(如果定义)。
- is_cancelled (Int8) - 查询是否已取消。
- is_all_data_sent (Int8) - 是否将所有数据发送给客户端(换句话说,查询已在服务器上完成)。

1.2.7 system.asynchronous_metrics表

 ClickHouse的system.asynchronous_metrics表包含在后台定期计算的指标,例如正在使用的RAM数量。

system.asynchronous_metrics表包含以下列:

- metric (String) - 指标名称。
- value (Float64) - 指标值。

例如,你可以使用以下查询来查看当前使用的RAM数量:

SELECT value FROM system.asynchronous_metrics WHERE metric = 'MemoryTracking'

这将返回类似于以下的结果:

┌──────value─┐
│ 1234567890 │
└────────────┘

1.3 ClickHouse系统日志表

1.3.1 metric_log表

`system.metric_log`表包含了`system.metrics`和`system.events`表中度量值的历史记录,定期刷新到磁盘。它的列包括:

- `event_date` (Date) - 事件发生的日期。
- `event_time` (DateTime) - 事件发生的时间。
- `milliseconds` (UInt64) - 事件发生的时间(以毫秒为单位)。
- `ProfileEvent_Query` (UInt64) - 查询事件的数量。
- `ProfileEvent_SelectQuery` (UInt64) - SELECT查询事件的数量。
- `ProfileEvent_InsertQuery` (UInt64) - INSERT查询事件的数量。
- `ProfileEvent_FileOpen` (UInt64) - 文件打开事件的数量。
- `ProfileEvent_Seek` (UInt64) - 文件查找事件的数量。
- `ProfileEvent_ReadBufferFromFileDescriptorRead` (UInt64) - 从文件描述符读取缓冲区事件的数量。
- `ProfileEvent_ReadBufferFromFileDescriptorReadFailed` (UInt64) - 从文件描述符读取缓冲区失败事件的数量。
- `ProfileEvent_ReadBufferFromFileDescriptorReadBytes` (UInt64) - 从文件描述符读取缓冲区字节数。
- `ProfileEvent_WriteBufferFromFileDescriptorWrite` (UInt64) - 向文件描述符写入缓冲区事件的数量。
- `ProfileEvent_WriteBufferFromFileDescriptorWriteFailed` (UInt64) - 向文件描述符写入缓冲区失败事件的数量。
- `ProfileEvent_WriteBufferFromFileDescriptorWriteBytes` (UInt64) - 向文件描述符写入缓冲区字节数。

1.3.2 system.query_log表

ClickHouse的system.query_log表包含有关已执行查询的信息,例如开始时间、处理持续时间和错误消息。你可以在服务器配置的query_log部分中更改查询日志记录的设置。你可以通过设置log_queries = 0来禁用查询日志记录。不建议关闭日志记录,因为此表中的信息对于解决问题很重要。

system.query_log表包含以下列:

- type (Enum8) - 执行查询时发生的事件类型。
- event_date (Date) - 查询开始日期。
- event_time (DateTime) - 查询开始时间。
- query_start_time (DateTime) - 查询执行开始时间。
- query_duration_ms (UInt64) - 查询执行持续时间(以毫秒为单位)。
- read_rows (UInt64) - 从所有参与查询的表和表函数中读取的行总数。
- read_bytes (UInt64) - 从所有参与查询的表和表函数中读取的字节总数。

例如,你可以使用以下查询来查看最近5个查询的类型、开始时间和持续时间:

SELECT type, event_time, query_duration_ms FROM system.query_log 
ORDER BY event_time DESC LIMIT 5

这将返回类似于以下的结果:

┌─type──────────────┬────────event_time─┬─query_duration_ms─┐
│ QueryFinish       │ 2022-11-01 12:34:56│               1234│
│ QueryStart        │ 2022-11-01 12:34:56│                  0│
│ QueryFinish       │ 2022-11-01 12:33:45│                567│
│ QueryStart        │ 2022-11-01 12:33:45│                  0│
│ ExceptionWhileProcessing │ 2022-11-01 12:32:34│                890│
└───────────────────┴────────────────────┴──────────────────

1.3.3 system.query_thread_log表

ClickHouse的system.query_thread_log表包含有关执行查询的线程的信息,例如线程名称、线程开始时间和查询处理持续时间。你可以在服务器配置的query_thread_log部分中更改查询线程日志记录的设置。你可以通过设置log_query_threads = 1来启用查询线程日志记录。

system.query_thread_log表包含以下列:

- event_date (Date) - 线程完成查询执行时的日期。
- event_time (DateTime) - 线程完成查询执行时的日期和时间。
- query_start_time (DateTime) - 查询执行开始时间。
- query_duration_ms (UInt64) - 查询执行持续时间(以毫秒为单位)。
- read_rows (UInt64) - 读取的行数。
- read_bytes (UInt64) - 读取的字节数。
- thread_name (String) - 线程名称。
- thread_number (UInt32) - 内部线程ID。

例如,你可以使用以下查询来查看最近5个查询线程的名称、开始时间和持续时间:

SELECT thread_name, query_start_time, query_duration_ms 
FROM system.query_thread_log ORDER BY query_start_time DESC LIMIT 5

这将返回类似于以下的结果:

┌─thread_name──────┬────query_start_time─┬─query_duration_ms─┐
│ QueryPipelineEx   │ 2022-11-01 12:34:56 │               123 │
│ QueryPipelineEx   │ 2022-11-01 12:34:56 │               456 │
│ QueryPipelineEx   │ 2022-11-01 12:33:45 │                78 │
│ QueryPipelineEx   │ 2022-11-01 12:33:45 │               901 │
│ QueryPipelineEx   │ 2022-11-01 12:32:34 │               234 │
└───────────────────┴─────────────────────┴─────────────────

1.3.4 system.trace_log表

ClickHouse的system.trace_log表包含采样查询分析器收集的堆栈跟踪。当trace_log服务器配置部分被设置时,ClickHouse会创建此表。你还可以查看设置:query_profiler_real_time_period_ns、query_profiler_cpu_time_period_ns、memory_profiler_step、memory_profiler_sample_probability和trace_profile_events。要分析日志,可以使用addressToLine、addressToLineWithInlines、addressToSymbol和demangle内省函数。

system.trace_log表包含以下列:

- event_date (Date) - 采样时刻的日期。
- event_time (DateTime) - 采样时刻的日期和时间。
- query_start_time (DateTime) - 查询执行开始时间。
- query_duration_ms (UInt64) - 查询执行持续时间(以毫秒为单位)。
- read_rows (UInt64) - 读取的行数。
- read_bytes (UInt64) - 读取的字节数。
- thread_name (String) - 线程名称。

例如,你可以使用以下查询来查看最近5个采样时刻的日期和时间:

SELECT event_date, event_time FROM system.trace_log 
ORDER BY event_time DESC LIMIT 5

这将返回类似于以下的结果:

┌─event_date─┬────────event_time─┐
│ 2022-11-01 │ 2022-11-01 12:34:56│
│ 2022-11-01 │ 2022-11-01 12:33:45│
│ 2022-11-01 │ 2022-11-01 12:32:34│
│ 2022-11-01 │ 2022-11-01 12:31:23│
│ 2022-11-01 │ 2022-11-01 12:30:12│
└────────────┴────────────────────┘

1.3.5 system.part_log表

ClickHouse的system.part_log表仅在指定part_log服务器设置时创建。此表包含有关MergeTree系列表中数据部分发生的事件的信息,例如添加或合并数据¹。

system.part_log表包含以下列:

- query_id (String) - 创建此数据部分的INSERT查询的标识符。
- event_type (Enum8) - 发生在数据部分的事件类型。可以具有以下值之一:NEW_PART - 插入新的数据部分。MERGE_PARTS - 合并数据部分。DOWNLOAD_PART - 下载数据部分。REMOVE_PART - 使用DETACH PARTITION删除或分离数据部分。MUTATE_PART - 变异数据部分。MOVE_PART - 将数据部分从一个磁盘移动到另一个磁盘。
- event_date (Date) - 事件日期。
- event_time (DateTime) - 事件时间。
- duration_ms (UInt64) - 持续时间。
- database (String) - 数据部分所在的数据库名称。
- table (String) - 数据部分所在的表名称。
- part_name (String) - 数据部分名称。

例如,你可以使用以下查询来查看最近5个事件的类型、开始时间和持续时间:

SELECT event_type, event_time, duration_ms FROM system.part_log 
ORDER BY event_time DESC LIMIT 5

这将返回类似于以下的结果:

┌─event_type─┬────────event_time─┬─duration_ms─┐
│ NewPart    │ 2022-11-01 12:34:56│          123│
│ MergeParts │ 2022-11-01 12:33:45│          456│
│ DownloadPart│2022-11-01 12:32:34│           78│
│ RemovePart │ 2022-11-01 12:31:23│          901│
│ MutatePart │ 2022-11-01 12:30:12│          234│
└────────────┴────────────────────┴─────────────┘

1.3.6 system.crash_log表

ClickHouse的system.crash_log表包含有关致命错误堆栈跟踪的信息。该表默认不存在于数据库中,仅在发生致命错误时才创建。

system.crash_log表包含以下列:

- event_date (Datetime) - 事件日期。
- event_time (Datetime) - 事件时间。
- timestamp_ns (UInt64) - 以纳秒为单位的事件时间戳。
- signal (Int32) - 信号编号。
- thread_id (UInt64) - 线程ID。
- query_id (String) - 查询ID。
- trace (Array(UInt64)) - 崩溃时刻的堆栈跟踪。每个元素都是ClickHouse服务器进程内的虚拟内存地址。

例如,你可以使用以下查询来查看最近一次崩溃的日期和时间:

SELECT event_date, event_time FROM system.crash_log 
ORDER BY event_time DESC LIMIT 

这将返回类似于以下的结果:

┌─event_date─┬────────event_time─┐
│ 2022-11-01 │ 2022-11-01 12:34:56│

1.3.7 system.text_log表

 ClickHouse的system.text_log表包含日志条目。可以通过text_log.level服务器设置将进入此表的日志级别限制为。

system.text_log表包含以下列:

- event_date (Date) - 条目日期。
- event_time (DateTime) - 条目时间。
- event_time_microseconds (DateTime) - 具有微秒精度的条目时间。
- microseconds (UInt32) - 条目的微秒。
- thread_name (String) - 执行日志记录的线程名称。
- thread_id (UInt64) - 操作系统线程ID。
- level (Enum8) - 条目级别。可能的值:1或'Fatal'。2或'Critical'。3或'Error'。4或'Warning'。5或'Notice'。6或'Information'。7或'Debug'。8或'Trace'。
- query_id (String) - 查询ID。
- logger_name (LowCardinality(String)) - 记录器名称(例如DDLWorker)。
- message (String) - 消息本身。

例如,你可以使用以下查询来查看最近5个日志条目的级别、时间和消息:

SELECT level, event_time, message FROM system.text_log 
ORDER BY event_time DESC LIMIT 5

这将返回类似于以下的结果:

┌─level───────┬────────event_time─┬─message──────────────────────────────────────┐
│ Information │ 2022-11-01 12:34:56│ Update period 15 seconds                     │
│ Warning     │ 2022-11-01 12:33:45│ Failed to connect to server                  │
│ Error       │ 2022-11-01 12:32:34│ Failed to execute query                      │
│ Critical    │ 2022-11-01 12:31:23│ Server is running out of memory              │
│ Fatal       │ 2022-11-01 12:30:12│ Server crashed due to fatal error            │

1.4 ClickHouse常用的监控指标

ClickHouse有许多常用的监控指标,可以帮助你了解服务器的状态和性能。这些指标包括:

- 查询性能:查询持续时间、查询吞吐量、查询错误率。
- 系统资源使用情况:CPU使用率、内存使用率、磁盘使用率、网络流量。
- 数据库表的大小和增长速度。
- 数据库复制延迟。

你可以使用ClickHouse的系统表来获取这些指标,例如system.metrics、system.asynchronous_metrics和system.events。此外,你还可以使用外部监控工具,如Prometheus和Grafana,来收集和可视化这些指标


2. 监控工具和平台

2.1 监控工具和平台-常用监控工具简介

有许多常用的监控工具和平台可以用来监控ClickHouse服务器的状态和性能。这些工具和平台包括:

Prometheus:一个开源的监控系统,可以收集和存储ClickHouse服务器的指标数据。
Grafana:一个开源的仪表板和可视化平台,可以用来展示ClickHouse服务器的指标数据。
Zabbix:一个开源的监控解决方案,可以用来监控ClickHouse服务器的状态和性能。
Nagios:一个开源的监控系统,可以用来监控ClickHouse服务器的状态和性能。
Datadog:Datadog是一个基于云的监控和分析平台,可以与ClickHouse集成,提供数据库性能的实时可见性。它可以收集和可视化ClickHouse指标、日志和跟踪,并提供异常检测、警报和可定制的仪表板等功能。
Percona监控和管理(PMM):PMM是一个用于管理和监控MySQL、PostgreSQL、MongoDB和ClickHouse的开源平台。它可以收集和可视化ClickHouse的性能指标,设置警报,并为性能优化提供见解。
Telegraf:Telegraf是一个用于收集和报告指标的开源服务器代理。使用ClickHouse输入插件,它可以收集各种ClickHouse指标,并将其转发到不同的监控和可视化工具,如InfluxDB和Grafana。
ELK堆栈(Elasticsearch、Logstash、Kibana):ELK堆栈是用于日志和事件数据管理的开源工具的集合。通过获取ClickHouse日志和系统指标,您可以使用Kibana创建可视化并设置警报。

可以使用这些工具和平台来收集、存储、可视化和报警ClickHouse服务器的指标数据,以帮助你了解服务器的状态和性能。

2.2 集成第三方监控平台(如Grafana、Zabbix等)

2.2.1 如何使用Grafana监控ClickHouse

你可以使用Grafana来监控ClickHouse服务器的状态和性能。要使用Grafana监控ClickHouse,你需要执行以下步骤:

1. 安装并配置Grafana:按照Grafana官方文档中的说明安装并配置Grafana。
2. 安装ClickHouse插件:在Grafana中安装ClickHouse数据源插件。
3. 配置数据源:在Grafana中添加一个新的数据源,选择ClickHouse作为类型,并填写ClickHouse服务器的连接信息。
4. 创建仪表板:在Grafana中创建一个新的仪表板,并添加图表来展示ClickHouse服务器的指标数据。

你可以使用Grafana提供的丰富的可视化选项来定制仪表板,以满足你的需求。此外,你还可以使用Grafana提供的报警功能来设置报警规则,以便在发生异常情况时及时通知你。

2.2.2 如何安装并配置Grafana

要安装并配置Grafana,你需要按照以下步骤操作:

1. 访问Grafana官网(https://grafana.com/)并下载适用于你的操作系统的最新版本的Grafana。
2. 按照Grafana官方文档中的说明安装Grafana。
3. 启动Grafana服务。
4. 访问Grafana Web界面(默认情况下,它位于http://localhost:3000/)并使用默认用户名(admin)和密码(admin)登录。
5. 按照提示更改默认密码。
6. 按照需要配置Grafana的设置,例如数据源、仪表板和报警。

安装并配置完成后,你就可以开始使用Grafana来监控ClickHouse服务器了。

2.2.3 如何安装ClickHouse插件

要在Grafana中安装ClickHouse数据源插件,你可以按照以下步骤操作:

1. 访问Grafana插件页面(https://grafana.com/grafana/plugins/vertamedia-clickhouse-datasource)并查看ClickHouse数据源插件的详细信息。
2. 在Grafana服务器上,使用grafana-cli命令安装插件。例如,你可以运行以下命令来安装最新版本的插件:

grafana-cli plugins install vertamedia-clickhouse-datasource

3. 安装完成后,重启Grafana服务以使更改生效。
4. 登录到Grafana Web界面,然后导航到“配置”>“数据源”页面。
5. 点击“添加数据源”按钮,然后从列表中选择“ClickHouse”。

安装并启用插件后,你就可以开始配置ClickHouse数据源并使用它来监控ClickHouse服务器了。

2.2.4 如何配置数据源

要在Grafana中配置ClickHouse数据源,你需要按照以下步骤操作:

1. 登录到Grafana Web界面,然后导航到“配置”>“数据源”页面。
2. 点击“添加数据源”按钮,然后从列表中选择“ClickHouse”。
3. 在“设置”选项卡中,填写ClickHouse服务器的连接信息,包括URL、数据库名称、用户名和密码。
4. (可选)在“Auth”选项卡中,配置身份验证设置。
5. (可选)在“HTTP”选项卡中,配置HTTP连接设置。
6. 点击“保存并测试”按钮来测试连接并保存数据源。

配置完成后,你就可以开始使用这个数据源来监控ClickHouse服务器了。

2.2.5 如何创建仪表盘

 要在Grafana中创建一个新的仪表板,你需要按照以下步骤操作:

1. 登录到Grafana Web界面,然后点击左侧菜单栏中的“+”图标。
2. 从下拉菜单中选择“仪表板”。
3. 点击“添加面板”按钮来添加一个新的图表。
4. 在图表编辑器中,配置图表的设置,包括查询、可视化和显示选项。
5. (可选)重复步骤3和4来添加更多图表。
6. 点击“保存仪表板”按钮来保存仪表板。

创建并保存仪表板后,你就可以使用它来监控ClickHouse服务器了。你可以使用Grafana提供的丰富的可视化选项来定制图表,以满足你的需求。

2.2.6 如何使用Zabbix监控ClickHouse?

可以使用Zabbix来监控ClickHouse。Zabbix提供了一个名为“Template DB ClickHouse by HTTP”的模板,它可以通过HTTP无需任何外部脚本即可监控ClickHouse。大多数指标都可以一次性收集,这要归功于Zabbix的批量数据收集。此模板已在ClickHouse版本19.14+和20.3+上进行过测试。

需要在Zabbix中导入模板并进行一些配置,例如创建一个用于监控服务的用户并设置登录名和密码等。可以在Zabbix官网上查看详细的设置说明。

2.2.7 如何安装Zabbix

可以从Zabbix官网上下载并安装Zabbix。安装过程可能因您的操作系统和版本而异。以下是在RHEL 9上安装Zabbix 6.4的步骤:

1. 安装Zabbix存储库:

# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
# dnf clean all

2. 安装Zabbix服务器,前端和代理:

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

3. 创建初始数据库:

# mysql -uroot -p password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

# mysql -uroot -p password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

4. 配置Zabbix服务器的数据库:

编辑文件 /etc/zabbix/zabbix_server.conf
DBPassword= password

5. 启动Zabbix服务器和代理进程,并设置开机自启:

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

2.2.8 如何配置Zabbix来监控ClickHouse

要配置Zabbix来监控ClickHouse,您需要执行以下步骤:

1. 在Zabbix中导入“Template DB ClickHouse by HTTP”模板。
2. 在ClickHouse服务器上创建一个用于监控服务的用户。例如,您可以在`/etc/clickhouse-server/users.d/`目录下创建一个名为`zabbix.xml`的文件,并在其中添加以下内容:

<yandex>
  <users>
    <zabbix>
      <password>zabbix_pass</password>
      <networks incl="networks" />
      <profile>web</profile>
      <quota>default</quota>
      <allow_databases>
        <database>test</database>
      </allow_databases>
    </zabbix>
  </users>
</yandex>

3. 在Zabbix中设置宏,例如`{$CLICKHOUSE.USER}`和`{$CLICKHOUSE.PASSWORD}`,以匹配您在上一步中创建的用户的用户名和密码。
4. 如果不需要身份验证,则可以从HTTP-Agent类型的项目中删除标头。

2.2.9 如何导入Zabbix模板

要在Zabbix中导入模板,需要执行以下步骤:

1. 登录到Zabbix的Web界面。
2. 在顶部菜单中,选择“配置”>“模板”。
3. 在右上角,点击“导入”按钮。
4. 在“导入”页面,点击“选择文件”按钮并选择要导入的XML模板文件。
5. 按照您的需要选择导入选项,然后点击“导入”按钮。

2.2.10 Zabbix能监控ClickHouse哪些指标

Zabbix可以通过“Template DB ClickHouse by HTTP”模板监控ClickHouse的许多指标。这个模板不需要任何外部脚本,大多数指标都可以一次性收集,这要归功于Zabbix的批量数据收集。此模板已在ClickHouse版本19.14+和20.3+上进行过测试。

2.2.11 如何查看Zabbix监控结果

可以在Zabbix的Web界面中查看监控结果。登录到Zabbix的Web界面后,可以在“监控”菜单下找到“仪表盘”和“最新数据”等选项,这些选项可以让您查看监控数据和图表。

也可以创建自定义的仪表盘和图表,以便更好地查看和分析监控数据。

2.2.12 如何使用Datadog监控ClickHouse

您可以使用Datadog来监控ClickHouse。Datadog与ClickHouse集成,可以为您提供对大数据分析作业的全面可见性。Datadog的ClickHouse集成提供了您需要的指标来跟踪读写性能。您可以跟踪每个ClickHouse实例的INSERT和SELECT查询速率,以及每个查询写入的行数。然后,您可以将查询吞吐量与查询资源使用情况(例如clickhouse.query.memory)进行比较,帮助您设计最大性能和最小系统拖累的查询。

2.2.13 如何安装Datadog

要安装Datadog,您需要在您的主机上安装Datadog Agent。Datadog Agent是一种软件,它可以从主机收集事件和指标并将它们发送到Datadog,以便您可以分析监控和性能数据。Datadog Agent是开源的,其源代码可在GitHub上的DataDog/datadog-agent处获得。建议您完全安装Agent。

安装过程可能因您的操作系统和版本而异。可以在Datadog官网(https://docs.datadoghq.com/)上查看有关如何安装Datadog Agent的详细信息。

2.2.14 如何查看Datadog监控结果

可以在Datadog的Web界面中查看监控结果。登录到Datadog的Web界面后,可以查看和分析您的监控数据。Datadog提供了一个随集成附带的开箱即用仪表盘,它提供了关于读写吞吐量、资源利用率和复制活动的见解。

也可以创建自定义的仪表盘和图表,以便更好地查看和分析监控数据。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值