目录
6.1 导入Grafana系统服务自带的Prometheus监控模板
1 Prometheus + Grafana 集群概述
1.1 Prometheus简介
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus的主要特点如下:
- 多维度数据模型。
- 灵活的查询语言.
- 不依赖分布式存储,单个服务器节点是自主的。
- 通过基于HTTP的pull方式采集时序数据。
- 可以通过中间网关进行时序列数据推送。
- 通过服务发现或者静态配置来发现目标服务对象。
- 支持多种图形和Dashboard的展示,例如Grafana。
1.2 Prometheus组件架构图
Prometheus Daemon 负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
其工作流程大致如下:
- Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;或者接收来自推送网关发送过来的度量数据。
- Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合。
- 运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。
- 告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。
- Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。
1.3 Prometheus 三大组件
- Server 主要负责数据采集和存储,提供PromQL查询语言的支持。
- Alertmanager 警告管理器,用来进行报警。
- Push Gateway 支持临时性Job主动推送指标的中间网关。
1.4 Grafan 简介
Grafana是一个开源的度量分析与可视化套件,经常被用作基础设施的时间序列数据和应用程序分析的可视化。
Grafana支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。
官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。
每个数据源的查询语言和能力都是不同的,可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
2 集群环境准备(离线)
2.1 Linux Centos 环境准备
- 虚拟机:Virtualbox
- 系统:Centos-7
- 安装包:以下安装包的版本必须互相适配
node_exporter-1.0.1.linux-amd64.tar.gz
prometheus-2.21.0.linux-amd64.tar.gz
grafana-7.2.0.linux-amd64.tar.gz
- 监控面板json文件:node-exporter-for-prometheus-dashboard-cn-v20201010_rev24.json
- 主机时间与系统时间同步
- 主机信息:
IP地址(NAT) | 主机名 | 大小 | 服务 | |
---|---|---|---|---|
192.168.0.17 | monitor-1 | 20G | Prometheus、node_exporter、Grafana | 服务端、被监控端 |
192.168.0.18 | monitor-2 | 20G | node_exporter | 被监控端 |
2.2 修改主机 hostname
1. 本例中Linux操作系统为 centos 7,可使用自带的 hostnamectl 修改hostname
[root@localhost ~]# hostname monitor-1 //临时生效
[root@localhost ~]# hostnamectl set-hostname montior-1 //永久生效
[root@localhost ~]# hostname monitor-2
[root@localhost ~]# hostnamectl set-hostname monitor-2
2. 修改 host 文件,添加主机映射关系
使用 vim /etc/hosts 编辑该文件,在文件最后追加主机与ip的对应关系。
[root@monitor-1 ~]# vim /etc/hosts
192.168.0.17 monitor-1
192.168.0.18 monitor-2
[root@monitor-1 ~]# scp -r /etc/hosts monitor-2:/etc/
3 服务端安装Prometheus
3.1 解压安装prometheus
1. 安装Prometheus
[root@monitor-1 ~]# cd /package/
[root@monitor-1 package]# ls
grafana-7.2.0.linux-amd64.tar.gz prometheus-2.21.0.linux-amd64.tar.gz
node_exporter-1.0.1.linux-amd64.tar.gz
[root@monitor-1 package]# tar xf prometheus-2.21.0.linux-amd64.tar.gz
[root@monitor-1 package]# mv prometheus-2.21.0.linux-amd64 /usr/local/prometheus
[root@monitor-1 package]# ls /usr/local/prometheus/
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
[root@monitor-1 package]# mkdir /usr/local/prometheus/{data,conf,logs,bin}
[root@monitor-1 package]# cd /usr/local/prometheus/
[root@monitor-1 prometheus]# mv prometheus promtool ./bin/
[root@monitor-1 prometheus]# mv prometheus.yml ./conf/
[root@monitor-1 prometheus]# chown -R root:root /usr/local/prometheus/