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架构
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
下载解压
# 下载
# wget https://github.com/prometheus/prometheus/releases/download/v3.3.0/prometheus-3.3.0.linux-386.tar.gz
# 解压
# tar -xvf prometheus-3.3.0.linux-386.tar.gz
# 创建软链接
# ln -s /root/prometheus-3.3.0.linux-386 /root/prometheus
# ll /root/prometheus
lrwxrwxrwx 1 root root 32 Jun2 16:06 /root/prometheus -> /root/prometheus-3.3.0.linux-386/配置开机自启动
# vim /etc/systemd/system/prometheus-server.service
Description=huangSir LinuxPrometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
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
WantedBy=multi-user.target启动Prometheus
# 创建数据存储目录
# mkdir -p /data/prometheus
# 加载systemd文件
# systemctl daemon-reload
# 启动
# systemctl start prometheus-server
# 检查状态
# systemctl status prometheus-server
● prometheus-server.service - huangSir LinuxPrometheus 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: Started huangSir LinuxPrometheus Server.
Jun 02 16:23:40 lb prometheus: {"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/
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]