一. 前言
这一章节主要是针对那些有Linux以及有Docker基础的小伙伴做的一个比较全面的部署,如果有不会Linux和docker的小伙伴可以先去学一下。花个1周的时间把Linux和docker入门就可以了,不需要精通。部署的步骤也比较简单,我搜索了一些文章,基本都是没有一个全面的部署,要么就是部署了前面监控部分,没有后面的Alertmanager推送机器人或者邮箱。要么就是在Linux中部署,而没有在Docker中部署。不过我还是建议在Docker中部署,它的效率和维护性都非常的高,这也是我学习Docker之后的感悟。趁热打铁,最近刚好部署完这一整套监控系统,在此也分享给大家,希望每个小伙伴都能少走一些弯路!!不过也希望每位小伙伴在部署完成之后,能重新对流程和知识点再整理一遍,毕竟温故而知新嘛!开始进入正题~~~
二.实现的技术
1.部署中你需要用到的东西
在这里我就不做过于详细的讲解各技术的用途和功能了,毕竟要的是快速开发一套能用于工作的监控系统。
(1)Prometheus (数据监控)
Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。Promethus有以下特点:
- 支持多维数据模型:由度量名和键值对组成的时间序列数据
- 内置时间序列数据库TSDB
- 支持PromQL查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义
- 支持HTTP的Pull方式采集时间序列数据
- 支持PushGateway采集瞬时任务的数据
- 支持服务发现和静态配置两种方式发现目标
- 支持接入Grafana
小编:这里给大家配了张Prometheus的架构图,看不懂没关系,学到最后再回来看你就恍然大悟了!!!Prometheus主要就是用来监控各系统的指标。(重点)
(2)Node_Exporter(数据采集)
Node Exporter 是一个开源的 Prometheus 客户端软件,用于收集和导出 Linux 系统的各种指标数据。 它可以提供关于 CPU 使用率、内存占用、网络流量等方面的数据。 而在本文中,我们将重点关注磁盘 I/O 相关的指标。
小编:知道有这个东西就好,主要是用来采集主机数据的,要采集哪个系统的数据,就在哪个系统里部署,下面我们就直接采集阿里云的服务器数据,这个不难,只要安装部署跑通了就可以了。
(3)Grafana(数据显示)
Grafana是一个用Javascript写的开源的(Dashboard)可视化面板,能齐全的度量仪表盘和图形编辑器和漂亮的布局展示,并且支持Graphite、elasticsearch、zabbix等的数据可视化的实现,可以给你的数据换个皮肤,使你的数据展示更加直观和漂亮。
小编:这个主要用于显示prometheus中所有监控的数据,也就是形成监控看板,方便我们查看各个系统的软硬件指标。也是了解即可。
(4)Alertmanager(告警推送)
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。
小编:Alertmanager主要是用来完成对Prometheus生产的警告进行推送,我们要把警告消息推送到企业微信,钉钉,邮箱等地方就需要通过Alertmanager来实现。(重点)
梳理一下流程:Prometheus监控来自----Node_Exporter采集到的主机数据----并展示到grafana形成看板-----同时Prometheus又把生产的告警推送给Alertmanager---再通过Alertmanager推送给我们的企业微信和邮箱。(可以结合上面Prometheus的架构图进行理解,现在看不懂也没关系,慢慢来,后面部署完就能看懂这张图了)
2.开始部署
以下都是基于Docker容器来部署的,合适有Linux和docker基础的小伙伴
1.部署Prometheus
第一步:
在Linux系统中新建prometheus目录,编辑配置文件prometheus.yml
(这个prometheus.yml文件至关重要,也是prometheus能不能正常启动,能不能监控到数据的关键,后续如果启动不了prometheus或者