今天聊聊Prometheus

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 今天聊聊Prometheus

Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,数据采集→数据处理→数据存储→数据展示→告警,本文就是针对 Prometheus 展开的,所以先看看 Prometheus 概述

Prometheus 概述展开目录

先来看一下 Prometheus 是个啥

Prometheus 是什么

中文名普罗米修斯,最初在 SoundCloud 上构建的监控系统,自 2012 年成为社区开源项目,用户非常活跃的开发人员和用户社区,2016 年加入 CNCF,成为继 kubernetes 之后的第二个托管项目,官方网站

Prometheus 特点展开目录

来自官方摘录

  • 多维数据模型:由度量名称和键值对标识的时间序列数据
  • PromSQL: — 种灵活的查询语言,可以利用多维数据完成复杂的查询
  • 不依赖分布式存储,单个服务器节点可直接工作
  • 基于 HTTP 的 pull 方式釆集时间序列数据
  • 推送时间序列数据通过 PushGateway 组件支持
  • 通过服务发现或静态配罝发现目标
  • 多种图形模式及仪表盘支持 (grafana)

Prometheus 组成与架构展开目录

来看一张图,官方扒到的

名称

说明

Prometheus Server

收集指标和存储时间序列数据,并提供查询接口

Push Gateway

短期存储指标数据,主要用于临时性任务

Exporters

采集已有的三方服务监控指标并暴露 metrics

Alertmanager

告警

Web UI

简单的 WEB 控制台

集成了数据的采集,处理,存储,展示,告警一系列流程都已经具备了

数据模型展开目录

Prometheus 将所有数据存储为时间序列,具有相同度量名称以及标签属于同个指标,也就是说 Prometheus 从数据源拿到数据之后都会存到内置的 TSDB 中,这里存储的就是时间序列数据,它存储的数据会有一个度量名称,譬如你现在监控一个 nginx,首先你要给他起个名字,这个名称也就是度量名,还会有 N 个标签,你可以理解名称为表名,标签为字段,所以,每个时间序列都由度量标准名称和一组键值对 (也称为标签) 唯一标识。

时间序列的格式是这样的,

<metricename> {<labelname>=<labelvalue>,...}

metrice name 指的就是度量标准名称,label name 也就是标签名,这个标签可以有多个,例子

jvm_memory_max_bytes{area="heap",id="Eden Space",}

这个度量名称为 jvm_memory_max_bytes,后面是两个标签,和他们各对应的值,当然你还可以继续指定标签,你指定的标签越多查询的维度就越多。

指标类型展开目录

看表格吧

类型名称

说明

Counter

递增计数器,适合收集接口请求次数

Guage

可以任意变化的数值,适合 CPU 使用率监控

Histogram

对一段时间内数据进行采集,并对有数值求和来统计数量

Summary

与 Histogram 类型类似

任务和实例展开目录

实例指的就是你可以抓取的目标target,这个会在 Prometheus 配置文件中体现,任务是具有相同目标的实例集合,你可以理解为是一个组(比如,订单服务多台实例机器,可以放入一个任务里,分多个实例target抓取),一会写配置文件的时候会详细解析,下面开始安装 Prometheus

Prometheus 部署

我们借助docker来安装,新建目录docker-monitor,在里面创建文件docker-compose.yml,内容如下:

version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: 'prometheus'
    volumes:
    - ./prometheus/:/etc/prometheus/    #映射prometheus的配置文件
    - /etc/localtime:/etc/localtime:ro  #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
    ports:
    - '9090:9090'

监控web应用性能指标

docker-monitor目录下新增prometheus目录,在里面创建prometheus配置文件prometheus.yml,内容如下:

global:  #全局配置
  scrape_interval:   15s  #全局定时任务抓取性能数据间隔
scrape_configs:  #抓取性能数据任务配置
- job_name:       'test'  #抓取订单服务性能指标数据任务,一个job下可以配置多个抓紧的targets,比如订单服务多个实例机器
  scrape_interval: 10s  #每10s抓取一次
  metrics_path: '/actuator/prometheus'  #抓取的数据url
  static_configs:
  - targets: ['192.168.31.186:8844']  #抓取的服务器地址
    labels:
      application: 'test-label'  #抓取任务标签
- job_name: 'prometheus'  #抓取prometheus自身性能指标数据任务
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']

docker-monitor目录下执行如下命令启动prometheus

docker-compose up -d

在浏览器访问prometheus:http://192.168.31.186:9090,如下图所示:

点击Status下拉,选中Targets,界面如下:

这里显示了在prometheus里配置的两个抓取任务,不过eureka-server任务是失败的,state是down,接下来我们需要配置下eureka-server服务才能让prometheus抓取数据。

首先需要在eureka-server服务下增加pom依赖,如下:

<!-- 开启springboot的应用监控 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 增加prometheus整合 -->
<dependency>
   <groupId>io.micrometer</groupId>
   <artifactId>micrometer-registry-prometheus</artifactId>
</dependency

还需要再eureka-server服务的配置文件里增加开启springboot admin监控的配置,如下:

management: #开启SpringBoot Admin的监控
  endpoints:
    promethus:
      enable: true
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always

至此完成了prometheus 的部署


以上是prometheus自带的指标查询界面,但是太简陋,一般我们都是使用grafana图形展示工具配合prometheus一起使用



grafana部署

version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: 'prometheus'
    volumes:
    - ./prometheus/:/etc/prometheus/    #映射prometheus的配置文件
    - /etc/localtime:/etc/localtime:ro  #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
    ports:
    - '9090:9090'
  grafana:  
    image: grafana/grafana:5.2.4
    container_name: 'grafana'
    ports:  
    - '3000:3000'
    volumes: 
    - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini  #grafana报警邮件配置
    - ./grafana/provisioning/:/etc/grafana/provisioning/  #配置grafana的prometheus数据源
    - /etc/localtime:/etc/localtime:ro
    env_file:
    - ./grafana/config.monitoring  #grafana登录配置
    depends_on:
    - prometheus  #grafana需要在prometheus之后启动

docker-monitor目录下新增grafana目录,在里面创建文件config.monitoring,内容如下:


         

grafana目录下创建目录provisioning,在里面创建datasources目录,在datasources目录里新建文件datasource.yml,内容如下:

# config file version
apiVersion: 1
deleteDatasources:  #如果之前存在name为Prometheus,orgId为1的数据源先删除
- name: Prometheus
  orgId: 1
datasources:  #配置Prometheus的数据源
- name: Prometheus
  type: prometheus
  access: proxy
  orgId: 1
  url: http://prometheus:9090  #在相同的docker compose下,可以直接用prometheus服务名直接访问
  basicAuth: false
  isDefault: true
  version: 1
  editable: true

grafana目录下创建目录config,在里面创建文件grafana.ini,内容如下:

#################################### SMTP / Emailing ##########################
# 配置邮件服务器
[smtp]
enabled = true
# 发件服务器
host = smtp.qq.com:465
# smtp账号
user = xxxxxx@qq.com
# smtp 授权码,授权码获取请参看课上视频演示
password = xxxxx1213
# 发信邮箱
from_address = xxxxxx@qq.com
# 发信人
from_name = jiuge

用docker compose启动grafana,访问grafana页面:http://192.168.31.186:3000,用户名为admin,密码为password,如下:


至此,完成了grafana的搭建。


监控的脚本json文件可以去网上找, 有很多, jvm,mysql,RocketMQ

、Redis等常用的都有。  


图形界面看起来就是不一样。




目录
相关文章
|
3月前
|
Prometheus 监控 Kubernetes
Prometheus + Grafana安装
Prometheus + Grafana安装
|
6月前
|
存储 Prometheus 监控
【Prometheus】什么是prometheus?prometheus简介
【Prometheus】什么是prometheus?prometheus简介
57 0
|
4月前
|
Prometheus 监控 Cloud Native
Prometheus
Prometheus 是一款开源的监控和报警工具,可以用于监控各种类型的组件,例如应用程序、数据库、网络设备等等。它通过收集和处理指标来提供有关系统状态的实时和历史视图,并通过报警机制来通知管理员当系统出现异常时。
65 1
|
5月前
|
Prometheus 监控 Cloud Native
Prometheus的使用总结
Prometheus的使用总结
80 0
|
8月前
|
Prometheus Kubernetes Cloud Native
k8s安装prometheus
##### 安装 在目标集群上,执行如下命令: ```shell kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-prometheus.yml ``` ##### 使用 1.在浏览器访问地址:http://master_ip:30000,如下图所示: 2.查看k8s自带的指标数据,如下图所示:
k8s安装prometheus
|
Prometheus Kubernetes 监控
Prometheus + Grafana on k8s部署
Prometheus + Grafana on k8s部署
1064 0
Prometheus + Grafana on k8s部署
|
9月前
|
Prometheus 监控 Cloud Native
【2023】Prometheus-Blackbox_exporter使用
【2023】Prometheus-Blackbox_exporter使用
199 0
|
存储 Prometheus 监控
Prometheus的使用
Prometheus的使用
133 0
|
存储 Prometheus 监控
Exporter + Prometheus + Grafana进行监控
Exporter + Prometheus + Grafana进行监控
304 0
Exporter + Prometheus + Grafana进行监控
|
存储 Prometheus 监控
我们不用Prometheus了?
我们不用Prometheus了?
我们不用Prometheus了?