第 11 章 Red Hat Process Automation Manager Kogito Operator 与 Prometheus 和 Grafana 交互
Red Hat Process Automation Manager 中的 Red Hat build of Kogito 提供了一个 monitoring-prometheus-addon 附加组件,它为 Red Hat build of Kogito 微服务启用 Prometheus 指标监控,并生成 Grafana 仪表板,以使用附加组件导出的默认指标。RHPAM Kogito Operator 使用 Prometheus Operator 从项目中公开用于 Prometheus 的指标,以便提取。由于此依赖项,Prometheus Operator 必须安装在与项目相同的命名空间中。
如果要为红帽构建的 Kogito 微服务启用 Prometheus 指标监控,请根据您使用的框架,将以下依赖项添加到项目中的 pom.xml 文件中:
Prometheus 红帽构建的 Quarkus 附加组件的依赖项
<dependency>
<groupId>org.kie.kogito</groupId>
<artifactId>monitoring-prometheus-quarkus-addon</artifactId>
</dependency>
Prometheus Spring Boot 附加组件的依赖项
<dependency>
<groupId>org.kie.kogito</groupId>
<artifactId>monitoring-prometheus-springboot-addon</artifactId>
</dependency>
当您部署使用 monitoring-prometheus-addon 附加组件的 Kogito 微服务且安装了 Prometheus Operator 时,Red Hat Process Automation Manager Kogito Operator 会创建一个 ServiceMonitor 自定义资源来公开 Prometheus 的指标,如下例所示:
Prometheus 的 ServiceMonitor 资源示例
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: onboarding-service
name: onboarding-service
namespace: kogito
spec:
endpoints:
- path: /metrics
targetPort: 8080
scheme: http
namespaceSelector:
matchNames:
- kogito
selector:
matchLabels:
app: onboarding-service
您必须手动配置由 Prometheus Operator 管理的 Prometheus 自定义资源,以选择 ServiceMonitor 资源:
Prometheus 资源示例
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
app: dmn-drools-quarkus-metrics-service
使用 ServiceMonitor 资源配置 Prometheus 资源后,您可以在 Prometheus web 控制台的 Targets 页面中看到 Prometheus 提取的端点。Red Hat Process Automation Manager 服务公开的指标会出现在 Graph 视图中。
RHPAM Kogito Operator 还会为附加组件生成的每个 Grafana 仪表板创建一个由 Grafana Operator 定义的 GrafanaDashboard 自定义资源。仪表板的 app 标签是所部署的红帽构建的 Kogito 微服务的名称。您必须根据相关的红帽构建的 Kogito 微服务来设置 Grafana 自定义资源的 dashboardLabelSelector 属性。
Grafana 资源示例
apiVersion: integreatly.org/v1alpha1
kind: Grafana
metadata:
name: example-grafana
spec:
ingress:
enabled: true
config:
auth:
disable_signout_menu: true
auth.anonymous:
enabled: true
log:
level: warn
mode: console
security:
admin_password: secret
admin_user: root
dashboardLabelSelector:
- matchExpressions:
- key: app
operator: In
values:
- my-kogito-application