监控

Alauda Data Services Analytical Database E1 通过与 operator 一同运行的指标导出器公开 Prometheus 指标。该导出器是独立于 operator 本身的二进制文件,作为 operator pod 中的第二个容器提供。

端点

路径提供内容
/metrics从 operator 监视的每个实例抓取的 Prometheus 指标。
/chi当前发现的实例列表。可用于确认某个实例是否正在被监控。

两者均通过端口 8888 提供。operator pod 在 8888 端口上携带名为 metrics 的端口以及 Prometheus 抓取注解,同时会在其前面创建一个 Service,以便集群范围的 Prometheus 发现它。

直接检查:

kubectl -n <operator-namespace> port-forward deploy/clickhouse-operator 8888:8888
curl -s localhost:8888/chi
curl -s localhost:8888/metrics | head -40

如果你预期的实例不在 /chi 中,则 operator 未监视其命名空间。命名空间范围是 operator 的配置设置;空列表表示所有命名空间。

可通过 -metrics-endpoint-chi-list-endpoint 标志更改导出器的监听地址;它还接受 -config-kubeconfig-master-version。更改这些参数意味着要更改 operator Deployment,因此除非存在端口冲突,否则请保留默认值。

收集内容

导出器使用 operator 自有帐户,通过 HTTP 端口连接到每个实例,并读取服务器的系统表:

来源提供内容
system.metrics当前 gauges — 连接数、活动合并、内存跟踪。
system.events累计计数器 — 查询、读取、写入、异常。
system.asynchronous_metrics定期采样的值,包括文件系统和内存数据。
system.parts每个表的 part 数量和大小。用于反映存储增长的实际信号。
system.replicas复制健康状况 — 队列大小、绝对延迟、只读副本。
system.mutations正在进行和失败的 mutation。

收集过程是从导出器向每台服务器发起拉取,因此无法访问的实例会在仪表板中产生数据间隙,而不是错误。

值得设置告警的指标

  • 复制延迟和队列增长,来自 system.replicas 系列。持续增长意味着某个副本出现落后或卡住的情况,并且不会自行恢复。
  • 只读副本,同样来自 system.replicas。这通常表示协调仲裁失效。请参阅配置复制集群
  • 被拒绝或失败的查询,来自 system.events 计数器。
  • 每个表的 part 数量,来自 system.parts。如果 part 数量不断增加,但没有相应的合并活动,则表示合并跟不上增长速度。
  • 根据容器限制监控内存使用情况,来自 system.metricssystem.asynchronous_metrics。请参阅合并期间服务器 pod 被 OOMKilled

实例健康状况不是指标

导出器会报告服务器对自身状态的报告内容,但不会告诉你所需的拓扑是否正在运行。为此,请比较 StatefulSets 上所需的副本数和就绪副本数:

kubectl -n <namespace> get statefulset -l clickhouse.altinity.com/chi=<instance> \
  -o custom-columns=NAME:.metadata.name,DESIRED:.spec.replicas,READY:.status.readyReplicas

该比较与 operator 在内部应用的就绪检查相同,因此是权威检查。

Operator 日志

kubectl -n <operator-namespace> logs deploy/clickhouse-operator -c clickhouse-operator
kubectl -n <operator-namespace> logs deploy/clickhouse-operator -c metrics-exporter

调谐决策位于第一个容器中;抓取失败位于第二个容器中。


ClickHouse 是 ClickHouse, Inc. 的注册商标。https://clickhouse.com

Alauda 是独立供应商。本产品与 ClickHouse, Inc. 没有关联,也未获得其认可或赞助。所有商标均为其各自所有者的财产,此处仅用于标识目的。