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}}}}'

流程

  1. 如果存在 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
  2. 如果存在 openshift-monitoring 配置:

    1. 检查现有的 openshift-monitoring 配置,以确定 用户工作负载监控 选项是否被设置为 true

      oc get -n openshift-monitoring cm/cluster-monitoring-config -ojsonpath='{.data.config\.yaml}'

      如果结果为 enableUserWorkload: true,则 用户工作负载监控 选项被设置为 true。跳至步骤 3。

      如果结果显示任何其他配置,请继续下一步,通过编辑 ConfigMap 来启用用户工作负载的监控。

    2. 在编辑器中打开 ConfigMap 文件,例如:

      oc -n openshift-monitoring edit cm/cluster-monitoring-config
    3. enableUserWorkload 设置为 true。例如:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml: |
         enableUserWorkload: true
    4. 保存 ConfigMap 文件。
  3. 使用以下命令,观察 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
  4. 验证 Prometheus 中是否启用了 Fuse Online 警报规则:

    1. 访问内部 prometheus 实例

      oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
    2. 打开浏览器,到 localhost:9090
    3. 选择 Status> Targets。您应看到 三个整合 端点。
    4. CTRL-C 终止 端口转发 进程。
  5. 在 OperatorHub 中,将 Grafana Operator 版本 4 安装到您选择的命名空间,例如 grafana-middleware 命名空间。使用更新频道 v4
  6. 添加集群角色和集群角色绑定,以允许 grafana-operator 列出节点和命名空间:

    1. grafana-operator 网站下载集群角色 YAML 文件:

      curl https://raw.githubusercontent.com/grafana-operator/grafana-operator/v4/deploy/cluster_roles/cluster_role_grafana_operator.yaml > tmp_role.yaml
    2. 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
  7. 启用 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"}]}}}'
  8. 检查 grafana pod 是否已重新创建:

    oc -n grafana-middleware get pods -w
  9. 另外,还可查看 grafana-operator 日志:

    oc -n grafana-middleware logs -f `oc -n grafana-middleware get pods -oname|grep grafana-operator-controller-manager` -c manager
  10. 添加 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
  11. 允许 grafana-operator 读取监控信息:

    oc -n grafana-middleware adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-serviceaccount
  12. 添加 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
  13. 查看 grafana 服务器日志:

    oc logs -f `oc get pods -l app=grafana -oname`
  14. 访问 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-metasyndesis-server 应用程序运行 JVM 的指标。从仪表板顶部的 Application 下拉列表中选择您要监控的应用程序。
      基础架构 - REST API
      显示与 Fuse Online 基础架构 API 端点相关的指标,如 请求 吞吐量和延迟 。从仪表板顶部的 Application 下拉列表中,选择要监控的应用程序。

其他资源

有关使用 Prometheus 入门的信息,请访问: https://prometheus.io/docs/prometheus/latest/getting_started/