使用 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 命令行选项

命令行选项 默认值 注释

--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 脚本时,您会在 playbook 运行结束时找到如下消息。

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

当直接使用 kcb.sh 时,用户可以从 result_grafana_inputs.json 文件中获取此值,该文件在基于 kcb.sh 的负载模拟之后生成,并且可以在 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"
    }
  }
}