Prometheus 服务监控

目录

Prometheus 是什么

Prometheus 的特点

Prometheus 的组件

Prometheus 的指标

Prometheus 的使用场景

Prometheus 的安装

方式一:压缩包方式安装

方式二:Docker 方式安装

Prometheus 的 Web UI 面板介绍

Prometheus 目录结构介绍

Prometheus 配置信息介绍

Prometheus 监控 Linux 服务器

方式一:压缩包方式安装

方式二:Docker 方式安装

Prometheus 监控 MySQL 数据库

Prometheus 监控 Redis 数据库

Prometheus 监控 SpringBoot 项目


官网: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 定期拉取的短生命周期任务(如批处理任务、临时作业)上传指标数据。
  • 这些任务将指标数据推送到 Pushgateway,Prometheus 再从 Pushgateway 拉取这些数据。

4. Alertmanager

  • Alertmanager 是 Prometheus 的报警管理组件,负责处理 Prometheus 服务器生成的报警。
  • 它可以根据报警规则处理报警事件,并将报警通知通过邮件、Slack、PagerDuty、Webhook、钉钉机器人、企业微信机器人 等发送给相关人员或系统。
  • 支持报警的分组、抑制和去重,以减少不必要的报警。

5. Prometheus Client Libraries

  • Prometheus 提供多种语言的客户端库,用于帮助开发者将自定义应用程序的内部状态暴露为指标数据。
  • 主要的客户端库支持以下语言:
    • Goprometheus/client_golang
    • Java / Scalaprometheus/client_java
    • Pythonprometheus/client_python
    • Rubyprometheus/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 支持将数据通过远程存储接口发送到其他存储后端,以便进行长期存储高可用性管理。
  • 常见的远程存储系统包括 ThanosCortex,它们允许对 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)

  • 标签是附加到指标上的键值对,用于提供额外的上下文信息。标签允许对同一指标的不同实例进行分类和过滤。例如:method="GET"、status="200"。标签可以用来区分和聚合不同的度量数据。

值(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{method="GET", status="200"} 1500 1825690710
http_requests_total{method="POST", status="404"} 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

下载 Prometheus,https://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.file=prometheus.yml# 守护进程启动
nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &

如果服务正常运行,可以通过浏览器访问 Prometheus 的 Web UI,默认在端口 9090。在浏览器中访问:http://localhost:9090         // 记得防火墙放开 9090 端口

停止 Prometheus
ps aux | grep prometheus
# 或
pgrep prometheuskill -9 <PID>

方式二:Docker 方式安装

创建一个目录用于存储 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: "prometheus"static_configs:- targets: ["localhost:9090"]

拉取 Prometheus 的官方 Docker 镜像:

docker pull prom/prometheus
启动 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 --zone=public --add-port=9090/tcp --permanent   
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

如果服务正常运行,可以通过浏览器访问 Prometheus 的 Web UI。在浏览器中访问:http://localhost:9090

如果页面不能正常访问,请重启下防火墙

systemctl restart firewalld
停止 Prometheus 容器
docker stop prometheus

Prometheus 的 Web UI 面板介绍


Prometheus 目录结构介绍

  • console_libraries:录用于存储 Prometheus 的控制台模板使用的库文件
  • consoles:目录是 Prometheus 中存放控制台页面模板的目录,用于通过 Web 界面展示监控数据。
  • data:用于存储Prometheus的磁盘持久化数据。
  • LICENSE:Prometheus的许可证文件。
  • NOTICE:版权声明文件。
  • prometheus:Prometheus 主程序的二进制文件,负责抓取指标、存储时间序列数据、提供查询接口等核心功能。
  • promtool:Prometheus 的工具程序,主要用于验证配置文件和规则文件是否正确。
  • 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-east'prometheus: '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   # 是否启用尊重目标提供的时间戳。如果为 true,Prometheus 将使用目标提供的时间戳,而不是抓取时间的时间戳。track_timestamps_staleness: false  # 如果设置为 true,Prometheus 将为没有更新的时间序列创建“陈旧”标记。这里设置为 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_total'action: drop					# 定义如何处理匹配的指标。drop 表示删除匹配的指标,keep 表示保留。# 数据存储配置
storage.tsdb:path: "/prometheus"          # 本地存储路径retention_time: 15d          # 数据保留时间wal_compression: true        # 启用 WAL(Write-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 使用率、内存使用情况、磁盘使用情况、网络流量等。

Grafana 请查看:https://blog.csdn.net/a1053765496/article/details/142022760

方式一:压缩包方式安装

需要监控哪台服务器?就把 node_exporter 在那台服务器上安装并运行。

下载 node_exporter,https://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 2>&1 &

访问: http://localhost:9100/metrics     可以查看 node_exporter 的指标


配置 Prometheus 抓取 node_exporter 的数据

prometheus.yml 配置文件中添加 node_exporter 作为抓取目标:

scrape_configs:- job_name: 'node_exporter'static_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 \--pid="host" \-v "/:/host:ro,rslave" \prom/node-exporter \--path.rootfs=/host

查看 Docker 启动容器日志

docker logs node_exporter

开放防火墙端口 (和云服务安全组端口)

firewall-cmd --zone=public --add-port=9100/tcp --permanent   
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

如果服务正常运行,可以通过浏览器访问: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_exporter'static_configs:- targets: ['172.17.0.4:9100']    # 同一台Docker部署的话就是容器ip地址(使用docker network inspect bridge查询)。否则就是物理机器ip地址。

重启 prometheus 服务

可以在 Targets 和 Service Discovery 目录下看到对 node_exporter 的监听


Prometheus 监控 MySQL 数据库

监听并暴露 MySQL 数据库的各种性能指标,如查询量、慢查询、连接数、表状态等。

Grafana 请查看:https://blog.csdn.net/a1053765496/article/details/142022760

方式一:压缩包方式安装

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_exporter'@'192.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]
user=mysqld_exporter
password=123456

启动 mysqld_exporter
cd /usr/local/mysqld_exporter
./mysqld_exporter# 守护进程启动
nohup ./mysqld_exporter > mysqld_exporter.log 2>&1 &

访问: http://localhost:9104/metrics     可以查看 mysqld_exporter 的指标


配置 Prometheus 抓取 mysqld_exporter 的数据

prometheus.yml 配置文件中添加 mysqld_exporter 作为抓取目标:

scrape_configs:- job_name: 'mysqld_exporter'static_configs:- targets: ['localhost:9104']    # mysqld_exporter服务所在的路径

重启 prometheus 服务

可以在 Targets 和 Service Discovery 目录下看到对 mysqld_exporter 的监听


方式二:Docker 方式安装

配置 mysql

mysqld_exporter 需要一个 MySQL 用户来访问数据库,并获取相关的性能指标。您需要创建一个具有适当权限的 MySQL 用户。

登录mysql:

mysql -u root -p

创建一个新的用户(如 mysqld_exporter)并授予权限:

# 账号:mysqld_exporter
# 密码:123456
# '%':表示用户可以从任何主机连接mysql服务,如果只希望该用户从特定的 IP 地址连接(例如 192.168.1.100),请将 '%' 替换为特定的 IP 地址(例如 'mysqld_exporter'@'192.168.1.100')
CREATE USER 'mysqld_exporter'@'%' IDENTIFIED BY '123456';# 授予权限
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'%';# 刷新权限
FLUSH PRIVILEGES;

拉取 mysqld-exporter 的官方 Docker 镜像,最新版本有BUG启动不了,这里拉取旧版本:

docker pull prom/mysqld-exporter:v0.14.0
启动 mysqld_exporter 容器
docker run -d \--name mysqld_exporter \-p 9104:9104 \-e DATA_SOURCE_NAME="mysqld_exporter:123456@(127.0.0.1:3306)/" \prom/mysqld-exporter:v0.14.0

查看 Docker 启动容器日志

docker logs mysqld_exporter

开放防火墙端口 (和云服务安全组端口)

firewall-cmd --zone=public --add-port=9104/tcp --permanent   
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

如果服务正常运行,可以通过浏览器访问:http://localhost:9104/metrics


配置 Prometheus 抓取 node_exporter 的数据

查看 Docker 网络中运行的容器和ip地址(容器默认在bridge网络中运行)

docker network inspect bridge

prometheus.yml 配置文件中添加 mysqld_exporter 作为抓取目标:

scrape_configs:- job_name: 'mysqld_exporter'static_configs:- targets: ['172.17.0.5:9104']    # 同一台Docker部署的话就是容器ip地址(使用docker network inspect bridge查询)。否则就是物理机器ip地址。

重启 prometheus 服务

可以在 Targets 和 Service Discovery 目录下看到对 node_exporter 的监听


Prometheus 监控 Redis 数据库

监控 Redis 数据库的性能和状态指标,包括内存使用、连接数、命令执行速率、缓存命中率等,帮助用户了解 Redis 实例的运行状况。

Grafana 请查看:https://blog.csdn.net/a1053765496/article/details/142022760

启动 redis_exporter

redis_exporter 由于不是官方提供的,使用命令行的方式启动一堆问题,这里使用 docker 的方式启动 redis_exporter。

拉取 redis_exporter 的 docker 镜像

docker pull oliver006/redis_exporter

docker 运行 redis_exporter

redis_exporter 的默认端口是 9121

# redis在本地主机
docker run -d --name redis_exporter --network="host" oliver006/redis_exporter --redis.addr=redis://localhost:6379 --redis.password=yourpassword# redis在远程服务器
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter --redis.addr=redis://192.168.1.100:6379 --redis.password=yourpassword

查看 Docker 启动容器日志

docker logs redis_exporter

开放防火墙端口 (和云服务安全组端口)

firewall-cmd --zone=public --add-port=9121/tcp --permanent   
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

访问: http://localhost:9121/metrics     可以查看 redis_exporter 的指标


配置 Prometheus 抓取 redis_exporter 的数据

prometheus.yml 配置文件中添加 redis_exporter 作为抓取目标:

scrape_configs:- job_name: 'redis_exporter'static_configs:- targets: ['localhost:9121']    # redis_exporter 服务所在的路径

重启 prometheus 服务

可以在 Targets 和 Service Discovery 目录下看到对 redis_exporter 的监听,报红的表示停止的exporter服务


Prometheus 监控 SpringBoot 项目

SpringBoot 配置 Prometheus

在 pom.xml 中添加 Micrometer Prometheus 和 Spring Boot Actuator 的依赖

<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-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-app'metrics_path: '/actuator/prometheus'  # 指标的路径static_configs:- targets: ['localhost:8080']  # SpringBoot 服务地址(ip:端口)

重启 prometheus 服务

可以在 Targets 和 Service Discovery 目录下看到对 SpringBoot 服务的监听,报红的表示停止的exporter服务

Prometheus  和 Grafana 请查看:https://blog.csdn.net/a1053765496/article/details/142022760

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的Linux Ftp服务搭建

简单的Linux FTP服务搭建 1.需求 公司有一个esb文件传输代理&#xff0c;其中我们程序有文件传输功能&#xff0c;需要将本地文件传输到esb文件代理服务器上&#xff0c;传输成功之后发送http请求&#xff0c;告知esb将固定文件进行传输到对应外围其他服务的文件目录中&#…

unity GridLayoutGroup真正的居中

GridLayoutGroup默认的居中效果: 不是真正的居中 加上代码: namespace UnityEngine.UI {/// <summary>/// GridLayoutGroup拓展&#xff0c;使支持自定义内容/// </summary>internal class GridLayoutGroupEx : GridLayoutGroup{/// <summary>/// 启用居中/…

香橙派转换模型以及在开发板上部署

新手小白记录一下自己使用香橙派模型转换以及在开发板上运行的过程&#xff0c;防止后面忘记。 使用的开发板&#xff1a;Orange Pi 5 Plus&#xff08;rk3588&#xff09; 官方的一些资料在&#xff08;主要参考用户手册&#xff09;&#xff1a;Orange Pi - Orangepihttp:/…

【视频讲解】Python贝叶斯卷积神经网络分类胸部X光图像数据集实例

全文链接&#xff1a;https://tecdat.cn/?p37604 分析师&#xff1a;Yuanchun Niu 在人工智能的诸多领域中&#xff0c;分类技术扮演着核心角色&#xff0c;其应用广泛而深远。无论是在金融风险评估、医疗诊断、安全监控还是日常的交互式服务中&#xff0c;有效的分类算法都是…

科研绘图系列:R语言富集散点图(enrichment scatter plot)

介绍 富集通路散点图(Enrichment Pathway Scatter Plot)是一种数据可视化工具,用于展示基因集富集分析(Gene Set Enrichment Analysis, GSEA)的结果。 横坐标是对应基因名称,纵坐标是通路名称,图中的点表示该基因在某个通路下的qvalue,可以简单理解为不同环境下的贡献…

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片那是获取资料的入口&#xff01; 【全网最全】2024年数学建模国赛A题30页完整建模文档17页成品论文保奖matla代码可视化图表等&#xff08;后续会更新&#xff09;「首先来看看目前已有的资料&#xff0…

【ACM独立出版|EI快检索-高录用|IEEE Fellow支持】2024年数字经济与计算机科学国际学术会议(DECS2024)

【ACM独立出版&#xff5c;EI快检索-高录用&#xff5c;IEEE Fellow支持】 2024年数字经济与计算机科学国际学术会议&#xff08;DECS2024&#xff09; *ACM独立出版&#xff0c;快检索&#xff0c;高录用 *见刊后1个月左右完成EI&Scopus检索 *国内211大学、世界QS名校…

系统架构师-ERP+集成

ERP 集成平台end&#xff1a;就懒得画新的页

MyBatis-MappedStatement什么时候生成?QueryWrapper如何做到动态生成了SQL?

通过XML配置的MappedStatement 这部分MappedStatement主要是由MybatisXMLMapperBuilder进行解析&#xff0c;核心逻辑如下&#xff1a; 通过注解配置的MappedStatement 核心逻辑就在这个里面了&#xff1a; 继承BaseMapper的MappedStatement 我们看看这个类&#xff0c;里…

Java项目——苍穹外卖(一)

Entity、DTO、VO Entity&#xff08;实体&#xff09; Entity 是表示数据库表的对象&#xff0c;通常对应数据库中的一行数据。它通常包含与数据库表对应的字段&#xff0c;并可能包含一些业务逻辑。 DTO&#xff08;数据传输对象&#xff09; 作用&#xff1a;DTO 是用于在…

【小沐学OpenGL】Ubuntu环境下glfw的安装和使用

文章目录 1、简介1.1 OpenGL简介1.2 glfw简介 2、安装glfw2.1 直接命令二进制安装2.2 源码安装 3、测试glfw3.1 测试1&#xff0c;glfwglew3.2 测试2&#xff0c;glfwglad3.3 测试3 结语 1、简介 1.1 OpenGL简介 OpenGL作为图形界的工业标准&#xff0c;其仅仅定义了一组2D和…

Vivado编译报错黑盒子问题

1 问题描述 “Black Box Instances: Cell **** of type ** has undefined contents and is considered a back box. The contents of this cell must be defined for opt_design to complete successfully.” 检查工程代码提示的模块&#xff0c;该模块为纯手写的Veril…

注册安全分析报告:熊猫频道

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

【论文阅读】CiteTracker: Correlating Image and Text for Visual Tracking

paper&#xff1a;[2308.11322] CiteTracker: Correlating Image and Text for Visual Tracking (arxiv.org) code&#xff1a;NorahGreen/CiteTracker: [ICCV23] CiteTracker: Correlating Image and Text for Visual Tracking (github.com) 简介 现有的视觉跟踪方法通常以…

前端:HTML、CSS、JS、Vue

1 前端 内容概要 了解前端三件套(HTML、CSS、JS)在前端所起的作用掌握HTML标签的功能&#xff0c;掌握重要标签(a标签&#xff0c;form标签)了解CSS了解JS的基础语法掌握Vue的基础语法重点掌握Vue项目怎么启动项目掌握前后端分离是什么。前端做什么事情&#xff0c;后端做什么…

视频监控系统布局策略:EasyCVR视频汇聚平台构建高效、全面的安全防线

随着科技的飞速发展&#xff0c;视频监控系统已成为现代社会安全防范的重要组成部分&#xff0c;广泛应用于公共场所、企业园区、住宅小区等各个领域。一个科学合理的视频监控系统布局与选型策略&#xff0c;不仅能够显著提升安全监控的效率和效果&#xff0c;还能在关键时刻提…

Pytest-@pytest.fixture夹具篇(一)

一、定义 在Python的pytest测试框架中&#xff0c;pytest.fixture是一个&#xff08;不是唯一&#xff09;装饰器&#xff0c;用于定义一个测试夹具。 二、简单实例 使用参数autouserTrue pytest.fixture(autouseTrue) def my_fixture():print("Setup: 准备测试环境&q…

计算机毕业设计 | SpringBoot+vue 游戏商城 steam网站管理系统(附源码)

1&#xff0c;项目背景 国家大力推进信息化建设的大背景下&#xff0c;城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区&#xff0c;商业和服务业也比较发达&#xff0c;公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…

应用层协议HTTP

应用层协议中的 HTTP&#xff08;超文本传输协议&#xff09;。在互联网中&#xff0c;HTTP 协议是一个至关重要的一个协议&#xff0c;它定义了客户端与服务器之间如何进行通信&#xff0c;以交换或传输超文本。 本篇介绍了有关 URL 的相关知识&#xff0c;http 的报文格式&am…

Apache Pig

目录 一、配置说明1.本地模式2.集群模式 二、pig的数据模型三、pig的数据类型四、惰性执行五、pig的基本语法5.1语法说明5.2案例操作 六、pig的自定义函数 一、配置说明 1.本地模式 操作的是Linux系统文件 pig -x local关键日志 当前处于root目录下 2.集群模式 连接的是…