3.2. 使用 Prometheus 监控 Fuse 在线集成和基础架构组件
您可以使用 Prometheus 监控 Fuse 在线基础架构组件和 Fuse 在线集成。您还可以使用 Grafana 仪表板来视觉化 Prometheus 收集的指标。
Red Hat support for Prometheus 仅限于 Red Hat 产品文档中提供的设置和配置建议。
Grafana 是社区支持的功能。部署 Grafana 来监控 Red Hat Fuse 产品不受 Red Hat production 服务级别协议(SLA)的支持。
除了监控 Fuse Online 集成外,您还可以使用 Prometheus 监控以下 Fuse Online 基础架构组件公开的指标:
- Syndesis Server
-
syndesis-server
组件使用 Micrometer 提供,并默认自动公开所有 JVM Micrometer 指标。另外,syndesis-server
会公开有关 REST API 端点的指标,如请求率、错误率和延迟。 - Syndesis Meta
-
syndesis-meta
组件使用 Micrometer 提供,并默认自动公开所有 JVM Micrometer 指标。它还会公开有关其 REST API 端点的指标。 - Syndesis DB
- Fuse Online Postgres 数据库的指标通过 第三方 Prometheus 导出器 导出。
- 集成
-
集成
指标在创建了集成后可见,并通过使用官方 JMX exporter 导出,默认情况下会公开几个 JVM 指标。另外,集成指标会公开特定于 Apache Camel 的指标,如消息速率和错误率。
先决条件
- Fuse Online 已安装并在 OCP 4.9(或更新版本)上运行。
-
已安装
oc
客户端工具,它连接到安装了 Fuse Online 的 OCP 集群。 -
具有对 OCP 集群的
admin
访问权限。 您的 Fuse Online 安装配置了启用了
ops addon
。如果需要,您可以使用以下命令启用它:oc patch syndesis/app --type=merge -p '{"spec": {"addons": {"ops": {"enabled": true}}}}'
流程
如果存在
openshift-monitoring
配置,请跳至第 2 步。否则,创建一个
openshift-monitoring
配置,将用户工作负载监控选项设置为true
,然后跳至第 3 步:oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true EOF
如果存在
openshift-monitoring
配置:检查现有的
openshift-monitoring
配置,以确定 用户工作负载监控 选项是否被设置为 true :oc get -n openshift-monitoring cm/cluster-monitoring-config -ojsonpath='{.data.config\.yaml}'
如果结果为
enableUserWorkload: true
,则 用户工作负载监控 选项被设置为 true。跳至步骤 3。如果结果显示任何其他配置,请继续下一步,通过编辑 ConfigMap 来启用用户工作负载的监控。
在编辑器中打开 ConfigMap 文件,例如:
oc -n openshift-monitoring edit cm/cluster-monitoring-config
将 enableUserWorkload 设置为 true。例如:
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true
- 保存 ConfigMap 文件。
使用以下命令,观察
openshift-user-workload-monitoring
命名空间中的 pod 状态:oc -n openshift-user-workload-monitoring get pods -w
等待 pod 的状态是 Running,例如:
prometheus-operator-5d989f48fd-2qbzd 2/2 Running prometheus-user-workload-0 5/5 Running prometheus-user-workload-1 5/5 Running thanos-ruler-user-workload-0 3/3 Running thanos-ruler-user-workload-1 3/3 Running
验证 Prometheus 中是否启用了 Fuse Online 警报规则:
访问内部 prometheus 实例
oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
-
打开浏览器,到
localhost:9090
-
选择 Status> Targets。您应看到
三个整合
端点。 -
按 CTRL-C 终止
端口转发
进程。
-
在 OperatorHub 中,将 Grafana Operator 版本 4 安装到您选择的命名空间,例如
grafana-middleware
命名空间。使用更新频道v4
添加集群角色和集群角色绑定,以允许
grafana-operator
列出节点和命名空间:从
grafana-operator
网站下载集群角色 YAML 文件:curl https://raw.githubusercontent.com/grafana-operator/grafana-operator/v4/deploy/cluster_roles/cluster_role_grafana_operator.yaml > tmp_role.yaml
为
grafana-operator
添加集群权限以读取其他命名空间和节点:cat <<EOF >> tmp_role.yaml - apiGroups: - "" resources: - namespaces - nodes verbs: - get - list - watch EOF
oc apply -f tmp_role.yaml
oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: grafana-operator roleRef: name: grafana-operator kind: ClusterRole apiGroup: "" subjects: - kind: ServiceAccount name: grafana-operator-controller-manager namespace: grafana-middleware EOF
启用
grafana-operator
,使用DASHBOARD_NAMESPACES_ALL
环境变量从其他命名空间中读取 Grafana 仪表板,以限制命名空间:oc -n grafana-middleware patch subs/grafana-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"DASHBOARD_NAMESPACES_ALL","value":"true"}]}}}'
检查
grafana
pod 是否已重新创建:oc -n grafana-middleware get pods -w
另外,还可查看
grafana-operator
日志:oc -n grafana-middleware logs -f `oc -n grafana-middleware get pods -oname|grep grafana-operator-controller-manager` -c manager
添加 Grafana 自定义资源 以启动 Grafana 服务器 pod,例如:
oc apply -f - <<EOF apiVersion: grafana.integreatly.org/v1beta1 kind: Grafana metadata: name: grafana-middleware namespace: grafana-middleware spec: 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: - grafana - syndesis ingress: enabled: true EOF
允许
grafana-operator
读取监控信息:oc -n grafana-middleware adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-serviceaccount
添加
GrafanaDatasource
以查询thanos-querier
:oc apply -f - <<EOF apiVersion: grafana.integreatly.org/v1beta1 kind: GrafanaDataSource metadata: name: prometheus-grafanadatasource namespace: grafana-middleware spec: datasources: - access: proxy editable: true isDefault: true jsonData: httpHeaderName1: 'Authorization' timeInterval: 5s tlsSkipVerify: true name: Prometheus secureJsonData: httpHeaderValue1: "Bearer $(oc get secret $(oc get secret | grep grafana-serviceaccount-token | awk '{print$1}') -o=jsonpath="{.data.token}" | base64 -d)" type: prometheus url: "https://$(oc get route thanos-querier -n openshift-monitoring -ojsonpath='{.spec.host}')" name: prometheus-grafanadatasource.yaml EOF
查看 grafana 服务器日志:
oc logs -f `oc get pods -l app=grafana -oname`
访问 grafana URL 并查看 Fuse Online 仪表板:
echo "https://"$(oc -n grafana-middleware get route/grafana-route -ojsonpath='{.spec.host}')
在 Grafana 控制台左侧面板中点击搜索按钮。此时会显示一个文件夹(OCP 命名空间名称),其中包含每个 Syndesis 实例的仪表板。
- 对于 Fuse Online 集成,请选择 Integration - Camel。此仪表板显示由 Apache Camel 集成应用程序公开的标准指标。
对于 Fuse Online infrastructure 组件,请选择以下基础架构仪表板之一:
- 基础架构 - DB
- 显示与 Fuse Online Postgres 实例相关的指标。
- 基础架构 - JVM
-
显示为
syndesis-meta
或syndesis-server
应用程序运行 JVM 的指标。从仪表板顶部的 Application 下拉列表中选择您要监控的应用程序。 - 基础架构 - REST API
-
显示与 Fuse Online 基础架构 API 端点相关的指标,如
请求
。从仪表板顶部的 Application 下拉列表中,选择要监控的应用程序。吞吐量和延迟
其他资源
有关使用 Prometheus 入门的信息,请访问: https://prometheus.io/docs/prometheus/latest/getting_started/