Prometheus介绍及二进制安装

概述

官网:https://prometheus.io/
GitHub地址:https://github.com/prometheus/prometheus

Prometheus 是由 Cloud Native Computing Foundation(CNCF) 孵化的开源监控与告警系统,专注于实时数据采集、存储和查询,广泛应用于云原生、容器化(如 Kubernetes)和微服务架构中。它以灵活的数据模型、强大的查询语言和生态扩展性著称,是现代 DevOps 和 SRE(站点可靠性工程)的核心工具之一。

应用场景

  • 基础设施监控:监控服务器 / 容器的 CPU、内存、磁盘、网络等指标。
  • 应用性能监控(APM):追踪微服务的请求延迟、吞吐量、错误率(如 HTTP 状态码)。
  • 云原生监控:与 Kubernetes 深度集成,监控 Pod、Service、集群资源利用率。
  • 业务指标监控:自定义业务指标(如订单量、用户活跃数),支持业务健康度分析。
  • 告警与故障排查:通过实时告警快速定位系统异常,结合历史数据追溯问题根源。

Prometheus架构

image

Prometheus server

Prometheus server 是 Prometheus服务器,用于抓取和存储时间序列数据。Prometheus server 由三个部分组成:Retrival,Storage,PromQL

  • Retrival:负责在活跃的target主机上抓取监控指标数据
  • Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)
  • PromQL:是Prometheus提供的查询语言模块。

Service Discovery(服务发现)

作用:负责自动发现需要监控的目标。Prometheus 支持多种服务发现机制,包括:

  • DNS:通过 DNS 记录来发现目标服务的地址。
  • Kubernetes:与 Kubernetes 集成,自动发现 Kubernetes 集群内的 Pod、Service 等资源作为监控目标。
  • Consul:借助 Consul 服务发现工具来查找目标服务。
  • Custom integration(自定义集成):允许用户根据自身需求实现自定义的服务发现逻辑。

流程:Service Discovery 模块找到目标后,将信息提供给 Prometheus Server,以便 Prometheus Server 能去相应目标拉取指标数据。

Jobs / Exporters(作业 / 数据采集器)

Exporters(数据采集器):是 Prometheus 与各种监控目标之间的桥梁。它们负责将不同系统和服务(如操作系统、数据库、中间件等)的指标数据转换为 Prometheus 可识别的格式。常见的 Exporters 有:

  • node_exporter:用于采集服务器节点(如 CPU、内存、磁盘、网络等)的基础指标。
  • mysql_exporter:专门采集 MySQL 数据库的相关指标,如连接数、查询耗时等。
  • redis_exporter:采集 Redis 缓存数据库的指标,像内存使用、请求频率等。

Jobs(作业):可以理解为一组相关的监控任务,每个 Job 可以包含一个或多个 Exporter 作为监控目标。Prometheus Server 会按照配置从这些 Jobs/Exporters 拉取指标数据。

Pushgateway

对于一些短生命周期的任务(Short - lived jobs),由于其存在时间短,Prometheus Server 可能来不及拉取指标数据它们就结束了。Pushgateway 允许这些短生命周期任务主动推送指标数据到 Pushgateway,然后 Prometheus Server 再从 Pushgateway 拉取指标,确保数据不丢失。

Alertmanager

Alertmanager 是一个独立的告警模块,从Prometheus server端接收到告警通知后,会进行去重、分组,并路由到相应的接收方,发出报警。

Alertmanager 负责处理 Prometheus Server 推送过来的告警信息。它可以对告警进行分组、抑制(避免重复告警)、沉默(在特定时间段内屏蔽告警)等操作,然后将处理后的告警通过多种渠道发送通知,如 PagerDuty、Email 等。

可视化组件

  • Web UI:Prometheus 自带的 Web 界面,用户可以在上面执行 PromQL 查询,查看简单的图表和监控数据。
  • Grafana:一款功能强大的开源可视化工具,支持将 Prometheus 作为数据源。用户可以通过 Grafana 定制丰富、美观的仪表盘,更直观地展示监控数据,便于分析和排查问题。
  • API clients:其他通过 Prometheus API 来获取数据并进行可视化或进一步处理的客户端工具。

二进制安装Prometheus

下载解压

# 下载
[root@lb ~]# wget https://github.com/prometheus/prometheus/releases/download/v3.3.0/prometheus-3.3.0.linux-386.tar.gz
# 解压
[root@lb ~]# tar -xvf prometheus-3.3.0.linux-386.tar.gz
# 创建软链接
[root@lb ~]# ln -s /root/prometheus-3.3.0.linux-386 /root/prometheus
[root@lb ~]# ll /root/prometheus
lrwxrwxrwx 1 root root 32 Jun  2 16:06 /root/prometheus -> /root/prometheus-3.3.0.linux-386/

配置开机自启动

[root@lb ~]# vim /etc/systemd/system/prometheus-server.service
[Unit]
Description=huangSir Linux  Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target

[Service]
Restart=on-failure
ExecStart=/root/prometheus/prometheus \
   # 指定配置文件
   --config.file=/root/prometheus/prometheus.yml \
   # 在指定数据的存储目录
   --storage.tsdb.path=/data/prometheus \
   # 日志级别,默认为info,支持debug, info, warn, error
   --log.level=warn \
   # 日志格式,这里指定为json,支持logfmt, json,默认值logfmt。
   --log.format=json \
   # 数据存储周期,支持y, w, d, h, m, s, ms。这里表示为60天
   --storage.tsdb.retention.time=60d \
   # 指定监听的主机和端口,默认是9090端口。
   --web.listen-address="0.0.0.0:9090" \
   # 指定Prometheus最大的连接数量,默认是512。
   --web.max-connections=8192 \
   # 能够热加载配置文件。
   --web.enable-lifecycle

ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

启动Prometheus

# 创建数据存储目录
[root@lb ~]# mkdir -p /data/prometheus

# 加载systemd文件
[root@lb ~]# systemctl daemon-reload
# 启动
[root@lb ~]# systemctl start prometheus-server
# 检查状态
[root@lb ~/prometheus]# systemctl status prometheus-server
● prometheus-server.service - huangSir Linux  Prometheus Server
     Loaded: loaded (/etc/systemd/system/prometheus-server.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2025-06-02 16:23:40 CST; 3s ago
       Docs: https://prometheus.io/docs/introduction/overview/
   Main PID: 605022 (prometheus)
      Tasks: 5 (limit: 973)
     Memory: 63.8M
        CPU: 125ms
     CGroup: /system.slice/prometheus-server.service
             └─605022 /root/prometheus/prometheus --config.file=/root/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --log.level=warn --log.format=json --storage.tsdb.retention.time=60d --we>

Jun 02 16:23:40 lb systemd[1]: Started huangSir Linux  Prometheus Server.
Jun 02 16:23:40 lb prometheus[605022]: {"time":"2025-06-02T08:23:40.635150017Z","level":"WARN","source":"main.go:689","msg":"This Prometheus binary has not been compiled for a 64-bit architecture. Due to vi>

访问Prometheus

http://10.0.0.10:9090/
image

posted @ 2025-06-02 16:33  huangSir-devops  阅读(304)  评论(0)    收藏  举报
作者:你的名字
出处:你的博客链接
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。