监控

从 v0.3.0 起可用

监控功能默认开启。

从 v1.2.0 起可用

现在的监控功能通过插件实现,并且在新安装中默认禁用。

安装后,你可以从 Harvester WebUI 启用/禁用 rancher-monitoring 插件

你还可以通过自定义 harvester-configuration 文件在 Harvester 中启用/禁用 rancher-monitoring 插件。

对于从 v1.1.* 升级的 Harvester 集群,监控功能会自动转换为插件并像以前一样保持启用状态。

仪表盘指标

Harvester 已使用 Prometheus 内置集成监控。监控会在 Harvester 安装期间自动启用。

在 Harvester 的 Dashboard 页面中,你可以分别查看集群指标以及最常用的 10 个虚拟机指标。 此外,你可以单击 Grafana 仪表盘链接,从而在 Grafana UI 上查看更多仪表盘。

监控 - 图1

监控 - 图2备注

只有管​​理员用户才能查看集群仪表盘指标。

另外,Grafana 是由 rancher-monitoring 提供的,因此默认的管理员密码是 prom-operator。

参考:values.yaml

虚拟机详细指标

你可以单击 VM details page > VM Metrics 来查看​​各个虚拟机的指标:

监控 - 图3

监控 - 图4备注

当前 Memory Usage 的计算公式是 (1 - free/total) x 100%,而不是 (used/total) x 100%

例如,在 Linux 操作系统中,free -h 命令输出当前内存的统计信息:

  1. $ free -h
  2. total used free shared buff/cache available
  3. Mem: 7.7Gi 166Mi 4.6Gi 1.0Mi 2.9Gi 7.2Gi
  4. Swap: 0B 0B 0B

对应的 Memory Usage(1 - 4.6/7.7) x 100%,即大致为 40%

配置 Monitoring

从 v1.0.1 起可用

Monitoring 有几个可用于收集和聚合所有节点/Pod/VM 指标数据的组件。Monitoring 所需的资源取决于你的工作负载和硬件资源。Harvester 会根据一般用例设置默认值,你可以相应地更改它们。

目前,Resources Settings 可以配置以下组件:

  • Prometheus
  • Prometheus Node Exporter(从 v1.0.2 开始可以从 UI 中进行配置

使用 WebUI

Monitoring & Logging 页面上,你可以查看和更改资源设置:

  1. 导航到 Monitoring > Configuration 页面。 监控 - 图5

  2. 点击 SaveMonitoring 资源会在几秒后重启。请注意,重新启动可能需要一些时间来重新加载以前的数据。

最常用的选项:内存设置

  • Requested MemoryMonitoring 资源所需的最小内存。建议设置为单个管理节点系统内存的 5% 到 10%。小于 500Mi 的值将被拒绝。

  • Memory Limit 是可以分配给 Monitoring 资源的最大内存。对于单个管理节点,推荐设置为系统内存的 30% 左右。达到这个阈值时,Monitoring 会自动重启。

你可以根据可用的硬件资源和系统负载相应地更改以上设置。

监控 - 图6备注

如果你有多个不同硬件资源的管理节点,请根据较小的节点来设置 Prometheus 的值。

监控 - 图7警告

如果某个节点上部署了越来越多的虚拟机,prometheus-node-exporter Pod 可能会由于 OOM(内存不足)而被杀死。在这种情况下,你需要增加 limits.memory 的值。

使用 CLI

你可以使用 CLI 命令 $kubectl edit managedchart rancher-monitoring -n fleet-local 来更新这些值。

对于 >= v1.0.1 的 Harvester 版本,相关路径和默认值为:

  1. # Prometheus configs
  2. spec.values.prometheus.prometheusSpec.resources.limits.cpu: 1000m
  3. spec.values.prometheus.prometheusSpec.resources.limits.memory: 2500Mi
  4. spec.values.prometheus.prometheusSpec.resources.requests.cpu: 750m
  5. spec.values.prometheus.prometheusSpec.resources.requests.memory: 1750Mi
  6. ---
  7. # node exporter configs
  8. spec.values.prometheus-node-exporter.resources.limits.cpu: 200m
  9. spec.values.prometheus-node-exporter.resources.limits.memory: 180Mi
  10. spec.values.prometheus-node-exporter.resources.requests.cpu: 100m
  11. spec.values.prometheus-node-exporter.resources.requests.memory: 30Mi

对于 <= v1.0.0 的版本,managedchart rancher-monitoring 中没有指定相关路径和默认值,因此你需要相应添加它们。

Alertmanager

从 v1.1.0 起可用

Harvester 使用 Alertmanager 来收集和管理集群中发生/正在发生的所有告警。

Alertmanager 配置

启用/禁用 Alertmanager

Alertmanager 默认启用。你可以通过以下配置路径来禁用它。

监控 - 图8

更改资源设置

你还可以更改 Alertmanager 的资源设置,如上图所示。

从 WebUI 配置 AlertmanagerConfig

要将告警发送到第三方服务器,你需要配置 AlertmanagerConfig

在 WebUI 上,导航到 Monitoring & Logging > Monitoring > Alertmanager Configs 页面。

Alertmanager Config: Create 页面中,点击 Namespace,从下拉列表中选择目标命名空间并设置 Name。然后,点击右下角的 Create

监控 - 图9

单击刚刚创建的 Alertmanager Configs 继续进行配置。

监控 - 图10

单击 Add Receiver

监控 - 图11

为接收器设置 Name。然后,选择接收器类型,例如 Webhook,然后单击 Add Webhook

监控 - 图12

填写所需参数,然后单击 Create

监控 - 图13

从 CLI 配置 AlertmanagerConfig

你还可以从 CLI 添加 AlertmanagerConfig

示例:default 命名空间中的 Webhook 接收器:

  1. cat << EOF > a-single-receiver.yaml
  2. apiVersion: monitoring.coreos.com/v1alpha1
  3. kind: AlertmanagerConfig
  4. metadata:
  5. name: amc-example
  6. # namespace: your value
  7. labels:
  8. alertmanagerConfig: example
  9. spec:
  10. route:
  11. continue: true
  12. groupBy:
  13. - cluster
  14. - alertname
  15. receiver: "amc-webhook-receiver"
  16. receivers:
  17. - name: "amc-webhook-receiver"
  18. webhookConfigs:
  19. - sendResolved: true
  20. url: "http://192.168.122.159:8090/"
  21. EOF
  22. # kubectl apply -f a-single-receiver.yaml
  23. alertmanagerconfig.monitoring.coreos.com/amc-example created
  24. # kubectl get alertmanagerconfig -A
  25. NAMESPACE NAME AGE
  26. default amc-example 27s

Webhook 收到的告警示例

发送到 Webhook 服务器的告警格式如下:

  1. {
  2. 'receiver': 'longhorn-system-amc-example-amc-webhook-receiver',
  3. 'status': 'firing',
  4. 'alerts': [],
  5. 'groupLabels': {},
  6. 'commonLabels': {'alertname': 'LonghornVolumeStatusWarning', 'container': 'longhorn-manager', 'endpoint': 'manager', 'instance': '10.52.0.83:9500', 'issue': 'Longhorn volume is Degraded.',
  7. 'job': 'longhorn-backend', 'namespace': 'longhorn-system', 'node': 'harv2', 'pod': 'longhorn-manager-r5bgm', 'prometheus': 'cattle-monitoring-system/rancher-monitoring-prometheus',
  8. 'service': 'longhorn-backend', 'severity': 'warning'},
  9. 'commonAnnotations': {'description': 'Longhorn volume is Degraded for more than 5 minutes.', 'runbook_url': 'https://longhorn.io/docs/1.3.0/monitoring/metrics/',
  10. 'summary': 'Longhorn volume is Degraded'},
  11. 'externalURL': 'https://192.168.122.200/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy',
  12. 'version': '4',
  13. 'groupKey': '{}/{namespace="longhorn-system"}:{}',
  14. 'truncatedAlerts': 0
  15. }

监控 - 图14备注

不同的接收器可以以不同的格式呈现告警。详情请参阅相关文件。

已知限制

AlertmanagerConfig命名空间强制执行。不支持没有命名空间的全局级别 AlertmanagerConfig

我们已经创建了一个 GithHb issue 来跟踪上游更改。一旦该功能可用,Harvester 将采用它。

查看和管理告警

使用 Alertmanager 仪表板

你可以从下面的链接访问 Alertmanager 的原始仪表板。请注意,你需要将 the-cluster-vip 替换为实际的 cluster-vip:

https://the-cluster-vip/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy/#/alerts

Alertmanager 仪表板的整体视图如下。

监控 - 图15

你可以查看告警的详细信息:

监控 - 图16

使用 Prometheus 仪表板

你可以从下面的链接访问 Prometheus 的原始仪表板。请注意,你需要将 the-cluster-vip 替换为实际的 cluster-vip:

https://the-cluster-vip/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-prometheus:9090/proxy/

顶部导航栏中的 Alerts 菜单显示了 Prometheus 中定义的所有规则。你可以使用过滤器 InactivePendingFiring 快速找到你需要的信息。

监控 - 图17

故障排除

如需 Monitoring 的支持和故障排除,请参阅故障排除页面