Prometheus 和 Grafana 在 Nutanix Karbon 上进行# 应用程序监控
您在问自己如何在新部署的 Karbon Kubernetes 集群中实现对应用程序的监控,并使用 Grafana 通过一个统一的界面来呈现这一点?
很好的问题,我们将在此页面上回答!
当您使用 Karbon 部署新的 Kubernetes 集群时,会默认安装 Prometheus Operator,并且还会部署和配置 Prometheus 实例来监控您的 Kubernetes 集群资源。但是您不能使用此实例来监控您的应用程序,您需要部署一个新实例!
因此,首先快速查看我们想要完成的设置。下图左侧可以看到已经默认部署在Karbon上的Kubernetes Prometheus Instance,专门用于Kubernetes集群的监控。在右侧,您会看到我们将部署以监控应用程序指标的 Application Prometheus Instance。
我们将通过这个页面做什么:
-
重新配置现有的Prometheus资源
-
创建新的Prometheus资源专用于App Monitoring
-
部署配置Grafana
-
部署应用程序并验证设置 如果您没有使用 ArgoCD 进行持续部署或 GitOps 策略,则可以向下浏览页面直到手动设置。
使用 ArgoCD 将很容易设置所有这些。您可以在 ArgoCD 中创建一个新应用程序,将目标命名空间设置为 monitoring-apps 并使用此公共存储库karbon-app-monitoring-demo
应用程序同步后,您将看到两个 Prometheus 实例,如下图所示。
如果您没有使用 ArgoCD 或任何持续部署工具,那么我们将手动进行设置。
_如果您有兴趣在 Kubernetes](https://devops.cisel.ch/deploy-argocd-and-a-first-app-on-kubernetes)上使用 CD 工具[ArgoCD,请查看此链接 _
好的,让我们手动进行
**重新配置现有的 Prometheus 资源并创建专用于 App Monitoring 的新 Prometheus **
第一步是重新配置 Kubernetes Prometheus Instance,使其仅查看标签为monitoring: k8s的资源。为此,我们修改 Prometheus 资源的 serviceMonitorNamespaceSelector 以查找新标签,并将此标签设置在Kubernetes 命名空间,因此它们仍将被此 Prometheus 实例监控
源文件:karbon-app-mon-setup-demo.sh
# Set label on the system namespace kubectl label ns/kube-system monitoring=k8s kubectl label ns/ntnx-system monitoring=k8s
# Patch existing prometheus resource to limit ServiceMonitors used kubectl -n ntnx-system patch --type merge prometheus/k8s -p '{"spec":{"serviceMonitorNamespaceSelector":{"matchLabels":{"monitoring": "k8s"}}}}'
然后我们可以使用以下命令部署新的 Application Prometheus Instance 、他的 ServiceMonitor 和所需的 RBAC。这将创建monitoring-apps命名空间并在其中部署所有 Prometheus 设置。它还将使用标签monitoring: apps上的选择器创建 ServiceMonitor 资源。因此,您需要将此标签添加到要使用此 Prometheus 应用程序实例监视的所有服务。
kubectl apply -f https://raw.githubusercontent.com/cisel-dev/karbon-app-monitoring-demo/main/karbon-app-mon-rbac-demo.yml kubectl apply -f https://raw.githubusercontent.com/cisel-dev/karbon-app-monitoring-demo/main/karbon-app-mon-prometheus-demo.yml kubectl apply -f https://raw.githubusercontent.com/cisel-dev/karbon-app-monitoring-demo/main/karbon-app-mon-service-monitor-demo.yml
部署和配置 Grafana Prometheus 设置现已完成,我们可以继续进行 Grafana 部署和配置。我们将使用官方 Helm chart 部署 Grafana。请在运行helm install之前查看并调整values.yaml文件。在我们的 Kubernetes 集群中,我们运行MetalLB 负载均衡器服务,该服务允许我们为 Grafana 指定service.type: LoadBalancer。您可能希望将此值设置为 ClusterIP 或 NodePort。
源文件:karbon-app-mon-grafana-demo.sh
# Grafana installation
# Prerequisite helm v3 with stable repo helm repo add stable https://kubernetes-charts.storage.googleapis.com helm repo update
# Create dedicated namespace kubectl create ns grafana
# Install Grafana helm chart
# Please review the values file before applying helm install grafana stable/grafana --namespace grafana -f https://raw.githubusercontent.com/cisel-dev/karbon-app-monitoring-demo/main/karbon-app-mon-grafana-values-demo.yaml kubectl -n grafana rollout status deploy/grafana export SERVICE_IP=$(kubectl get svc --namespace grafana grafana -o jsonpath='{.status.loadBalancer.ingress[0].ip}') export GF_PASSWORD=$(kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo) echo "you can connect on Grafana http://$SERVICE_IP with admin/$GF_PASSWORD"
使用之前的信息连接到 Grafana 并检查您是否可以在数据源中看到两个 Prometheus 实例
部署演示应用 下面是在 /metrics REST 端点提供指标。部署后,应用程序会将随机 RPC 延迟数据发送到 /metrics 端点。我们将标签设置为monitoring: apps,因此这些指标将通过 Application Prometheus Instance 在 Grafana 中可用。
源文件:rpc-app-demo.yaml
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: rpc-app-deployment
namespace: default
labels:
app: rpc-app
spec:
replicas: 2
selector:
matchLabels:
app: rpc-app
template:
metadata:
labels:
app: rpc-app
spec:
containers:
- name: rpc-app-cont
image: supergiantkir/prometheus-test-app
ports:
- name: http-metrics
containerPort: 8081
---
kind: Service
apiVersion: v1
metadata:
name: rpc-app
labels:
app: rpc-app
monitoring: apps
spec:
selector:
app: rpc-app
ports:
- name: http-metrics
port: 8081
EOF
rpc-app-deployment 公开的具体细节rpc 指标 现在在 Grafana 中可用。 
开始使用不同类型的查询创建面板!
您可以在下面看到一个自定义仪表板,它显示了我们在 Karbon Kubernetes 集群上运行的 ArgoCD 应用程序的指标
享受!!
如果您有任何问题,请随时对本文发表评论。
cisel.ch
参考:
-
medium.com/@christophe_99995/applications-m..
-
devops.cisel.ch/deploy-argocd-and-a-first-a..
-
github.com/cisel-dev/karbon-app-monitoring-..
更多推荐
所有评论(0)