国外网站后台模板下载,推广是什么意思,做网站跳转怎么收费,如何制作自己的网址链接官网#xff1a;https://prometheus.io
Prometheus 是什么 Prometheus 是一个开源的系统监控和报警工具#xff0c;专注于记录和存储时间序列数据#xff08;time-series data#xff09;。它最初由 SoundCloud 开发#xff0c;并已成为 CNCF#xff08;云原生计算基金会…官网https://prometheus.io
Prometheus 是什么 Prometheus 是一个开源的系统监控和报警工具专注于记录和存储时间序列数据time-series data。它最初由 SoundCloud 开发并已成为 CNCF云原生计算基金会 的一个顶级项目。Prometheus 被广泛用于监控各种服务、应用程序和基础设施的性能和健康状况。 Prometheus 的特点 时间序列数据存储 Prometheus 以时间序列的形式存储所有数据即数据点根据时间顺序记录。每个时间序列由一组唯一标识的标签labels标识可以帮助灵活地查询和筛选数据。 多维度数据模型 使用标签来区分不同的数据点提供多维度的数据模型。这使得用户可以基于不同的维度例如主机名、服务名称、请求路径等来聚合和分析数据。 拉取模式Pull Prometheus 通过 HTTP 定期拉取scrape监控目标所暴露的指标数据。这种方式与传统的推送模式不同有助于 Prometheus 控制对监控目标的访问和数据采集。 PromQL 查询语言 Prometheus 提供了强大的查询语言 PromQL用于实时查询和分析时间序列数据。PromQL 支持聚合、过滤、计算和可视化数据是 Prometheus 的核心组件之一。 易于集成 Prometheus 提供了许多现成的Exporter用于集成和监控常见的应用程序、数据库、操作系统等如 MySQL、Redis、Node Exporter 等。你还可以编写自定义的 Exporter 或直接在应用程序中集成 Prometheus 客户端库暴露自定义的应用程序指标。 Alertmanager 报警管理 Prometheus 配备了一个独立的组件 Alertmanager用于处理报警。它支持配置报警规则当监控的数据满足特定条件时自动触发报警并可以通过邮件、Slack、PagerDuty、钉钉机器人、企业微信机器人 等渠道发送通知。 自包含的存储 Prometheus 使用自己的本地存储来保存采集到的监控数据并为这些数据提供高效的压缩和存储机制。虽然它也支持通过远程存储系统进行数据的持久化。 云原生和容器支持 Prometheus 与容器化环境和微服务架构非常契合特别是在 Kubernetes 生态系统中Prometheus 已成为首选的监控解决方案之一。 Prometheus 的组件 1. Prometheus Server 核心组件负责数据采集、存储和查询。主要任务是定期从被监控的目标中拉取scrape指标数据并将这些数据存储为时间序列。支持 PromQL 查询语言用户可以使用 PromQL 进行复杂的数据查询和分析。 2. Exporters Exporters 是 Prometheus 生态中用于暴露指标数据的组件。各种 Exporter 将系统、服务或应用的内部状态转换为 Prometheus 格式的指标数据供 Prometheus server 拉取。常见的 Exporters Node Exporter监控操作系统级别的指标CPU、内存、磁盘、网络等。MySQL Exporter用于暴露 MySQL 数据库的性能指标。Redis Exporter暴露 Redis 的运行状况。Blackbox Exporter用于监控服务的可达性通过 HTTP、DNS 等协议进行探测。如果没有现成的 Exporter开发者可以通过客户端库来编写自定义 Exporter。 3. Pushgateway Pushgateway 是 Prometheus 的辅助组件用于那些无法被 Prometheus 定期拉取的短生命周期任务如批处理任务、临时作业上传指标数据。这些任务将指标数据推送到 PushgatewayPrometheus 再从 Pushgateway 拉取这些数据。 4. Alertmanager Alertmanager 是 Prometheus 的报警管理组件负责处理 Prometheus 服务器生成的报警。它可以根据报警规则处理报警事件并将报警通知通过邮件、Slack、PagerDuty、Webhook、钉钉机器人、企业微信机器人 等发送给相关人员或系统。支持报警的分组、抑制和去重以减少不必要的报警。 5. Prometheus Client Libraries Prometheus 提供多种语言的客户端库用于帮助开发者将自定义应用程序的内部状态暴露为指标数据。主要的客户端库支持以下语言 Goprometheus/client_golangJava / Scalaprometheus/client_javaPythonprometheus/client_pythonRubyprometheus/client_ruby这些库帮助开发者定义、注册和暴露应用程序的自定义指标。 6. Service Discovery Prometheus 提供了服务发现机制用于自动发现和监控动态环境中的目标如 Kubernetes 集群中的容器、服务、Pods 等。支持多种服务发现机制如静态配置、Kubernetes、Consul、EC2、GCE、DNS 等自动更新监控目标列表无需手动配置。 7. PromQL (Prometheus Query Language) PromQL 是 Prometheus 用来查询和分析时间序列数据的语言。支持过滤、聚合、计算和转换时间序列数据用于生成复杂的查询结果和报警规则。PromQL 是 Prometheus 核心的查询工具用户可以根据不同维度灵活地分析指标数据。 8. Storage存储 Prometheus 提供内置的时间序列数据库用于高效存储监控数据。本地存储主要用于短期存储但 Prometheus 也支持远程存储接口可以将数据发送到外部存储系统如 Thanos、Cortex 或其他分布式存储进行长期保存。 9. Grafana可视化工具非 Prometheus 的内置组件但常与 Prometheus 搭配使用 虽然 Grafana 不是 Prometheus 的核心组件但它通常与 Prometheus 集成用于可视化监控数据。Grafana 支持通过 PromQL 从 Prometheus 中查询数据并以丰富的图表和仪表盘形式展示出来。 10. Remote Storage Integrations Prometheus 支持将数据通过远程存储接口发送到其他存储后端以便进行长期存储和高可用性管理。常见的远程存储系统包括 Thanos 和 Cortex它们允许对 Prometheus 数据进行扩展、持久化和查询。 11. Prometheus Rule Files报警和记录规则 Prometheus 支持通过规则文件定义报警和记录规则。报警规则允许用户基于 PromQL 进行指标分析并生成报警条件。记录规则则可以预先计算某些复杂的查询以减少每次查询的计算量提升性能。 Prometheus 的指标
什么是 Prometheus 指标 指标Metric 是用来记录和表示监控数据的基本单位。它们是 Prometheus 数据模型的核心组成部分用于存储和检索有关系统和应用程序性能的信息。每个指标通常由一组数据点组成这些数据点按照时间序列进行存储和管理。 指标的组成 名称Name 每个指标都有一个唯一的名称用于标识和引用。例如http_requests_total、cpu_usage_seconds_total。 类型Type 指标有不同的类型每种类型用于记录不同类型的数据。主要类型包括 Counter、Gauge、Histogram、Summary 和 Untyped。 标签Labels 标签是附加到指标上的键值对用于提供额外的上下文信息。标签允许对同一指标的不同实例进行分类和过滤。例如methodGET、status200。标签可以用来区分和聚合不同的度量数据。 值Value 指标的实际数据值。例如一个计数器的值可能是 1500表示从启动到当前时间已处理的 HTTP 请求总数。 时间戳Timestamp 每个数据点都有一个时间戳用于记录该数据点的生成时间。在 Prometheus 中时间戳是由 Prometheus 服务器在抓取数据时自动添加的。 指标的类型 Counter计数器 定义表示累积的、单调递增的值。计数器只能增加不能减少。用途用于跟踪事件发生的总次数如 HTTP 请求的总数、处理的任务数量、错误发生的次数。 Gauge仪表 定义表示一个随时间变化的值可以增加或减少。适合表示瞬时的状态。用途用于跟踪瞬时值如当前温度、内存使用量、当前队列长度等。 Histogram直方图/柱状图 定义用于记录一组值的分布。它可以将数据划分为多个桶buckets每个桶记录符合该范围的事件数量。用途用于跟踪数据的分布情况和计算聚合统计量如请求响应时间、请求大小等。 Summary摘要 定义用于记录一组值的分布同时提供总计数和总和。它类似于直方图但直接提供了数据的总和和平均值百分比提供。用途用于跟踪数据分布并计算聚合统计量如请求响应时间的平均值、总时间等。 Untyped无类型 定义表示没有特定类型的指标。通常用于在没有明确类型的情况下暴露数据。用途通常用于特定场景下的临时指标或用于与 Prometheus 无直接关联的系统。 指标示例
# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{methodGET, status200} 1500 1825690710
http_requests_total{methodPOST, status404} 200 1824472505# HELP 指标的一般注释信息帮助用户理解该指标的用途# TYPE 指标的类型注释信息告诉 Prometheus 如何处理该指标样本 说明 在这个1825690710时间戳到达时共有 1500 次 GET 请求返回了状态码 200。在这个1824472505时间戳到达时共有 200 次 POST 请求返回了状态码 404。 Prometheus 的使用场景 应用程序监控监控应用程序的性能指标如请求量、错误率、响应时间等。基础设施监控监控服务器的 CPU、内存、磁盘和网络等资源使用情况。容器和编排系统监控监控 Docker 容器和 Kubernetes 集群的运行状况。数据库监控跟踪数据库的性能如慢查询、连接数等。 Prometheus 的安装
方式一压缩包方式安装
前置安装 Golang环境安装教程https://blog.csdn.net/a1053765496/article/details/129362520
下载 Prometheushttps://prometheus.io/download/ 把下载的 prometheus-2.54.1.linux-amd64.tar.gz 安装包上传到 linux 服务器的 /usr/local 目录下
# 解压
tar -zxvf prometheus-2.54.1.linux-amd64.tar.gz# 解压后的文件夹重命名
mv prometheus-2.54.1.linux-amd64 prometheus 启动 Prometheus
cd /usr/local/prometheus
./prometheus --config.fileprometheus.yml# 守护进程启动
nohup ./prometheus --config.fileprometheus.yml prometheus.log 21 如果服务正常运行可以通过浏览器访问 Prometheus 的 Web UI默认在端口 9090。在浏览器中访问http://localhost:9090 // 记得防火墙放开 9090 端口 停止 Prometheus
ps aux | grep prometheus
# 或
pgrep prometheuskill -9 PID方式二Docker 方式安装
拉取 Prometheus 的官方 Docker 镜像
docker pull prom/prometheus创建一个目录用于存储 Prometheus 数据
# 创建目录
mkdir -p /opt/prometheus/data# 更改目录的用户和组
chown -R 65534:65534 /opt/prometheus/data/创建 Prometheus 的配置文件 prometheus.yml文件内容如下
vim /opt/prometheus/prometheus.yml
# 全局配置
global:scrape_interval: 15sevaluation_interval: 15s# 监控节点配置
scrape_configs:- job_name: prometheusstatic_configs:- targets: [localhost:9090]
启动 Prometheus 容器
docker run -d \--name prometheus \-p 9090:9090 \-v /opt/prometheus/data:/prometheus \-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \--user 65534:65534 \prom/prometheus \--config.file/etc/prometheus/prometheus.yml \--storage.tsdb.path/prometheus
查看 Docker 启动容器日志
docker logs prometheus
开放防火墙端口 (和云服务安全组端口)
firewall-cmd --zonepublic --add-port9090/tcp --permanent
firewall-cmd --reload
firewall-cmd --zonepublic --list-ports
如果服务正常运行可以通过浏览器访问 Prometheus 的 Web UI。在浏览器中访问http://localhost:9090 如果页面不能正常访问请重启下防火墙
systemctl restart firewalld
停止 Prometheus 容器
docker stop prometheusPrometheus 的 Web UI 面板介绍 Prometheus 目录结构介绍 console_libraries录用于存储 Prometheus 的控制台模板使用的库文件consoles目录是 Prometheus 中存放控制台页面模板的目录用于通过 Web 界面展示监控数据。data用于存储Prometheus的磁盘持久化数据。LICENSEPrometheus的许可证文件。NOTICE版权声明文件。prometheusPrometheus 主程序的二进制文件负责抓取指标、存储时间序列数据、提供查询接口等核心功能。promtoolPrometheus 的工具程序主要用于验证配置文件和规则文件是否正确。prometheus.yml配置文件定义抓取目标scrape_configs、告警规则alerting以及全局设置global 等。这个文件是 Prometheus 的核心配置所有的监控目标、数据拉取频率、告警规则都在这里定义。 Prometheus 配置信息介绍
prometheus.yml 文件配置的介绍
# 全局配置
global:scrape_interval: 15s # 抓取间隔默认是1分钟每 scrape_interval 从 targets 抓取一次指标scrape_timeout: 10s # 抓取超时时间默认为 scrape_interval 的值scrape_timeout的值要比scrape_interval小evaluation_interval: 15s # 规则评估的频率如告警规则、记录规则默认是1分钟external_labels: # 为所有时间序列数据附加的标签通常用于多集群或高可用架构。region: us-eastprometheus: prometheus-main# 告警配置
alerting:alertmanagers:- follow_redirects: true # 是否 HTTP 重定向enable_http2: true # 是否启用 HTTP/2 协议以提高通信性能。scheme: http # 定义与 Alertmanager 通信时使用的协议这里是 http也可以是 https。timeout: 10s # 定义 Prometheus 连接到 Alertmanager 的超时时间10 秒表示 Prometheus 在 10 秒内无法连接时超时。api_version: v2 # 设置使用的 Alertmanager API 版本v2 是最新的稳定版本。static_configs: # 定义 Alertmanager 实例的静态目标- targets: [localhost:9093] # Alertmanager 的地址IP 和端口。# 规则配置并根据全局的evaluation_interval定期对它们进行评估。
rule_files:- rules.yml # 定义 Prometheus 规则文件的路径# Prometheus 最重要的配置用于定义 Prometheus 从哪些地方抓取指标以及如何抓取。
scrape_configs:- job_name: example # 抓取任务的名称。一个 job 可以包含多个抓取目标。可以随意命名honor_timestamps: true # 是否启用尊重目标提供的时间戳。如果为 truePrometheus 将使用目标提供的时间戳而不是抓取时间的时间戳。track_timestamps_staleness: false # 如果设置为 truePrometheus 将为没有更新的时间序列创建“陈旧”标记。这里设置为 false表示不会主动跟踪陈旧时间序列scrape_interval: 10s # 此抓取目标的抓取间隔覆盖全局设置scrape_timeout: 5s # 此目标的抓取超时时间覆盖全局设置metrics_path: /actuator/prometheus # 指定指标路径scheme: http # 指定抓取数据使用的协议这里是 http如果目标使用 https需要配置为 httpsenable_compression: true # 启用数据抓取的压缩以减少网络传输的数据量follow_redirects: true # 允许 Prometheus 在抓取过程中跟随 HTTP 重定向enable_http2: true # 启用 HTTP/2 协议这通常可以提高抓取性能static_configs: # 静态抓取目标配置手动定义要抓取的目标IP 或主机名及端口- targets: [localhost:9090] # 要抓取的目标列表静态配置labels: # 为该抓取目标添加的额外标签这些标签将附加到抓取的数据中。group: production- job_name: kubernetes # k8s 服务发现kubernetes_sd_configs: # 自动发现 Kubernetes 的服务或 pod- role: pod # 定义要发现的资源类型例如 pod 或 service# 将数据远程写入其他存储系统
remote_write:- url: http://remote-prometheus:9090/api/v1/write# 从其他存储系统中读取数据。
remote_read:- url: http://remote-prometheus:9090/api/v1/read# 抓取目标数据时对标签进行动态修改的过程。可以用于过滤、修改、删除或添加标签。
relabel_configs:- source_labels: [__address__] # 从哪些标签中提取值进行 relabel。regex: (.*):9090 # 正则表达式用于匹配和提取标签值。target_label: instance # 重命名或修改后的标签名。replacement: $1 # 匹配后用来替换的内容。# 和 relabel_configs 类似但它应用于抓取数据后的时间序列上而非抓取目标本身
metric_relabel_configs:- source_labels: [__name__]regex: http_requests_totalaction: drop # 定义如何处理匹配的指标。drop 表示删除匹配的指标keep 表示保留。# 数据存储配置
storage.tsdb:path: /prometheus # 本地存储路径retention_time: 15d # 数据保留时间wal_compression: true # 启用 WALWrite-Ahead Log压缩减小存储占用# HTTP 服务配置包含 Web 界面和 API。
web:listen_address: :9090 # Prometheus Web 服务监听的地址和端口external_url: http://my-prometheus.com/ # 对外提供访问的 URL# 允许你配置 Prometheus 的运行时行为控制内存管理和其他与性能相关的参数
runtime:gogc: 75 # 设置 GO语言的垃圾收集器(gc)触发频率75 表示内存使用量达到75%时执行垃圾回收。 Prometheus 监控 Linux 服务器 监控系统级指标包括 CPU 使用率、内存使用情况、磁盘使用情况、网络流量等。 方式一压缩包方式安装
需要监控哪台服务器就把 node_exporter 在那台服务器上安装并运行。
下载 node_exporterhttps://prometheus.io/download/ 把下载的 node_exporter-1.8.2.linux-amd64.tar.gz 安装包上传到 linux 服务器的 /usr/local 目录下
# 解压
tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz # 解压后的文件夹重命名
mv node_exporter-1.8.2.linux-amd64 node_exporter 启动 node_exporter
node_exporter 的默认端口是 9100
cd /usr/local/node_exporter
./node_exporter# 守护进程启动
nohup ./node_exporter node_exporter.log 21
访问 http://localhost:9100/metrics 可以查看 node_exporter 的指标 配置 Prometheus 抓取 node_exporter 的数据
在 prometheus.yml 配置文件中添加 node_exporter 作为抓取目标
scrape_configs:- job_name: node_exporterstatic_configs:- targets: [localhost:9100] # node_exporter服务所在的路径
重启 prometheus 服务
可以在 Targets 和 Service Discovery 目录下看到对 node_exporter 的监听 方式二Docker 方式安装
拉取 node_exporter 的官方 Docker 镜像
docker pull prom/node-exporter
启动 node_exporter 容器
docker run -d \--name node_exporter \-p 9100:9100 \--pidhost \-v /:/host:ro,rslave \prom/node-exporter \--path.rootfs/host
查看 Docker 启动容器日志
docker logs node_exporter
开放防火墙端口 (和云服务安全组端口)
firewall-cmd --zonepublic --add-port9100/tcp --permanent
firewall-cmd --reload
firewall-cmd --zonepublic --list-ports
如果服务正常运行可以通过浏览器访问 Prometheus 的 Web UI。在浏览器中访问http://localhost:9100/metrics 停止 node_exporter 容器
docker stop node_exporter 配置 Prometheus 抓取 node_exporter 的数据
(如果 node_exporter 和 Prometheus 使用同一台机器的 docker 部署的那么这里需要查看 node_exporter 容器的 ip。如果不是在同一台机器就直接使用另一台机器的物理ip地址即可。)
查看 Docker 运行使用的网络列表
docker network ls 查看 Docker 网络中运行的容器和ip地址容器默认在bridge网络中运行
docker network inspect bridge 在 prometheus.yml 配置文件中添加 node_exporter 作为抓取目标
scrape_configs:- job_name: node_exporterstatic_configs:- targets: [172.17.0.4:9100] # 同一台Docker部署的话就是容器ip地址使用docker network inspect bridge查询。否则就是物理机器ip地址。
重启 prometheus 服务
可以在 Targets 和 Service Discovery 目录下看到对 node_exporter 的监听 Prometheus 监控 MySQL 数据库 监听并暴露 MySQL 数据库的各种性能指标如查询量、慢查询、连接数、表状态等。 mysqld_exporter 安装运行在哪台服务器上都行只要确保能连接上需要监控的mysql服务就行。
下载 mysqld_exporter https://prometheus.io/download/ 把下载的 mysqld_exporter-0.15.1.linux-amd64.tar.gz 安装包上传到 linux 服务器的 /usr/local 目录下
# 解压
tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz# 解压后重命名
mv mysqld_exporter-0.15.1.linux-amd64 mysqld_exporter配置 mysql mysqld_exporter 需要一个 MySQL 用户来访问数据库并获取相关的性能指标。您需要创建一个具有适当权限的 MySQL 用户。 登录mysql
mysql -u root -p创建一个新的用户如 mysqld_exporter并授予权限
# 账号mysqld_exporter
# 密码123456
# %表示用户可以从任何主机连接mysql服务如果只希望该用户从特定的 IP 地址连接例如 192.168.1.100请将 % 替换为特定的 IP 地址例如 mysqld_exporter192.168.1.100
CREATE USER mysqld_exporter% IDENTIFIED BY 123456;# 授予权限
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO mysqld_exporter%;# 刷新权限
FLUSH PRIVILEGES;
配置 .my.cnf在 mysqld_exporter 执行文件所在目录下新建 .my.cnf 文件内容如下
[client]
usermysqld_exporter
password123456 启动 mysqld_exporter
cd /usr/local/mysqld_exporter
./mysqld_exporter# 守护进程启动
nohup ./mysqld_exporter mysqld_exporter.log 21
访问 http://localhost:9104/metrics 可以查看 mysqld_exporter 的指标 配置 Prometheus 抓取 mysqld_exporter 的数据
在 prometheus.yml 配置文件中添加 mysqld_exporter 作为抓取目标
scrape_configs:- job_name: mysqld_exporterstatic_configs:- targets: [localhost:9104] # mysqld_exporter服务所在的路径
重启 prometheus 服务
可以在 Targets 和 Service Discovery 目录下看到对 mysqld_exporter 的监听 Prometheus 监控 Redis 数据库 监控 Redis 数据库的性能和状态指标包括内存使用、连接数、命令执行速率、缓存命中率等帮助用户了解 Redis 实例的运行状况。 启动 redis_exporter
redis_exporter 由于不是官方提供的使用命令行的方式启动一堆问题这里使用 docker 的方式启动 redis_exporter。
拉取 redis_exporter 的 docker 镜像
docker pull oliver006/redis_exporterdocker 运行 redis_exporter
redis_exporter 的默认端口是 9121
# redis在本地主机
docker run -d --name redis_exporter --networkhost oliver006/redis_exporter --redis.addrredis://localhost:6379 --redis.passwordyourpassword# redis在远程服务器
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter --redis.addrredis://192.168.1.100:6379 --redis.passwordyourpassword
访问 http://localhost:9121/metrics 可以查看 redis_exporter 的指标 配置 Prometheus 抓取 redis_exporter 的数据
在 prometheus.yml 配置文件中添加 redis_exporter 作为抓取目标
scrape_configs:- job_name: redis_exporterstatic_configs:- targets: [localhost:9121] # redis_exporter 服务所在的路径
重启 prometheus 服务
可以在 Targets 和 Service Discovery 目录下看到对 redis_exporter 的监听报红的表示停止的exporter服务 Prometheus 监控 SpringBoot 项目
SpringBoot 配置 Prometheus
在 pom.xml 中添加 Micrometer Prometheus 和 Spring Boot Actuator 的依赖
dependencygroupIdio.micrometer/groupIdartifactIdmicrometer-registry-prometheus/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId
/dependency
application.yml 中启用 Actuator 端点暴露 /actuator/prometheus 指标。这样 SpringBoot 服务会在 127.0.0.1:8080/actuator/prometheus 暴露 Prometheus 格式的监控指标。
# 用于指定哪些管理端点可以通过 HTTP 公开。
management:endpoints:web:exposure:# prometheus 端点对外暴露include: prometheusendpoint:prometheus:# prometheus 端点启用enabled: true
启动 SpringBoot 项目
访问 http://localhost:8080/actuator 访问http://localhost:8080/actuator/prometheus 可以查看 SpringBoo 的指标 配置 Prometheus 抓取 SpringBoot 的指标
在 prometheus.yml 配置文件中添加 SpringBoot 作为抓取目标
scrape_configs:- job_name: springboot-appmetrics_path: /actuator/prometheus # 指标的路径static_configs:- targets: [localhost:8080] # SpringBoot 服务地址ip:端口
重启 prometheus 服务
可以在 Targets 和 Service Discovery 目录下看到对 SpringBoot 服务的监听报红的表示停止的exporter服务