使用 Grafana 可视化指标

用户可以在 Grafana 的预构建仪表板中访问指标,并将其用于即席报告。

关于 Grafana

Grafana 提供基于浏览器的仪表板。

访问 Grafana 网站 以了解更多信息。

打开 Grafana

Grafana 默认情况下已部署。

假设命令 minikube ip 返回 192.168.39.39,则控制台可在 http://grafana.192.168.39.39.nip.io 上访问。

每次重新创建 Minikube 实例时,Minikube 的 IP 地址都会发生变化。
grafana

添加自定义仪表板

使用用户名 admin 和密码 keycloak 登录 Grafana,或者在匿名登录不足时使用与您的部署相关的密码。

自定义仪表板包含在文件夹 monitoring/dashboards 中。在其中添加更多仪表板作为新文件,task 会在 Minikube 集群中安装最新版本。

拍摄仪表板快照

使用与部署相关的用户名 admin 和密码登录 Grafana 后,用户将能够拍摄仪表板快照,并将快照导出为 json 文件,以便能够将其导入独立的 Grafana 实例中以查看和与仪表板进行交互。

您可以阅读有关如何拍摄快照以及其他共享仪表板方式的更多信息,点击这里

自动仪表板 PDF 下载

我们有一个 Python 脚本 snapGrafana.py,它允许我们为给定的时间窗口、Grafana 实例和 Kubernetes 命名空间拍摄可用仪表板的 PDF 快照。

安装所需的 Python 库

pip3 install -U -r requirements.txt

我们可以使用以下命令检查是否满足所有要求。

python3 -m pip check
导入的 Playwright Python 模块需要使用命令 playwright install 进行额外安装,否则我们会看到类似以下异常。
if you see a missing playwright._impl._api_types.Error: Executable doesn't exist at  exception, just run the below command to download the needed browsers for the script to work.

用法

满足脚本的要求后,您可以使用以下命令运行它,仪表板 PDF 将下载到您执行此脚本的当前目录。

python3 snapGrafana.py --grafana_domain ${GRAFANA_DOMAIN} \
--admin_password ${KEYCLOAK_MASTER_PASSWORD} \
--time_window "from=1694801561166&to=1694802033424" \
--keycloak_namespace "runner-keycloak"

snapGrafana.py CLI 选项

CLI 选项 默认值 说明

--grafana_domain

(未设置)

Grafana 服务器的域,不包括 http://

例如:--grafana_domain grafana.apps.gh-keycloak.abcd.xx.openshiftapps.com

--admin_password

(未设置)

这是 Grafana 管理员用户的密码,如果您使用 Minikube 部署,则是 admin,如果您使用 OpenShift,则是为 KEYCLOAK_MASTER_PASSWORD 设置的值。

--keycloak_namespace

runner-keycloak

目标 Keycloak 部署所在的命名空间,Grafana 仪表板使用此命名空间进行过滤。

--time_window

(未设置)

仪表板用来过滤仪表板范围的时间窗口。

使用 Ansible 模块的 benchmark.sh 脚本时,您会在剧本运行结束时看到以下类似消息。

INFO: Input for snapGrafana.py is from=1695382925487&to=1695383025382

直接使用 kcb.sh 时,用户可以从基于 kcb.sh 的负载模拟完成后生成的 result_grafana_inputs.json 文件中获取此值,该文件位于 keycloak-benchmark-0.XX-SNAPSHOT/results/ 目录中。以下是 result_grafana_inputs.json 文件的示例输出,所需的时间窗口值与 snap_grafana_time_window 键关联。

{
  "uuid": "108fdd0c-41b7-41d5-af66-8a41cff19a8f",
  "name": "Scenario 'keycloak.scenario.authentication.AuthorizationCode' with 2 users-per-sec",
  "grafana_input": {
    "start": {
      "epoch_seconds": 1695213772,
      "iso": "2023-09-20T08:42:52-04:00"
    },
    "end": {
      "epoch_seconds": 1695213810,
      "iso": "2023-09-20T08:43:30-04:00"
    },
    "input": {
      "scenario": "keycloak.scenario.authentication.AuthorizationCode",
      "snap_grafana_time_window": "from=1695213772731&to=1695213810554",
      "unit": "users-per-sec",
      "value": 2,
      "config": "-Drealm-name=test-realm"
    }
  }
}