找回密码
 立即注册
首页 业界区 安全 Prometheus介绍及二进制安装

Prometheus介绍及二进制安装

姚梨素 4 天前
概述

官网: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架构

1.png

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

下载解压
  1. # 下载
  2. [root@lb ~]# wget https://github.com/prometheus/prometheus/releases/download/v3.3.0/prometheus-3.3.0.linux-386.tar.gz
  3. # 解压
  4. [root@lb ~]# tar -xvf prometheus-3.3.0.linux-386.tar.gz
  5. # 创建软链接
  6. [root@lb ~]# ln -s /root/prometheus-3.3.0.linux-386 /root/prometheus
  7. [root@lb ~]# ll /root/prometheus
  8. lrwxrwxrwx 1 root root 32 Jun  2 16:06 /root/prometheus -> /root/prometheus-3.3.0.linux-386/
复制代码
配置开机自启动
  1. [root@lb ~]# vim /etc/systemd/system/prometheus-server.service
  2. [Unit]
  3. Description=huangSir Linux  Prometheus Server
  4. Documentation=https://prometheus.io/docs/introduction/overview/
  5. After=network.target
  6. [Service]
  7. Restart=on-failure
  8. ExecStart=/root/prometheus/prometheus \
  9.    # 指定配置文件
  10.    --config.file=/root/prometheus/prometheus.yml \
  11.    # 在指定数据的存储目录
  12.    --storage.tsdb.path=/data/prometheus \
  13.    # 日志级别,默认为info,支持debug, info, warn, error
  14.    --log.level=warn \
  15.    # 日志格式,这里指定为json,支持logfmt, json,默认值logfmt。
  16.    --log.format=json \
  17.    # 数据存储周期,支持y, w, d, h, m, s, ms。这里表示为60天
  18.    --storage.tsdb.retention.time=60d \
  19.    # 指定监听的主机和端口,默认是9090端口。
  20.    --web.listen-address="0.0.0.0:9090" \
  21.    # 指定Prometheus最大的连接数量,默认是512。
  22.    --web.max-connections=8192 \
  23.    # 能够热加载配置文件。
  24.    --web.enable-lifecycle
  25. ExecReload=/bin/kill -HUP $MAINPID
  26. LimitNOFILE=65535
  27. [Install]
  28. WantedBy=multi-user.target
复制代码
启动Prometheus
  1. # 创建数据存储目录
  2. [root@lb ~]# mkdir -p /data/prometheus
  3. # 加载systemd文件
  4. [root@lb ~]# systemctl daemon-reload
  5. # 启动
  6. [root@lb ~]# systemctl start prometheus-server
  7. # 检查状态
  8. [root@lb ~/prometheus]# systemctl status prometheus-server
  9. ● prometheus-server.service - huangSir Linux  Prometheus Server
  10.      Loaded: loaded (/etc/systemd/system/prometheus-server.service; disabled; vendor preset: enabled)
  11.      Active: active (running) since Mon 2025-06-02 16:23:40 CST; 3s ago
  12.        Docs: https://prometheus.io/docs/introduction/overview/
  13.    Main PID: 605022 (prometheus)
  14.       Tasks: 5 (limit: 973)
  15.      Memory: 63.8M
  16.         CPU: 125ms
  17.      CGroup: /system.slice/prometheus-server.service
  18.              └─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>
  19. Jun 02 16:23:40 lb systemd[1]: Started huangSir Linux  Prometheus Server.
  20. 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/
2.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册