- 国外:Mrtg、cacti、Nagios、Zabbix、smokeping、ganglia
- 国内:小米监控,夜莺系统(滴滴打车)
- 原理是让主库处写相关操作,而从数据库处理select查询,从而减轻数据库的IO压力,避免误操作将数据写入从库而导致数据不一致。
2.1.1Cadvisor(数据采集)
-
Cadvisor是由google开发出来的单节点资源信息的监控工具。方便其他组件如Granfana、Prometheus
进行数据抓取,可以对主机上的资源及容器和性能数据进行监控。它使用Go语言开发,采用Linux中Cgroup获取容器资源信息。 -
Google的Kubernetes中也默认将其作为单点的资源监控工具,各节点默认安装Cadvisor。
-
产品特点:
1)可以展示主机和容器两个层次的监控数据;
2)可以展示历史变化数据;
3)谷歌公司的开源产品;
4)监控指标齐全;
5)方便部署,有官方的docker镜像;
6)(缺点)默认只在保存1分钟数据,可以集成InfluxDB(解决存储问题)等第三方存储使用。
Cadvisor操作界面简陋,并且需要在不同页面跳转,只能监控一个host,但是可以将监控数据导出给第三方工具,所以值只作为一个数据采集器。
2.1.2InfluxDB(数据存储)
- InfluxDB是非关系型数据库,时序性数据库(开源)由Go语言开发。它可以高性能的查询与存储时序性数据,被广泛用于存储系统的监控数据。
- 应用场景:性能监控、应用程序指标、物联网传感器数据和实时分析等的后端存储。
- 主要功能:
1)基于时间序列,支持与时间有关的相关函数 (如最大、最小、求和等);
2)可度量行:可以实时计算大量数据;
3)基于事件:支持任意的时间数据。 - 主要特点:
1)无结构(无模式):可以是任意数量的列;
2)支持拓展;
3)支持min、max、sum、count、mean、median 等一系列函数,方便统计;
4)原生的HTTP支持,内置HTTP API;
5)强大的类SQL语法;
6)自带管理界面,方便使用。
2.1.3Granfana(数据展现)
- Granfana是一个可视化面板(Dashboard)工具,图表和布局漂亮,有功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。
- Granfana主要特性:
1)灵活丰富的图形化选项;
2)可以混合多种风格;
3)支持白天和夜间模式;
4)支持多个数据源。
部署方案:
1)创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中;
2)创建InfluxDB容器,创建数据用户、数据库;
3)创建Cadvisor容器;
4)创建Granfana容器,配置granfana。
2.3.1安装docker-ce
2.3.2镜像加速器
2.3.3下载组件镜像
2.3.4创建自定义网络
访问测试
可以自行选择模板
2.3.5创建数据库和数据库用户
2.3.6创建Cadvisor容器
- –mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor需要采集的目录文件和监控内容;
- -storage_driver:指定Cadvisor的存储驱动、数据库主机、数据库名。
也可以自行创建容器检测。这里不做演示。
2.3.7创建Grafana容器
登录测试 192.168.9.9:8080
- Prometheus是一个开源系统监控和警报工具包,现在是一个独立的开源项目。它在2016年加入CNCF(Cloud Native Computing Foundation云原生),是kubernetes之后的第二个托管项目。
- 主要特征:
1)多维度数据模型,由指标键值对标识的时间序列数据组成;
2)PromQL,一种灵活的查询语言;
3)不依赖分布式存储,单个服务器节点是自治的;
4)以HTTP方式,通过pull模型拉取时间序列数据;
5)支持通过中间网关推送时间序列数据;
6)通过服务发现或者静态配置,来发现目标服务对象;
7)支持多种多样的图表和界面展示。
targets后面可以添加多个IP,用逗号分隔。
点击url查看详细信息
界面难看,所以结合grafana使用。
若要采集多个多个宿主机,就在/tmp/prometheus.yml最后添加主机IP,用逗号分隔。