Prometheus -- 打造云原生监控系统,轻松实现智能告警


博客内容总结于B站–林哥Linux

Prometheus是什么

Prometheus 和 Zabbix 都是两种流行的监控解决方案,都有各自的特点和适用场景。

Prometheus专为微服务和云原生架构设计,提供了强大的数据收集、查询和可视化功能。Zabbix 则在传统 IT 基础设施监控中表现出色。

架构概览

在这里插入图片描述
Prometheus 的架构设计为一个独立运行的时间序列数据库(Time Serices Database),

核心组件

Prometheus主要包括以下组件:
  1.'Prometheus Server':
       负责定期从指定的目标(如服务器、应用)中拉取监控数据,存储在本地'时间序列数据库'中。
       
  2.'Exporters':
       每个服务都有相应的 Exporter,通常以 HTTP 端点的方式暴露服务的指标(如 CPU 使用率、内存占用),
       收集监控样本数据,并以符合 Prometheus 的数据格式进行展示。
       例如:
           MySQL exporter 从MySQL数据库中采集各种性能指标,如查询性能、连接数、缓存命中率等
           Redis Exporter 监控Redis实例的性能和状态,包括内存使用、客户端连接数、命令统计等
           Node Exporter 收集Linux和其他类Unix系统的硬件和操作系统指标:CPU、内存、磁盘、网络使用情况等
           Cadvisor 通常用于Kubernetes环境中,监控容器的资源消耗、性能以及状态。
       
  3.'Alertmanager':
       用于管理和发送报警。当满足预设报警条件时,会触发报警通知。
       
  4.'Pushgateway':
       用于处理短时任务的监控数据,这些任务运行时间短且可能结束时无法直接被 Prometheus 拉取。
       可以使用中间网关推送给Prometheus时间序列,
       
  5.'客户端库':
       Prometheus 提供多种语言的客户端库(如 Go、Java、Python 等),允许开发者在应用代码中嵌入自定义监控指标。
       
  6.'Web UI 和 Grafana':
       Prometheus 自带基本的 Web UI 以查询数据和简单可视化,
       Grafana 是更流行的第三方可视化工具,可以展示 Prometheus 的监控数据,生成丰富的监控仪表盘。

安装prometheus

使用docker compose安装prometheus,这里git clone的是林哥Linux的gitee仓库,快去Star吧。

git clone https://gitee.com/linge365/docker-prometheus.git

在这里插入图片描述

 docker-compose up -d
root@k8s-master1:/data/docker-prometheus# docker-compose up -d
Creating network "dockerprometheus_monitoring" with driver "bridge"
Creating volume "dockerprometheus_prometheus_data" with default driver
Creating volume "dockerprometheus_grafana_data" with default driver
Pulling node_exporter (prom/node-exporter:v1.5.0)...
v1.5.0: Pulling from prom/node-exporter
22b70bddd3ac: Pull complete
....
Digest: sha256:39c642b2b337e38c18e80266fb14383754178202f40103646337722a594d984c
Status: Downloaded newer image for prom/node-exporter:v1.5.0

Pulling alertmanager (prom/alertmanager:v0.25.0)...
v0.25.0: Pulling from prom/alertmanager
b08a0a826235: Pull complete
....
Digest: sha256:fd4d9a3dd1fd0125108417be21be917f19cc76262347086509a0d43f29b80e98
Status: Downloaded newer image for prom/alertmanager:v0.25.0

Pulling cadvisor (google/cadvisor:latest)...
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
....
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest

Pulling prometheus (prom/prometheus:v2.37.6)...
v2.37.6: Pulling from prom/prometheus
4399114b4c59: Pull complete
225de5a6f1e7: Pull complete
Digest: sha256:92ceb93400dd4c887c76685d258bd75b9dcfe3419b71932821e9dcc70288d851
Status: Downloaded newer image for prom/prometheus:v2.37.6

Pulling grafana (grafana/grafana:9.4.3)...
9.4.3: Pulling from grafana/grafana
895e193edb51: Pull complete
....
Digest: sha256:76dcf36e7d2a4110c2387c1ad6e4641068dc78d7780da516d5d666d1e4623ac5
Status: Downloaded newer image for grafana/grafana:9.4.3
Creating alertmanager ... 
Creating node-exporter ... 
Creating cadvisor ... 
Creating alertmanager
Creating node-exporter
Creating node-exporter ... done
Creating prometheus ... 
Creating prometheus ... done
Creating grafana ... 
Creating grafana ... done

在这里插入图片描述
web访问地址

应用 访问地址 备注
prometheus http://192.168.200.100:9090 无用户名和密码
grafana http://192.168.200.100:3000 admin/
altermanager http://192.168.200.100:9093
node-exporter http://192.168.200.100:9100/metrics

prometheus
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Grafana
在这里插入图片描述
Alertmanager
在这里插入图片描述
node-exporter
在这里插入图片描述

Grafana添加Prometheus数据源

Grafana添加Prometheus数据源,监控 Node Exporter,也就是收集我192.168.200.100这台主机的CPU、内存、磁盘、网络使用情况。
在这里插入图片描述
选择Prometheus
在这里插入图片描述
在这里插入图片描述
保存测试
在这里插入图片描述
保存之后的成功提示
在这里插入图片描述
导入Dashbore
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
在这里插入图片描述
拷贝ID
在这里插入图片描述
粘贴id后,点击Load
在这里插入图片描述
之后选择Prometheus之后点击import
在这里插入图片描述
服务器的监控就配置成功啦。
在这里插入图片描述

概念理解

1.时间序列

在 Prometheus 中,时间序列是监控和存储数据的核心概念。Prometheus 通过时间序列存储每个监控指标的变化情况,时间序列的独特设计使 Prometheus 能够高效地存储和分析监控数据。

安装好prometheus后会暴露一个/metrichttp服务如下截图(相等于安装好了prometheus_exporter),通过配置(默认会加上/metrics), Prometheus就可以采集到这个/metric里面所有监控样本数据。

在这里插入图片描述
prometheus.yml的配置

# 全局配置
global:
  scrape_interval:     15s # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
  evaluation_interval: 15s # 每15秒评估一次规则。默认是每1分钟一次。

# Alertmanager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"

# 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'alertmanager'
    scrape_interval: 15s
    static_configs:
    - targets: ['alertmanager:9093']

  - job_name: 'cadvisor'
    scrape_interval: 15s
    static_configs:
    - targets: ['cadvisor:8080']
      labels:
        instance: Prometheus服务器

  - job_name: 'node-exporter'
    scrape_interval: 15s
    static_configs:
    - targets: ['node_exporter:9100']
      labels:
        instance: Prometheus服务器

2.Metric

在 Prometheus 中,Metric(指标)类型定义了如何收集、存储和查询监控数据的格式和规则。

Prometheus 共有四种基本的 Metric 类型:
  1.Counter(计数器)
  2.Gauge(仪表盘)
  3.Histogram(直方图)
  4.Summary(摘要)

在这里插入图片描述

1. Counter(计数器)

计数器是一个只能增加的累积值,通常用于表示某些事件发生的次数,例如 HTTP 请求数量、错误发生次数等。计数器的值从零开始,只会增长,除非重启或重置。

示例
假设我们有一个指标 http_requests_total,用于统计 Web 服务器收到的 HTTP 请求总数:

http_requests_total{
   method="GET", handler="/home"}  = 1250
http_requests_total{
   method="POST", handler="/login"} = 300

在该示例中,http_requests_total 计数了不同方法和处理程序的请求总数。每次有新的请求时,值会增加。Prometheus 可以使用这个计数器来计算每秒的请求增长率,例如:

rate(prometheus_http_requests_total
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值