多设备集群的监控
一、项目介绍
本项目中使用Prometheus监控各项系统或业务的运行状态和健康情况。
其中主要用到exporter插件,Exporter的作用就是将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,然后Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据,也可以理解exporter就是部署在客户端的一个Agent。
exporter官方插件有很多个,如node_exporte,、mysql_exporter以及我们之前所介绍过的blackbox_exporter等,都是非常实际好用的。
最后,使用Grafana对以上的数据进行可视化。
二、组件介绍
1. k3s部署
(1)k3s简介
Kubernetes(业界简称k8s) 确实难学。 部署困难, 概念繁重,由于业界文档乱七八糟,理解起来又特别吃力费解。
拿万事开头难,来形容K8s的部署安装 绝对是再适合不过了。正所谓连安装都解决不了,何谈体验。那时候就在我要放弃的时候,我找到了k3s。
什么是k3s? 你就当作是Rancher团队 体会到了k8s给企业和开发者带来了“重”的痛苦后,所开发出来又完全符合k8s标准的优化版本。
虽然说是优化,但它高度整合了k8s所有的概念,这意味着你在k3s所掌握的知识是可以完美兼容到k8s上。部署方式高效、优雅又简洁,起码你不需要再陷入在部署陷阱里无法自拨。
同时k3s 属于 kubernetes 官方认证的发行版,即使你在企业中使用,只要规模不上数十加百台服务,你完全不用担心k3s会给你带坑。
(2)官网介绍图
2. exporter
一般来说可以将Exporter分为2类:
-
直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。
-
间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。
3. Prometheus
(1)简介:
Prometheus 受启发于 Google 的 Brogmon 监控系统(相似的 Kubernetes 是从 Google 的 Brog 系统演变而来),从 2012 年开始由前 Google 工程师在 Soundcloud 以开源软件的形式进行研发,并且于 2015 年早期对外发布早期版本。 2016 年 5 月继 Kubernetes 之后成为第二个正式加入 CNCF 基金会的项目,同年 6 月正式发布 1.0 版本。2017 年底发布了基于全新存储层的 2.0 版本,能更好地与容器平台、云平台配合。 Prometheus 作为新一代的云原生监控系统,目前已经有超过 650+ 位贡献者参与到 Prometheus 的研发工作上,并且超过 120+ 项的第三方集成。
(2)官方架构图
borgmon(监控系统)对应克隆的版本:prometheus(go 语言开发)所以 prometheus 特别适合 K8S 的架构上。而作为一个数据监控解决方案,它由一个大型社区支持,有来自 700 多家公司的 6300 个贡献者,13500 个代码提交和 7200 个拉取请求。
(3)prometheus 特性
- 多维的数据模型(基于时间序列的 Key-value 键值对)
- 灵活的查询和聚合语言 PromQL
- 提供本地存储和分布式存储
- 通过基于 HTTP 和 HTTPS 的 Pull 模型采集时间序列数据(pull数据的推送,时间序列:每段时间点的数据值指标,持续性的产生。横轴标识时间,纵轴为数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
- 可利用 Pushgateway(Prometheus 的可选中间件)实现 Push 模式
- 可通过动态服务发现或静态配置发现目标机器(通过 consul 自动发现和收缩)
- 支持多种图表和数据大盘
——————————————————————————————————————
(4)运维监控平台设计思路
- 数据收集模块
- 数据提取模块
- 监控告警模块
可细化为6层
第六层:用户展示管理层 同一用户管理、集中监控、集中维护
第五层:告警事件生成层 实时记录告警事件、形成分析图表(趋势分析、可视化)
第四层:告警规则配置层 告警规则设置、告警伐值设置
第三层:数据提取层 定时采集数据到监控模块
第二层:数据展示层 数据生成曲线图展示(对时序数据的动态展示)
第一层:数据收集层 多渠道监控数据
(5)Prometheus 的监控体系
- 系统层监控(需要监控的数据)
2. CPU、Load、Memory、swap、disk i/o、process 等
3. 网络监控:网络设备、工作负载、网络延迟、丢包率等
- 中间件及基础设施类监控
1. 消息中间件:kafka、redis、RocketMQ 等消息代理/中间件
2. WEB 服务器容器:tomcat、weblogic、apache、php、spring 系列
3. 数据库/缓存数据库:MySQL、PostgreSQL、MogoDB、es、redis
redis 监控内容:
- redis 所在服务器的系统层监控
- redis 服务状态
- RDB AOF 日志监控
(日志 -》如果是哨兵模式 -》哨兵共享集群信息,产生的日志 -》直接包含的其他节点哨兵信息及 mysql 信息)- key 的数量
- key 被命中的数据/次数
- 最大连接数 -》redis 和系统 (系统:ulimit -a。redis:redis-cli 登陆 -》config get
</
maxclients 查看最大连接。)