You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenShift中访问Cassandra数据库及Pod相关数据查询

关于OpenShift中Hawkular与Cassandra存储的疑问解答

1. 是否所有Pod信息都存储在Cassandra中?

并不是。Cassandra在Hawkular的架构里,核心职责是存储时间序列监控指标数据。Pod的元数据(比如名称、标签、运行状态、所属Namespace等)其实是存在OpenShift/Kubernetes的etcd中的。Hawkular会从K8s API拉取这些元数据,用来和收集到的指标做关联,但不会把完整的Pod元数据都存进Cassandra——它只保留和监控相关的、带时间戳的指标值,以及少量用于关联的标签信息。

2. Pod的CPU、内存、网络使用率是否存储在Cassandra中?

必须的!这些都是Hawkular监控的核心指标,会被持续采集并以时间序列的形式持久化到Cassandra里。具体包括:

  • CPU使用率(比如cpu/usage_rate指标)
  • 内存使用率(比如memory/usage、memory/working_set指标)
  • 网络收发速率(比如network/rx_rate、network/tx_rate指标)
    这些数据都会存在Cassandra的hawkular_metrics keyspace中。

3. 如何连接Cassandra并检索Pod的监控数据?

步骤1:定位Cassandra Pod

首先找到集群中Hawkular对应的Cassandra Pod,它通常运行在openshift-infra或者专门的hawkular-metrics项目下,用命令排查:

oc get pods -n openshift-infra | grep cassandra

你会得到类似hawkular-cassandra-1-xyzab这样的Pod名称。

步骤2:端口转发到本地

Cassandra的9042端口默认不会暴露到集群外,所以需要通过端口转发把集群内的端口映射到本地:

oc port-forward hawkular-cassandra-1-xyzab 9042:9042 -n openshift-infra

保持这个终端窗口处于运行状态,不要关闭。

步骤3:用cqlsh连接Cassandra

如果本地没装cqlsh,可以直接在OpenShift的Pod内执行,或者本地安装Cassandra工具包后运行:

cqlsh localhost 9042

连接成功后会进入Cassandra的命令行交互界面。

步骤4:检索目标Pod的监控数据

首先切换到Hawkular的专属keyspace:

USE hawkular_metrics;

先找到目标Pod对应的指标ID

Hawkular里每个指标都有唯一ID,且关联了Pod的标签(比如pod_name、namespace)。你可以先查询metrics表定位目标Pod的CPU使用率指标ID:

SELECT id, tags FROM metrics WHERE metric_type = 'gauge' AND tags ->> 'pod_name' = 'your-target-pod-name';

把your-target-pod-name替换成你要查询的Pod名称,gauge类型对应使用率这类数值型指标。

查询具体的时间序列数据

拿到指标ID后,就能从data表中拉取历史数据了,比如查询过去1小时的CPU使用率:

SELECT timestamp, value FROM data WHERE metric_id = 'your-metric-id' AND timestamp >= toTimestamp(now() - 1h);

你可以根据需求调整时间范围或者查询其他指标的数据。


内容的提问来源于stack exchange,提问作者samar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:03