在当今云原生的时代,监控系统对于保障系统的稳定运行至关重要。Prometheus 作为一款开源的监控和警报工具包,由 SoundCloud 开发,后来成为了 CNCF(云原生计算基金会)的毕业项目,和 Kubernetes 一样,是云原生领域的重要组件。
Prometheus 具有以下显著特点:
Prometheus 适用于各种场景,特别是在云原生环境中,如 Kubernetes 集群的监控。它可以监控服务器的硬件指标(如 CPU、内存、磁盘使用率等)、应用程序的性能指标(如请求响应时间、吞吐量等),帮助运维人员及时发现和解决问题。
在安装 Prometheus 之前,我们需要准备一个合适的环境。这里以 Linux 系统为例,假设我们使用的是 CentOS 7 系统。
首先,我们需要从 Prometheus 的官方网站(https://prometheus.io/download/)下载最新版本的 Prometheus。在终端中执行以下命令:
wget https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz
注释:这行命令使用 wget
工具从 GitHub 上下载 Prometheus 的压缩包,版本为 2.41.0,适用于 Linux 64 位系统。
下载完成后,解压压缩包:
tar -zxvf prometheus-2.41.0.linux-amd64.tar.gz
注释:tar
是 Linux 中常用的压缩和解压缩工具,-zxvf
是参数组合,-z
表示处理 gzip 压缩文件,-x
表示解压,-v
表示显示详细信息,-f
后面跟要处理的文件。
进入解压后的目录:
cd prometheus-2.41.0.linux-amd64
Prometheus 的配置文件是 prometheus.yml
,我们可以使用文本编辑器打开它进行配置。以下是一个简单的配置示例:
global:
scrape_interval: 15s # 每 15 秒采集一次数据
evaluation_interval: 15s # 每 15 秒评估一次告警规则
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090'] # 采集 Prometheus 自身的指标
注释
global
部分定义了全局的配置,如数据采集间隔和告警规则评估间隔。scrape_configs
部分定义了数据采集的配置,job_name
是采集任务的名称,static_configs
中的 targets
是要采集指标的目标地址。在终端中执行以下命令启动 Prometheus:
./prometheus --config.file=prometheus.yml
注释:./prometheus
表示执行当前目录下的 prometheus
可执行文件,--config.file=prometheus.yml
指定使用 prometheus.yml
作为配置文件。
启动成功后,我们可以在浏览器中访问 http://localhost:9090
来查看 Prometheus 的 Web 界面。
Exporter 是 Prometheus 生态系统中的重要组成部分,它负责收集特定系统或服务的指标数据,并将其转换为 Prometheus 可以理解的格式。不同的 Exporter 用于收集不同类型的指标,例如 Node Exporter 用于收集服务器的硬件指标,MySQL Exporter 用于收集 MySQL 数据库的指标。
Node Exporter 是一个常用的 Exporter,用于收集 Linux 服务器的硬件指标。我们可以从官方网站(Download | Prometheus)下载 Node Exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
注释:这行命令使用 wget
工具从 GitHub 上下载 Node Exporter 的压缩包,版本为 1.4.0,适用于 Linux 64 位系统。
解压压缩包:
tar -zxvf node_exporter-1.4.0.linux-amd64.tar.gz
进入解压后的目录并启动 Node Exporter:
cd node_exporter-1.4.0.linux-amd64
./node_exporter
注释:./node_exporter
表示执行当前目录下的 node_exporter
可执行文件,启动 Node Exporter 服务。
修改 prometheus.yml
配置文件,添加 Node Exporter 的采集任务:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # Node Exporter 默认监听端口为 9100
注释:新增的 job_name
为 node_exporter
的采集任务,targets
指定了 Node Exporter 的地址和端口。
重新启动 Prometheus 使配置生效。
在浏览器中访问 http://localhost:9090
,我们可以看到 Prometheus 的 Web 界面。界面主要分为几个部分:
在 Graph
页面的查询框中输入 PromQL 查询语句,例如查询 Node Exporter 收集的 CPU 使用率指标:
node_cpu_seconds_total{mode="idle"}
注释:node_cpu_seconds_total
是 Node Exporter 收集的 CPU 时间指标,{mode="idle"}
是标签过滤条件,表示只查询空闲模式下的 CPU 时间。
输入查询语句后,点击 Execute
按钮,即可在下方看到查询结果,并可以选择以图表或表格的形式展示。
其中有Prometheus 的 Web 界面,包括查询框、查询结果展示区域等。