图文详解Prometheus监控+Grafana+Alertmanager告警安装使用

一个服务上线了后,你想知道这个服务是否可用,需要监控。假如线上出故障了,你要先于顾客感知错误,你需要监控。还有对数据库,服务器的监控,等等各层面的监控。
近年来,微服务架构的流行,服务数越来越多,监控指标变得越来越多,所以监控也变得越来越复杂,需要新的监控系统适应这种变化。

以前我们用zabbix,StatsD监控,但是随着容器化,微服务的流行,我们需要新的监控系统来适应这种变化。于是监控项目Prometheus就应运而生。

二:Prometheus介绍 介绍

网站地址:https://prometheus.io/
https://prometheus.io/docs/introduction/overview/
https://github.com/prometheus/docs

github:github.com/prometheus

Prometheus是一款基于时序数据库的开源监控告警系统,它是SoundCloud公司开源的,SoundCloud的服务架构是微服务架构,他们开发了很多微服务,由于服务太多,传统的监控已经无法满足它的监控需求,于是他们在2012就着手开发新的监控系统。Prometheus的原作者Matt T. Proud在2012年加入SoundCloud公司,他之前服务于Google公司,他从google的监控系统Borgmon中获取灵感,与另外一名工程师Julius Volz合作开发了开源监控系统Prometheus。(总之感觉是因为有了这个前google工程师到来,才有能力开发了Prometheus)。后来其他开发人员陆续加入了这个项目,并在 SoundCloud 内部继续开发,最终于 2015 年 1 月将其发布。后来在2016年,SoundCloud把它捐献给了云原生基金会(Cloud Native Computing Foundation),在它下面继续孵化。

Prometheus是用go语言开发。它的很多理念跟google的SRE不谋而合。所以有时间,可以去看看google SRE那本书,可以更好的理解Prometheus。

主要特性(功能)

多维数据模型(时序由 metric 名字和 k/v 的labels构成)

灵活的查询语言(PromQL)

无依赖的分布式存储;单节点服务器都是自治的

采用 http 协议,使用pull模式拉取数据,简单易懂

监控目标,可以采用服务发现和静态配置方式

支持多种统计数据模型和界面展示。可以和Grafana结合展示。

三:Prometheus架构原理 架构

来自官方的一张架构图

图文详解Prometheus监控+Grafana+Alertmanager告警安装使用

图片来自: https://prometheus.io/docs/introduction/overview/

主要模块

the main Prometheus Server,主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。就是数据的采集和存储,用PromQL查询,报警配置。

client libraries,用于对接Prometheus Server,用于对接Prometheus Server,可以查询和上报数据。

a push gateway,用于批量,短期的监控数据的汇报总节点,主要用于业务数据汇报等。

各种汇报数据的 exporters,例如汇报机器数据的node_exporter,汇报MondogDB信息的 MongoDB_exporter 等等。

用于高级通知管理的 alertmanager 。

各种各样的支持工具

怎么采集监控数据

要采集目标的监控数据,首先就要在被采集目标地方安装采集组件,这种采集组件被称为Exporter。prometheus.io官网上有很多这种exporter,官方 exporter列表。

采集完了怎么传输到Prometheus?

采集了数据,要传输给prometheus。怎么做?
Exporter 会暴露一个HTTP接口,prometheus通过Pull模式的方式来拉取数据,会通过HTTP协议周期性抓取被监控的组件数据。
不过prometheus也提供了一种方式来支持Push模式,你可以将数据推送到Push Gateway,prometheus通过pull的方式从Push Gateway获取数据。

主要流程

Prometheus server定期从静态配置的 targets 或者服务发现的 targets 拉取数据(zookeeper,consul,DNS SRV Lookup等方式)

当新拉取的数据大于配置内存缓存区的时候,Prometheus会将数据持久化到磁盘,也可以远程持久化到云端。

Prometheus通过PromQL、API、Console和其他可视化组件展示数据。Prometheus支持很多方式图表可视化,比如Grafana,自带的Promdash。它还提供HTTP API的查询方式,自定义输出。

Prometheus 可以配置rules,然后定时查询数据,当条件触发的时候,会将alert推送到配置的Alertmanager。

Alertmanager收到告警的时候,会根据配置,聚合,去重,降噪,最后发出警告。

四:安装Prometheus

要整好prometheus监控系统,还是有很多软件需要安装。
安装的主要组件如下:

Prometheus Server

被监控对象exporter组件

数据可视化工具 Grafana

数据上报网关 push gateway

告警系统 Alertmanager

第1种:直接安装

到官网下载最新版的Prometheus,下载地址。
因为它是用go开发的,可以做到开箱即用。

wget https://github.com/prometheus/prometheus/releases/download/v2.19.2/prometheus-2.19.2.linux-amd64.tar.gz

解压:

tar xvfz prometheus-2.19.2.linux-amd64.tar.gz

运行启动:

cd ./prometheus-2.19.2.linux-amd64
./prometheus --version
./prometheus --config.file=prometheus.yml

第2种:docker镜像安装

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjdpx.html