3.认识Prometheus的Web UI

本文介绍了Prometheus的Web UI界面,包括访问方式、主要页面如Alerts、Graph、Status和Help的功能详解,以及如何在Web UI上查询指标、查看告警信息和系统状态。在实际工作中,Prometheus常与Grafana结合,用于数据可视化。

平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~ 

1.认识Prometheus的Web UI界面

1.1.访问Web UI界面

        启动Prometheus服务后,我们可访问Prometheus自带的Web UI界面。

        自带的Web UI访问地址为:http://ip:port/graph

 1.2.认识Web UI界面

        Prometheus内置一个简单的Web控制台。Web控制台页面主要包含4个子页面:

(1)Alerts页面

        告警规则和告警信息页面。可查看告警规则和正在进行的不同状态的告警信息。

(2)Graph页面

        指标查询和图形化展示页面。可查询PromeQL表达式值,以图表或折线图的方式进行可视化展示。

(3)Status页面

        状态页面。可查看Prometheus运行和构建信息、TSDB时序数据库状态、命令行标志、系统配置、规则、Targets和Service Discovery等。

(4)Help页面

        帮助页面。可直接打开Prometheus官方文档(Prometheus官方帮助文档)。

        

        在Web UI控制台上,我们可以:

(1)查询指标。

(2)以图表或折线图的方式展示查询的指标值。

(3)查看告警信息。如:告警规则和告警状态。

(4)查看系统状态信息。如:Prometheus运行和构建信息、TSDB时序数据库状态、命令行标志、系统配置、规则、Targets和Service Discovery。

        实际工作中,我们通常搭配Grafana或自研的Web UI作为可视化工具进行使用。Prometheus作为Grafana或自研Web UI的数据源,Gragana或Web UI可视化工具显示的指标数据通过Prometheus提供的HTTP API接口进行查询获取。

1.2.1.Alerts页面

(1)告警状态

        上图表示系统中总共配置有4条告警规则:target_down_alert、hostCpuUsageAlert、hostMemUsageAlert 和hostDiskUsageAlert。其中标签为{instance="other-prometheus", job="other-prometheus-job"}的target实例触发了target_down_alert告警规则。

        Prometheus告警规则的状态有三种:

告警规则的状态状态
Inactive

非活动状态。

表示正在监控,但是还未有触发任何告警。若触发告警,则将状态转为Pending。

Pending

正在告警,且暂未将警报发送到AlertManager。

由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing状态。

Firing

正在告警,且已将警报发送到AlertManager。

它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到Inactive,如此循环。

(2)筛选框

        可以根据规则名称和标签过滤并查看告警规则。

(3)告警规则信息

        展开具体的告警规则,可以查看到“/etc/prometheus/rule.yml”规则配置文件中配置的规则信息。

(4)正在进行的告警记录

        若某些target满足了某告警规则的触发条件,则可展开该告警规则,查看到哪些标签的target触发了告警(Labels)、查看告警状态(State)、告警开始时间(Active Since)、告警规则表达式计算的值(Value)。

        若勾选了“Show annotations”选项,则在告警下可以查看到替换占位变量(如:{{ $labels.instance }} )后的描述信息,如:

1.2.2.Graph页面

(1)功能选项开关

功能选项描述
Use local time使用当地时间
Enable query history开启查询历史
Enable auto complete开启自动提交
Enable highlighting开启高亮显示
Enable linter开启提示功能

(2)PromQl表达式输入框

        可在此输入框中输入任意的PromQL表达式,点击“Execute”按钮即可查询表达式的结果。

(3)格式化PromQL表达式按钮

        点击该按钮,即可格式化或美化输入的PromQL表达式。实际调用的是“/api/v1/format_query”API接口。

(4)查看所有指标名按钮

        点击该按钮,即可查看Promtheus时序数据库中的所有指标名称。实际调用的是“/api/v1/label/__name__/values”API接口。

(5)表格或图形化展示区域

        可对PromQL表达式的结果按表格或曲线图的方式进行展示。

        Table表格可以展示PromQL表达式为即时向量和范围向量结果集;但是Graph曲线图仅能展示PromQL表达式为即时向量的结果集

1.2.3.Status页面

        Status页面可以查看系统的状态信息,包括:Prometheus运行和构建信息、TSDB时序数据库状态、命令行标志、系统配置、规则、Targets和Service Discovery

(1)Runtime & Build Information

        可查看Prometheus运行时信息(Prometheus启动时间、配置加载状态和存储数据的保留天数等)、构建信息(Prometheus版本、分支和构建人信息等)、告警管理器。

(2)TSDB Status

        可查看TSDB时序数据库的状态信息(时序的数量、标签对的数量等)、对的TOP10统计信息(前10的标签名称、前10的指标名称,内存占用前10的标签、前10的标签键值对)等。

(3)Command-Line Flags

        可查看系统的所有命令行标志参数值。

        查看所有的命令标志的帮助命令:进入容器的“/bin”下执行“./prometheus -h。帮助信息中可以看到所有命令行标志参数及参数描述。

        所有命令行标志参数都有一个默认值,我们可以在启动Prometheus服务的时候修改某些命令行标志参数值,如:

#启动prometheus服务
./bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus

(4)Configuration

        可查看所有已生效的配置信息。其中“basic_auth.password”进行了脱敏显示,其它参数原样显示。

        该配置信息来源于“--config.file=/etc/prometheus/prometheus.yml”命令行标志参数指定的prometheus.yml配置文件中。具体如何配置,后面章节详细介绍!

        本示例中,prometheus.yml配置内容如下:

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "/etc/prometheus/rule.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    basic_auth:
      username: admin
      password: abc123
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
  - job_name: other-prometheus-job
    honor_timestamps: true
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    basic_auth:
      username: admin
      password: abc123
    follow_redirects: true
    static_configs:
    - targets:
      - 10.17.0.80:39093
      labels:
        instance: other-prometheus

(5)Rules

        可查看系统中已配置的所有规则信息。

         规则配置文件路径通过“/etc/prometheus/prometheus.yml”配置文件中的“rule_files”参数指定。系统会每隔“evaluation_interval”时间计算一次规则表达式值,并根据规则文件的持续时间规则判断是否触发了告警规则,判断哪些实例触发了告警规则,若触发告警规则则进行告警状态变更和告警信息通知。

         本示例的规则文件(Rule.yml)内容如下:

groups:
# 报警组组名称
- name: hostStatsAlert
  #报警组规则
  rules:
  #告警名称,需唯一
  - alert: target_down_alert
    #promQL表达式
    expr: sum_over_time(up[1m]) == 0
    #满足此表达式持续时间超过for规定的时间才会触发此报警
    for: 1m
    labels:
      #严重级别
      severity: page
    annotations:
      #发出的告警标题
      summary: "摘要:实例 {{ $labels.instance }} 宕机了"
      #发出的告警内容
      description: "描述:实例{{ $labels.instance }} 宕机了"
  - alert: hostCpuUsageAlert
    #promQL表达式
    expr: sum(avg without (cpu)(irate(node_cpu_seconds_total{mode!='idle'}[5m]))) by (instance) > 0.85
    #满足此表达式持续时间超过for规定的时间才会触发此报警
    for: 1m
    labels:
      #严重级别
      severity: page
    annotations:
      #发出的告警标题
      summary: "实例 {{ $labels.instance }} CPU 使用率过高"
      #发出的告警内容
      description: "实例{{ $labels.instance }} CPU 使用率超过 85% (当前值为: {{ $value }})"
  - alert: hostMemUsageAlert
    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes > 0.85
    for: 1m
    labels:
      severity: page
    annotations:
      summary: "实例 {{ $labels.instance }} 内存使用率过高"
      description: "实例 {{ $labels.instance }} 内存使用率 85% (当前值为: {{ $value }})"
  - alert: hostDiskUsageAlert
    expr: ((node_filesystem_size_bytes - node_filesystem_free_bytes ) / node_filesystem_size_bytes ) > 0.30
    for: 5m
    labels:
      severity: middle
    annotations:
      summary: "实例 {{ $labels.instance }} 磁盘空间使用率过高"
      description: "实例 {{ $labels.instance }},挂载点:{{ $labels.mountpoint }} 磁盘空间使用率 30% (当前值为: {{ $value }})"

(6)Targets

        可查看当前Prometheus服务监控的各个Target的信息(如:Endpoint、状态、标签、上次pull抓取数据时间,抓取数据耗时,抓取数据时异常信息等)。

        展示的所有Target均来自于prometheus.yml中的“scrape_configs”参数或“file_sd_config”参数配置targets。其中“scrape_configs”参数可配置静态的targets,“file_sd_config”参数可从其它yml或json文件中读取动态配置的targets。

(7)Service Discovery

        可查看Prometheus服务发现的所有job,和每隔job下的targets信息。

1.2.4.Help页面

        点击“Help”图标,即可跳转至Prometheus官网文档(Prometheus官网文档)。

        可在官网文档中找到如何安装Prometheus、如何配置Prometheus、PromQL语法规则和HTTP API信息等。

<think>我们正在讨论PrometheusWebUI的安装验证问题。根据提供的引用内容,我们已经知道:-引用[1]提到成功获取了PrometheusWebUI的HTML页面,表明集群内部通过NodePort可以访问,说明PrometheusPod和Service的基本配置没有问题。-引用[2]详细描述了Prometheus的安装过程,包括下载解压、安装、启动和查看端口,以及通过浏览器查看图形界面的步骤。用户的问题:如何验证PrometheusWebUI已正确安装并可以访问?根据以上引用,我们可以从以下几个方面进行验证:1.**服务状态检查**:首先确保Prometheus的Pod和Service已经正常运行。2.**端口访问**:通过NodePort或直接端口访问来验证服务是否可达。3.**浏览器访问**:通过浏览器查看图形界面,这是最直观的方式。4.**命令行工具验证**:使用curl等命令行工具来测试访问。具体步骤如下:###1.检查PrometheusPod状态使用kubectl检查Prometheus相关的Pod是否处于Running状态:```bashkubectlgetpods-n<namespace>#替换<namespace>为实际命名空间```期望输出:Prometheus的Pod状态为Running,且READY列显示为1/1(或类似,取决于副本数)。###2.检查PrometheusService状态检查Service是否正确暴露了端口:```bashkubectlgetsvc-n<namespace>```期望输出:应该有Prometheus的Service,并且NodePort类型的Service会有一个随机端口(如30xxx)映射到Prometheus的9090端口。###3.集群内部访问测试在集群内部,可以通过Service的名称和端口进行访问测试。例如,使用一个临时的Pod(如busybox)来curlPrometheus的Service:```bashkubectlrun-it--rm--restart=Neverbusybox--image=busybox-n<namespace>--sh#在busybox容器中执行wget-qO-http://prometheus-service:9090```如果能够获取到HTML内容,则说明服务在集群内部是可达的。###4.集群外部访问测试如果PrometheusService是NodePort类型,那么可以通过任意节点的IP和NodePort端口访问。例如,如果节点IP为192.168.1.100,NodePort端口为30900,则在浏览器中访问:```http://192.168.1.100:30900```或者使用curl:```bashcurlhttp://192.168.1.100:30900```如果返回HTML内容,则说明WebUI可以从外部访问。###5.查看WebUI在浏览器中打开PrometheusWebUI,通常可以看到以下内容:-Prometheus的图形界面,包括状态、查询输入框、图表等。-访问`/targets`端点可以查看被监控的目标状态(应显示为UP)。-访问`/graph`可以执行PromQL查询。###6.健康检查端点Prometheus还提供了健康检查的端点`/-/healthy`和`/-/ready`,通过访问这些端点可以确认服务状态:```bashcurlhttp://<ip>:<port>/-/healthy```期望返回:`PrometheusisHealthy.````bashcurlhttp://<ip>:<port>/-/ready```期望返回:`PrometheusisReady.`###验证总结如果上述步骤均通过,则可以确认PrometheusWebUI已正确安装并可以访问。如果遇到问题,请检查防火墙规则、Service的类型(NodePort/LoadBalancer/Ingress)以及Prometheus的日志。§§相关问题§§1.如何修改Prometheus的端口配置?2.PrometheusWebUI无法访问时,如何进行故障排除?3.如何通过Ingress暴露PrometheusWebUI?</think> ### 验证 Prometheus Web UI 是否成功安装的步骤 #### 1. **检查 Pod 状态**(基础验证) ```bash kubectl get pods -n <prometheus命名空间> # 预期输出:Prometheus Pod 状态应为 Running # 示例: # NAME READY STATUS RESTARTS AGE # prometheus-server-abcde 1/1 Running 0 2h ``` 📌 **说明**:若状态为 `CrashLoopBackOff` 或 `Error`,需检查日志 `kubectl logs <pod名称>`[^1]。 --- #### 2. **验证端口可访问性** - **集群内部访问**(NodePort/ClusterIP): ```bash curl http://<Service-IP>:9090 # 集群内直接访问 ``` - **外部访问**(NodePort/LoadBalancer): ```bash curl http://<节点IP>:<NodePort端口> # 通过节点端口访问 ``` ✅ **成功标志**:返回 HTML 页面源码(包含 `Prometheus Time Series` 等关键词)[^1]。 --- #### 3. **浏览器访问检查**(最终确认) 通过浏览器访问 `http://<节点IP>:<NodePort端口>`: - **预期界面**: ![Prometheus Web UI](https://prometheus.io/assets/prometheus_screenshot.png) - 顶部菜单栏(Graph/Status/Alerts) - 查询表达式输入框 - 监控目标状态(**Targets** 显示 `UP` 状态) - 自监控指标(`prometheus_target_interval_length_seconds` 等) ⚠️ **失败排查**: - 端口未开放:检查防火墙规则 - 证书问题:HTTPS 需额外配置 --- #### 4. **健康检查端点验证** ```bash curl http://<IP>:端口/-/healthy # 预期响应:Prometheus is Healthy. ``` --- ### 验证流程图 ```mermaid graph TD A[检查Pod状态] -->|Running| B[验证端口访问] A -->|异常| E[查看Pod日志] B -->|返回HTML| C[浏览器访问UI] B -->|连接失败| F[检查Service/网络] C -->|显示完整UI| D[安装成功] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_Most

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值