让我们在Cloud Insights中试试对Kubernetes进行监控
关于这篇文章
当我们谈到Kubernetes的监控时,Prometheus(+Grafana)是非常著名的解决方案。然而,我们公司的监控解决方案Cloud Insights(以下简称CI)也集成了对Kubernetes的监控功能。
在本文中,我们将专注于CI对Kubernetes的监控,并检查实际使用体验等方面。
总结
首先,我将总结通过后续的内容确认所得出的结果。
以下是Cloud Insights的k8s监控功能:
1. 在内置的仪表盘(Kubernetes Explorer)上可以俯瞰集群的状态。
2. 可以监控各种k8s资源的指标和日志。
3. 可以监控代表性的中间件的指标,如Nginx、Apache、MongoDB、PostgresSQL等。
4. 可以监控Cloud Insights独有的基于机器学习引擎的指标。
5. 可以指定警报输出条件,并通过电子邮件或Webhook进行通知。
关于Cloud Insights

尝试使用Cloud Insights的Kubernetes监控功能。
在这里,我们将假设您已经完成了CI(身份验证)的注册,并继续进行下去。
部署NetApp Kubernetes Monitoring Operator(NKMO)。
为了监视各种产品,在CI上需要部署一种名为Data Collector的对象,在这个对象中专门针对监视目标的硬件和云资源进行监控。如果要监视ONTAP,就需要使用专为ONTAP设计的Data Collector;如果要监视AWS EC2,就需要使用专为EC2设计的Data Collector。
对于k8s监视的情况,Data Collector以符合k8s运营商模式的形式提供。其名为NetApp Kubernetes Monitoring Operator,简称NKMO。

将显示NKMO的安装步骤。请按照英文说明进行以下操作。
-
- 输入集群名称、部署NKMO的命名空间
-
- 复制安装器代码片段
-
- 在拥有kubectl和curl的终端上粘贴并执行安装器代码片段
- 完成

# 2でコピーしたスニペットをペーストして実行
$ clustername="cluster1" && namespace=netapp-monitoring && token=xxxxxxx && key=xxxxxxxx && domain=ps1325.c01.cloudinsights.netapp.com && curl -X GET -H "Authorization: Bearer $token" -H "X-CloudInsights-Namespace: $namespace" -H "X-CloudInsights-ClusterName: $clustername" -H "X-CloudInsights-ApiKey-Id: $key" https://$domain/rest/v1/lake/telegraf/platforms/operator?name=operator.yaml | kubectl apply -f - && echo "Getting operator based installer config..." && curl -X GET -H "Authorization: Bearer $token" -H "X-CloudInsights-Namespace: $namespace" -H "X-CloudInsights-ClusterName: $clustername" -H "X-CloudInsights-ApiKey-Id: $key" https://$domain/rest/v1/lake/telegraf/platforms/operator?name=operator-cr.yaml | kubectl apply -f -
在这个命令行中,我们将在k8s上部署NKMO并监视它,同时访问CI的API,并将目标k8s集群注册。当部署完成后,将展开以下内容:operator本体和另外两种类型的pod。
# デプロイされたリソースを確認
$ kubectl get pod -n netapp-monitoring
NAME READY STATUS RESTARTS AGE
kube-state-metrics-5cd9cf96c6-whtl4 1/1 Running 0 5d20h
monitoring-operator-68cf4c54db-6n7d9 2/2 Running 0 5d20h
telegraf-ds-n5pwz 1/1 Running 0 5d20h
telegraf-ds-p2h2v 1/1 Running 0 5d20h
telegraf-rs-dmxcq 1/1 Running 0 5d20h
kube-state-metrics是一个应用程序,用于生成与Kubernetes各种资源相关的指标,并在包括Prometheus在内的各种监控解决方案中使用。
通过daemonSet部署在每个节点上的telegraf是一个应用程序,用于在云上的CI实例之间进行指标传递。
如果这些资源成功部署,各种指标/日志将被传送到云上的CI实例,从而启用k8s监控。
虽然上述步骤可以有效监控Kubernetes资源,但是如果要监控在Kubernetes基础设施上部署的应用程序,如Nginx、MongoDB等,则需要额外安装针对每个应用程序适用的数据收集器。
使用 Kubernetes Explorer

Kubernetes Explorer中可以查看的内容(例子):
集群列表
总Pod数
Pod的调度情况
每个节点上调度的Pod数、发生错误的Pod、无法调度而处于Pending状态的Pod等
CPU使用率/MEM使用率/Disk使用率
可以以整个集群或命名空间为单位以不同的粒度查看。
创建查询
您可以通过使用查询来查看Kubernetes Explorer无法显示的详细指标和日志。请从屏幕左侧菜单选择查询 -> + 创建新的度量查询(如果要查看日志,请选择查询 -> + 创建新的日志查询)。

为了生成k8s上各种资源(pod、deployment、service等)的指标,CI内置了kube-state-metrics工具。您可以参考kube-state-metrics文档中的指标列表。ConfigMap指标
DaemonSet指标
Deployment指标
Ingress指标
命名空间指标
节点指标
持久卷指标
持久卷声明指标
Pod指标
ReplicaSet指标
Secret指标
Service指标
StatefulSet指标
另外,除了kube-state-metrics的标准指标外,CI还提供了自己的指标。在这里,我们将介绍一个代表性的例子,即kubernetes.pv对象的指标之一,称为timeToFull。

根据机器学习引擎预测,timeToFull.total表示PV容量耗尽的剩余天数。看图上方名为“nfsapp”的PV,预计大约在95天后PV容量将降为零。
在“nfsapp”这个例子中,timeToFull.confidenceInterval表示timeToFull.total的预测准确度。这意味着显示在timeToFull.total中的预测(PV在95天后耗尽)可能存在约12天左右的误差。
如果是每天都会发生固定规律访问模式的PV,每天写入100GB的数据,那么预测就很容易,timeToFull.confidenceInterval的值会接近于0。
然而,如果是不规律地进行写入和删除操作的PV,预测就很困难,timeToFull.confidenceInterval的值会更大。
設定警報通知
当然也可以设置条件,并发送警报到指定的通知接收方。请点击屏幕左侧的菜单,选择Alerts -> Manage Monitors -> + Monitor。




因为选项4和选项5是可选的,所以这次省略它们。
只需点击屏幕右上角的保存,警报设置即可生效。
总之
我已经通过Cloud Insights对Kubernetes监控功能进行了验证。如果想更详细了解Cloud Insights,请阅读以下文章。
公式ドキュメント
https://docs.netapp.com/us-en/cloudinsights/
ITインフラのコストを最適化したいのでITインフラを可視化してみた
https://qiita.com/seijitanabe/items/9969d7b9504122e0e4a7
NetApp Cloud Insights – Cloud Secureを使ってみた(導入編)
https://dev.classmethod.jp/articles/introduce-netapp-cloud-insights-cloud-secure/