Prometheus 监控系统 + Grafana 可视化平台部署

一、Prometheus 概述

Prometheus 是一个开源的服务监控系统时间序列数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件 Prometheus server周期性从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据新拉取到的数据会持久化到存储设备当中

时间序列数据库:专门用于存储和处理时间序列数据的数据库系统

zabbix和promethus区别:

zabbix 用的关系型数据库(必须按照固定格式存储,去重等),只适用于传统环境
           支持图形化,适合监控本地服务器。(zabbix6.0支持时序数据库)

promethus 用的时间序列数据库(按照时间顺序 快速存储)

                  和k8s是同种Go语言编写,同种系统。适合云原生容器监控都用promethus

每个被监控的主机都可以通过专用的 exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个 HTTP 接口供 Prometheus server 查询,Prometheus 通过基于 HTTP 的 pull 的方式来周期性的采集数据。 
如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到 Alertmanager 完成告警的汇总和分发。
当被监控的目标有主动推送数据的需求时,可以以 Pushgateway 组件进行接收并临时存储数据,然后等待 Prometheus server 完成数据的采集。

任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让 Prometheus 通过服务发现的机制进行动态管理。
Prometheus 能够直接把 API Server 作为服务发现系统使用,进而动态发现和监控集群中的所有可被监控的对象。


Prometheus 官网地址:https://prometheus.io

Prometheus github 地址:https://github.com/prometheus

存储引擎-TSDB

TSDB 作为 Prometheus 的存储引擎完美契合了监控数据的应用场景
●存储的数据量级十分庞大
●大部分时间都是写入操作
●写入操作几乎是顺序添加,大多数时候数据都以时间排序
●很少更新数据,大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库
●删除操作一般为区块删除,选定开始的历史时间并指定后续的区块。很少单独删除某个时间或者分开的随机时间的数据
●基本数据大,一般超过内存大小。一般选取的只是其一小部分且没有规律,缓存几乎不起任何作用
●读操作是十分典型的升序或者降序的顺序读
高并发的读操作十分常见


Prometheus 的特点:

●多维数据模型:由度量名称和键值对标识的时间序列数据
时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器指标数据、应用程序性能监控数据、网络数据等都是时序数据

内置时间序列数据库:Prometheus (本地存储,15天)

 外置的远端存储通常会用:InfluxDB(小中型)、OpenTSDB(分布式、大型)长期存储

promQL 一种灵活的查询语言,可以利用多维数据完成复杂查询

基于 HTTP 的 pull(拉取)方式采集时间序列数据

●同时支持 PushGateway 组件收集短期数据

●通过静态配置或服务发现发现目标

●支持作为数据源接入 Grafana    


二、Prometheus 的生态组件

Prometheus 负责时序型指标数据的采集及存储,但数据的分析、聚合及直观展示以及告警等功能并非由 Prometheus Server 所负责。
Prometheus 生态圈中包含了多个组件,其中部分组件可选:

1、Exporters

暴露器用于数据原生不支持Promethus监控系统 ,周期性采集的数据,转化为Promethus可识别的http格式 对外暴露给Promethus

常用的 Exporters:

●Node-Exporter:用于收集服务器节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。
指标详细介绍:https://github.com/prometheus/node_exporter

●mysqld-exporter/nginx-exporter

●Kube-State-Metrics:为 Prometheus 采集 K8S 资源数据的 exporter,通过监听 APIServer 收集 kubernetes 集群内资源对象的状态指标数据,例如 pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。
需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,所以可以使用 Prometheus 来抓取这些数据然后存储, 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas ?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?有多少 job 在运行中。

●cAdvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O 。

●blackbox-exporter:监控业务容器存活性。

2、Pushgateway

中转站。接收短期任务的数据,并临时存储。在任务结束时push推送数据给 Prometheus Server,然后 Prometheus server 统一从 Pushgateway中pull拉取数据。

可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后 Prometheus server 统一从 Pushgateway 拉取数据。

3、Prometheus server

功能:1、拉取 监控数据    2、存储 监控数据

Promethus Server 通过 http pu

<think>好的,我现在需要帮助用户解决如何配置PrometheusGrafana实现Web界面的数据可视化。根据用户提供的引用资料,我需要整理出具体的步骤,确保结构清晰,步骤正确。 首先,用户提到了使用EMQX、PrometheusGrafana的组合,但主要问题集中在PrometheusGrafana的配置上。所以,我应该先确定Prometheus的安装和配置,然后是如何集成Grafana。 根据引用[2]和[4],Prometheus需要监控的目标,比如主机,需要安装node_exporter来收集指标数据。用户可能需要先在被监控的主机上部署node_exporter,并确保Prometheus能够抓取这些数据。引用[5]中提到修改Prometheus的yml配置文件来添加目标,所以配置文件的设置是关键步骤。 接下来是安装Grafana,根据引用[3],Grafana需要安装并配置数据源连接到Prometheus。然后用户可以通过Grafana的界面导入仪表板模板或自定义图表。引用[1]和[3]都提到了Grafana可视化功能,所以需要指导用户如何创建仪表板。 可能还需要考虑PrometheusGrafana的服务启动和端口开放情况,比如Prometheus默认的9090端口,Grafana的3000端口,确保它们可以访问。此外,引用[2]提到的Prometheus的拉取机制,需要确认目标主机的exporter是否正确暴露端口,如9100。 用户的问题还涉及到Web界面展示,所以需要说明如何通过浏览器访问这些服务。可能还需要提到数据源的配置步骤,例如在Grafana中添加Prometheus的URL。 现在需要把这些步骤分点整理,确保逻辑顺序正确,先配置数据收集(Prometheus和exporter),再配置可视化Grafana)。同时,引用对应的引用资料来支持每个步骤,比如安装node_exporter参考引用[4],修改配置文件参考引用[5],安装Grafana参考引用[3]等。 需要注意的是,用户可能对某些术语不熟悉,比如exporter、数据源等,应使用简洁的语言解释,但用户的问题似乎更关注配置步骤,所以可能需要保持步骤的实操性,不过分深入理论。 最后,确保回答中的LaTeX格式正确,但用户的问题中没有数学公式,可能不需要使用。但根据系统级指令,如果有变量或代码块,需要用相应的格式。代码块部分比如配置文件的修改需要用代码块展示,可能需要用Markdown格式,但用户提供的示例中代码块使用三个反引号,所以需要遵循。 总结步骤: 1. 部署和配置Prometheus - 安装Prometheus - 配置监控目标(如node_exporter) - 修改prometheus.yml添加job - 启动服务并验证 2. 部署和配置Grafana - 安装Grafana - 启动服务并访问Web界面 - 添加Prometheus数据源 - 创建仪表板或导入模板 3. 验证可视化 - 在Grafana中创建图表 - 查看数据展示 同时,相关问题部分需要生成与主题相关的问题,比如优化监控、告警配置、其他数据源集成等。</think>### 分步配置说明 #### 1. 部署Prometheus并配置数据采集 **步骤1.1:安装Prometheus** - 从[Prometheus官网](https://prometheus.io/download/)下载并解压安装包。 - 启动Prometheus服务(默认端口`9090`),验证是否成功访问:`http://<Prometheus服务器IP>:9090`[^2][^3]。 **步骤1.2:配置监控目标(以主机监控为例)** - 在被监控主机上部署`node_exporter`(用于采集CPU、内存、磁盘等指标): ```bash wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-*.tar.gz cd node_exporter-* && ./node_exporter ``` `node_exporter`默认暴露端口`9100`[^4]。 **步骤1.3:修改Prometheus配置文件** - 编辑`prometheus.yml`,添加监控目标: ```yaml scrape_configs: - job_name: 'node' static_configs: - targets: ['<主机IP>:9100'] # 被监控主机的node_exporter地址 ``` - 重启Prometheus服务使配置生效[^5]。 --- #### 2. 部署Grafana并配置数据源 **步骤2.1:安装Grafana** - 根据系统环境选择安装方式(以CentOS为例): ```bash sudo yum install -y https://dl.grafana.com/oss/release/grafana-9.0.0-1.x86_64.rpm systemctl start grafana-server ``` Grafana默认端口为`3000`,访问`http://<Grafana服务器IP>:3000`,初始账号密码为`admin/admin`。 **步骤2.2:添加Prometheus数据源** - 登录Grafana后,依次进入 **Configuration > Data Sources > Add data source**。 - 选择 **Prometheus**,填写URL(如`http://<Prometheus服务器IP>:9090`),点击 **Save & Test** 验证连接[^1]。 --- #### 3. 创建可视化仪表板 **步骤3.1:导入预置仪表板模板** - 访问[Grafana官方仪表板库](https://grafana.com/grafana/dashboards),搜索“Node Exporter Full”(ID:1860)。 - 在Grafana中选择 **Create > Import**,输入模板ID,选择数据源为Prometheus,即可自动生成主机监控仪表板[^1]。 **步骤3.2:手动创建图表(可选)** 1. 进入 **Create Dashboard > Add new panel**。 2. 在查询框中输入PromQL表达式(如CPU使用率:`100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)`)。 3. 设置图表类型(如折线图、仪表盘),调整样式后保存[^3]。 --- #### 4. 验证与访问 - 在Grafana仪表板中查看实时数据,例如: - CPU使用率、内存占用、磁盘IO等指标[^4]。 - 通过Web界面自定义时间范围和图表布局。 --- ### 流程图 ```plaintext 部署node_exporter → 配置Prometheus抓取数据 → 启动Grafana并连接数据源 → 创建/导入仪表板 → Web界面展示 ``` ### 注意事项 - **防火墙**:确保Prometheus(9090)、Grafana(3000)、node_exporter(9100)端口开放。 - **数据持久化**:Prometheus默认存储数据15天,长期存储需配置远程存储(如Thanos)。 - **告警配置**:Grafana支持设置阈值告警,或通过Prometheus Alertmanager实现[^2][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值