OpenShift-性能监控

简介

OpenShift在Kubernetes架构的基础上提供了一套易于使用的度量采集和性能监控方案。设计从整个环境中的容器、POD、Node节点中收集信息,然后在Web控制台中显示这些信息。

项目URL:https://github.com/openshift/origin-metrics

主要通过以下组件实现:

  • Heapster

Heapster通过Master
API收集系统级别的信息,如CPU、内存、网络,然后将这些信息发送到Hawkular

https://github.com/kubernetes/heapster

  • Hawkular Metrics

Hawkular Metrics是来此Hawkular项目的监控存储引擎。它提供了通过json
REST接口来创建、访问和管理历史存储指标的方法。

https://github.com/hawkular/hawkular-metrics

  • Cassandra

Cassandra是Hawkular的分布式数据库

http://cassandra.apache.org/

  • Hawkular OpenShift Agent

Hawkular OpenShift
Agent是一个代理组件,用来收集来此pod的应用程序级别的数据。前提是pod公开自己希望被收集的信息。

OpenShift的监控采集方案的组件Heapster、Hawkular
Metrics、Canssandra数据库都是以容器的形式提供,并默认提供了可快速部署的Temaplate。

启用集群监控

版本1.4之前OpenShift
Origin提供template的方式,供用户安装Metrics组件,从版本1.5开始到当前环境的3.6版本,OpenShift
Origin开始已Ansible Playbook的方式安装Metris组件。

Playbook URL:./openshift-ansible/playbooks/common/openshift-cluster/
openshift_metrics.yml

由于部署需要联网下载docker 镜像,网络原因导致失败,提前下载。
在infra-node上下载以下镜像,并保证infrra-node物理内存>4G
docker pull docker.io/openshift/origin-metrics-heapster:latest docker pull docker.io/openshift/origin-metrics-hawkular-metrics:latest docker pull docker.io/openshift/origin-metrics-heapster:lates
开始部署Metric组件
ansible-playbook /root/openshift-ansible/playbooks/byo/openshift-cluster/openshift-metrics.yml \ -e openshift_metrics_install_metrics=True \ -e openshift_metrics_hawkular_hostname=hawkular-metrics.example.com
因为测试使用临时存储,若要持久化存储: ansible-playbook /root/openshift-ansible/playbooks/byo/openshift-cluster/openshift-metrics.yml \ -e openshift_metrics_install_metrics=True \ -e openshift_metrics_hawkular_hostname=hawkular-metrics.example.com \ -e openshift_metrics_cassandra_storage_type=pv
./media/image2.png
oc project openshift-infra
oc get po
./media/image3.png

使用集群监控

部署完成后,在OpenShift的Web控制台,进入某一个Pod的详情页面,单机Metrics页签,可以看到当前Pod的CPU,内存及网络的使用情况,如下图

集群监控容量规划

OpenShift
Origin监控存储使用的是Cassandra数据库。默认设置,监控数据存储七天,七天后,Cassandra开始清除旧数据。已删除的Pod和Project的监控数据不会自动清除,只要超过7天才会被删除

Pod运行累计数据表
1000Pod 10000Pod
24小时Cassandra数据占用 2.5GB 11.4GB
7天Cassandra数据占用 20GB 90GB

监控组件配置

在实际环境中,强烈建议为Cassandra数据库配置后端持久化存储,并且规划好容量。此外根据集群以及应用规模,可以调整Hawkular
Metrics及Cassandra数据库的实例数量,保证性能及相应速度。

详细关于监控的配置项,参考官方文档:https://docs.openshift.org/3.6/install_config/cluster_metrics.html

监控接口

OpenShift的监控信息最终都存放在Hawkular
Metrics后端的Cassandra数据库中。可以访问Hawkular
Metrics的RESTful接口获取其中的信息,着对需要将OpenShift的监控和企业现有监控对接有很大帮助。

Heapster已配置通过API访问,并且需要cluster-reader或cluster-admin权限。

示例
curl -H “Authorization: Bearer \$(oc whoami -t)” \ -X GET https://\${KUBERNETES_MASTER}/api/v1/proxy/namespaces/openshift-infra/services/https:heapster:/validate

更多API接口信息,参考Heapster项目:

https://github.com/kubernetes/heapster/