title: 关于监控
Octopus 基于sigs.k8s.io/controller-runtime上搭建,因此某些指标与控制器运行时和client-go相关。 同时github.com/prometheus/client_golang为Go runtime提供了一些指标和过程状态。
指标类别
在 “种类”列中,使用第一个字母代表相应的单词:G - 仪表(Gauge),C - 计数器(Counter),H - 柱状图(Histogram),S - 摘要(Summary)。
Controller Runtime 指标对照表
Controller 参数
Webhook 参数
Kubernetes 客户端指标对照表
Rest 客户端参数
Workqueue 参数
Prometheus 客户端指标对照表
Go runtime 参数
Running process 参数
Octopus 指标对照表
Limb 参数
监控
默认情况下,指标将在端口 8080
上公开 (请参阅brain options和limb options,则可以通过Prometheus进行收集,并通过Grafana进行可视化分析。 Octopus 提供了一个ServiceMonitor 定义 YAML与Prometheus Operator集成用于配置和管理 Prometheus 实例的工具。
Grafana 仪表盘
为方便起见,Octopus 提供了Grafana 仪表盘来可视化展示监视指标。
与 Prometheus Operator 集成
使用prometheus-operator HELM Chart,您可以轻松地设置 Prometheus Operator 来监视 Octopus。 以下步骤演示了如何在本地 Kubernetes 集群上运行 Prometheus Operator:
- 使用
cluster-k3d-spinup.sh
通过k3d创建本地 Kubernetes 集群。 - 按照HELM 的安装指南安装 helm 工具,然后使用
helm fetch --untar --untardir /tmp stable/prometheus-operator
将 prometheus-operator Chart 移至本地/ tmp
目录。 - 从 prometheus-operator Chart 生成部署 YAML,如下所示。
helm template --namespace octopus-monitoring \
--name octopus \
--set defaultRules.create=false \
--set global.rbac.pspEnabled=false \
--set prometheusOperator.admissionWebhooks.patch.enabled=false \
--set prometheusOperator.admissionWebhooks.enabled=false \
--set prometheusOperator.kubeletService.enabled=false \
--set prometheusOperator.tlsProxy.enabled=false \
--set prometheusOperator.serviceMonitor.selfMonitor=false \
--set alertmanager.enabled=false \
--set grafana.defaultDashboardsEnabled=false \
--set coreDns.enabled=false \
--set kubeApiServer.enabled=false \
--set kubeControllerManager.enabled=false \
--set kubeEtcd.enabled=false \
--set kubeProxy.enabled=false \
--set kubeScheduler.enabled=false \
--set kubeStateMetrics.enabled=false \
--set kubelet.enabled=false \
--set nodeExporter.enabled=false \
--set prometheus.serviceMonitor.selfMonitor=false \
--set prometheus.ingress.enabled=true \
--set prometheus.ingress.hosts={localhost} \
--set prometheus.ingress.paths={/prometheus} \
--set prometheus.ingress.annotations.'traefik\.ingress\.kubernetes\.io\/rewrite-target'=/ \
--set prometheus.prometheusSpec.externalUrl=http://localhost/prometheus \
--set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false \
--set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false \
--set prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues=false \
--set grafana.adminPassword=admin \
--set grafana.rbac.pspUseAppArmor=false \
--set grafana.rbac.pspEnabled=false \
--set grafana.serviceMonitor.selfMonitor=false \
--set grafana.testFramework.enabled=false \
--set grafana.ingress.enabled=true \
--set grafana.ingress.hosts={localhost} \
--set grafana.ingress.path=/grafana \
--set grafana.ingress.annotations.'traefik\.ingress\.kubernetes\.io\/rewrite-target'=/ \
--set grafana.'grafana\.ini'.server.root_url=http://localhost/grafana \
/tmp/prometheus-operator > /tmp/prometheus-operator_all_in_one.yaml
- 通过
kubectl create ns octopus-monitoring
创建octopus-monitoring
命名空间。 - 通过
kubectl apply -f /tmp/prometheus-operator_all_in_one.yaml
将 prometheus-operator all-in-ine
部署于本地集群。 - (可选)通过
kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/deploy/e2e/all_in_one.yaml
来部署 Octopus - 通过
kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/deploy/e2e/integrate_with_prometheus_operator.yaml
将监视集成部署于本地集群。 - 访问
http://localhost/prometheus
以通过浏览器查看 Prometheus Web 控制台,或访问http://localhost/grafana
以查看 Grafana 控制台(管理员帐户为admin/admin
)。 - (可选)从 Grafana 控制台导入Octopus 概述仪表盘。