监控的重要性
在整个it系统中,监控是最为重要的一个环节,监控是发现集群问题的关键,没有监控的话,只能等到出了问题才能发现集群的问题,那时为时以晚。
监控的范围
在一套完整的openstack私有云中,组件非常复杂因为它不仅仅有openstack的东西还有分布式存储ceph的东西。
计算组件:nova-api、nova-scheduler、nova-condutor、nova-novncproxy、nova-compute……
网络组件:neutron-server、neutron-dhcp-agent、neutron-metadata-agent、neutron-openvswitch-agent、openvswitch……
存储组件:cinder-api、cinder-scheduler 、cinder-volume
其他:等还有认证组件keystone、消息队列、镜像组件、还有底层分布式存储ceph、一个这么庞大的系统可想而知如果没有一个比较完善的监控很多并且在不同的角色上所监控的组件也是不一样的,比如控制节点没有nova-compute服务,计算节点没有控制节点服务,所以监控项还得针对不同的角色做区分。
除了组件上的监控外,其实少不了还有硬件上的监控,比如说,在私有云生产环境中,网卡都是会做bond的,做了bond的好处是当其中一个网卡出现故障时并并不是影响到整个集群,但你也得通过监控发现这个挂了的网卡,然后准备更换,ceph的osd down了,有可能是osd进程被kill掉了,也有可能是硬盘坏了导致osd进程挂了,这也都通过监控去发现。
组件构成
监控节点:nginx、php、mysql、influxdb、grafana、zabbix-server、zabbix-agent
控制节点:telegraf、zabbix-agent
融合节点:zabbix-agent
组件作用
nginx+php+mysql提供基础的lnmp平台让zabbix可以运行,mysql存储zabbix监控数据
zabbix-server:用于接收各个机器agent端发过来的数据
zabbix-agent:采集数据发给zabbix-server
telegraf:用于采集ceph的监控数据
influxdb:存储telegraf的数据
grafana:用于对采集数据图形化展示
其中需要注意的是因为教程所以监控节点组件都放一起了,并且还是单节点,在生产环境中监控节点要做高可用,根据监控的机器数决定是否将数据库能独立出来。
以下为最终效果。
效果展示
ceph监控界面
openstack节点性能状态
控制节点服务状态展示
计算节点服务状态展示
存储节点osd监控
zabbix-server监控