Prometheus&Grafana

2023-05-16

Prometheus是一个全能选手 原生支持容器监控 也支持传统应用程序 它具备所有监控系统都具备的流程 数据采集 --》数据处理 --》数据存储 --》数据展示 --》警告

prometheus中文名字普罗米修斯最初在soundCloud上构建的监控系统,自2012年称为社区开源项目 用户非常活跃的开发人员和用户社区2016年加入cncf称为继kubernetes之后的第二个托管项目 官方地址https://prometheus.io/

Prometheus 特点展开目录

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

Prometheus的数据模型

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 配置文件中体现,任务是具有相同目标的实例集合,可以理解为一个map这个map的值是string的key list类型的值 任务就是key 任务中的内容就是list

Prometheus 部署

使用docker来安装Prometheus 首先新建目录随便起名字比如叫aa 然后在这个新建的目录里创建一个yml类型的文件 文件名字随便起比如起am.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'

然后在aa目录下新增prometheus目录在里面创建prometheus配置文件prometheus.yml 然后内容写

global:  #全局配置
  scrape_interval:   15s  #全局定时任务抓取性能数据间隔

scrape_configs:  #抓取性能数据任务配置
- job_name:       'tulingmall-order'  #抓取订单服务性能指标数据任务,一个job下可以配置多个抓紧的targets,比如订单服务多个实例机器
  scrape_interval: 10s  #每10s抓取一次
  metrics_path: '/actuator/prometheus'  #抓取的数据url 这里写死/actuator/prometheus就行
  static_configs:
  - targets: ['192.168.31.60:8844']  #抓取的服务器地址 这里写的是我项目的访问地址
    labels:
      application: 'tulingmall-order-label'  #抓取任务标签

- job_name: 'prometheus'  #抓取prometheus自身性能指标数据任务
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']

项目中首先加入依赖

<!-- 开启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>

在项目的配置文件中加入

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

在aa目录下执行如下命令启动prometheus

docker-compose up -d

Grafana

Grafana是自动化监控工具的ui prometheus自带ui非常难看 所以引入Grafana当做ui界面

Grafana 部署
先用docker来安装下grafana,在上面的am.yml文件里加入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之后启动

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

GF_SECURITY_ADMIN_PASSWORD=password  #grafana管理界面的登录用户密码,用户名是admin
GF_USERS_ALLOW_SIGN_UP=false  #grafana管理界面是否允许注册,默认不允许

在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 = **************@qq.com
# smtp 授权码,授权码获取请参看课上视频演示
password = test123
# 发信邮箱
from_address = **************@qq.com
# 发信人
from_name = **************

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

监控mysql性能指标

1、下载mysql客户端的exporter镜像

docker pull prom/mysqld-exporter
2、启动监控的数据库连接,容器创建的时候需要指定

docker run -d -p 9104:9104 -e DATA_SOURCE_NAME=“root:password@(mysql服务器ip:3306)/databaseName” prom/mysqld-exporter

3、在prometheus.yml文件末尾追加如下配置:

  • job_name: ‘mysql’ // 这就是任务
    scrape_interval: 5s
    static_configs:
    • targets: [‘192.168.50.60:9104’]// 这里就是实例
      labels:
      instance: mysql

4、重新启动Prometheus镜像,查看Prometheus是否启动完成,访问:http://服务器ip:9090

docker-compose up --force-recreate -d

5、导入Prometheus模板,添加mysql-dashboard.json格式模板,更多模板下载地址:

https://grafana.com/grafana/dashboards
https://github.com/percona/grafana-dashboards.git

监控Redis性能指标

1、下载redis客户端的exporter镜像

docker pull oliver006/redis_exporter

2、启动监控的数据库连接,容器创建的时候需要指定

docker run -d -p 9121:9121 oliver006/redis_exporter --redis.addr redis://redis连接IP:6379

3、在prometheus.yml文件末尾追加如下配置:

  • job_name: ‘redis’
    scrape_interval: 5s
    static_configs:
    • targets: [‘192.168.50.60:9121’]
      labels:
      instance: redis

4、重新启动Prometheus镜像,查看Prometheus是否启动完成,访问:http://服务器ip:9090

docker-compose up --force-recreate -d

5、导入Prometheus模板,添加redis-dashboard.json格式模板

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prometheus&Grafana 的相关文章

随机推荐

  • gazebo模型下载以及配置

    最近在学习ROS xff0c 主要是为了结合SLAM仿真使用 启动gazebo命令 roscore 在另一个终端执行 gazebo 就可以进入清爽的gazebo界面 xff08 如果屏幕出现黑屏并不是安装错误可以稍微等待一会 xff09 x
  • SLAM中常用数据集下载链接(TUM KITTI DSO Mono EuRoC)

    TUM 链接 xff1a https pan baidu com s 1nwXtGqH 密码 xff1a lsgr KITTI 链接 xff1a https pan baidu com s 1htFmXDE 密码 xff1a uu20 KI
  •  windows docker 更改镜像安装目录

    目录 1 问题 1 1 版本信息 2 修改Docker盘位操作 2 1 停止docker 2 2 备份已有的数据 2 3 删除旧数据 数据未备份前请谨慎操作 2 4 导入数据到新盘 2 5 启动Docker START 1 问题 Windo
  • gnssins代码阅读

    这个代码是GNSS和INS紧组合的 xff1a https github com marcoamm gnssins xff0c 实现了ppp和ins紧组合 改变数据需要改代码的地方 xff1a imu tactical 61 fopen 3
  • 深度解析FUTABA的SBUS协议(/天地飞遥控器的WBUS协议/Robomaster接收机的DBUS协议)到底是啥?

    写在前面 xff1a 无论是SBUS xff08 日本FUTABA xff0c 所以航模 xff0c 车模爱好者都知道的公司 xff0c 一个好点遥控器近万了 xff09 xff0c 还是WBUS xff08 天地飞遥控器接收机用 xff0
  • 贝塞尔曲线动画C++简单实践

    目录 贝塞尔曲线简介一阶贝塞尔二阶贝塞尔三阶贝塞尔N阶贝塞尔曲线 贝塞尔曲线在动画中的应用实践求曲线散点坐标将曲线应用到动画动画框架cmd动画窗口动画 完整代码示例代码核心类代码BezierCurve Animator Console 参考
  • package.xml文件介绍

    package xml文件介绍 在ROS中创建功能包时 xff0c 会自动生成package xml文件 xff0c pacakge xml 包含了package的名称 版本号 内容描述 维护人员 软件许可 编译构建工具 编译依赖 运行依赖
  • ubuntu误修改了bashrc文件的解决办法

    在安装Pycharm的过程中配置JAVA的JDK环境变量时 xff0c 将bashrc内的内容不小心修改了 xff0c 导致命令窗口中的很多命令不能执行 xff0c 并且su及sudo这些权限的命令也用不了 xff0c 问题信息如下图所示
  • docker安装canal1.1.5监控mysql的binlog日志并配置rocketmq进行数据同步到elasticsearch(超级大干货)

    直接来 xff0c 不逼逼 xff08 canal官网说的很明白 xff0c 伪从节点请求dump 然后这个那个的 xff0c 自行查阅资料 xff09 1 直接拉取canal镜像 docker pull canal canal serve
  • 相机定位、相机重定位和视觉里程计的概念定义

    相机定位 相机重定位和视觉里程计的概念定义 什么是相机定位 xff1f 什么是相机重定位 xff1f 什么是视觉里程计 xff1f 相机定位 相机定位 xff08 Camera Localization xff09 是求解基于基本坐标系下的
  • vscode使用restClient实现各种http请求

    vscode使用restClient实现各种http请求 一 xff0c 安装插件 首先 xff0c 我们要在vscode的扩展中 xff0c 搜索rest Client xff0c 然后安装它 xff0c 这里我已经安装过了 安装后 xf
  • akka-2 利用模式匹配,实现worker节点向master报告本机配置信息

    1 创建本机配置信息类 WorkInfo Worker的本机信息类 id 主机名称 momery 内存大小 cores CPU核数 直接使用默认构造创建消息类 Worker的本机信息类 id 主机名称 momery 内存大小 cores C
  • 多路归并排序-Python实现大文件排序,合并排序

    使用python实现多 K 路归并外部排序 xff0c 解决小内存排序大文件问题 上一篇中 xff0c 我们实现了一般的归并排序 归并排序递归与非递归 Python实现 在实际工作中 xff0c 多个有序数列合并成一个 xff0c 大文件或
  • GINAV使用

    在配置文件中 xff0c 绝对不能 psd gyro 61 8 46e 14 等号后面必须要有空格才能区分开 psd gyro 61 8 46e 14 运行谷歌数据直接是空的图像
  • ZED双目相机(c++程序实现)

    1 前提条件 SDK最新版 xff08 从官网直接下载安装 xff0c 默认安装路径 xff09 CUDA xff08 安装对应版本 xff0c 此步需要电脑GPU支持 xff08 此步劝退一部人 xff09 xff09 下载zed示例包
  • fork()使用详解

    其他参考 xff1a linux中fork xff08 xff09 函数详解 一 fork入门知识 进程的定义 xff1a 进程是一个执行中的程序的实例 xff0c 是系统进行资源分配和调度的一个独立单位 PCB是进程存在的唯一标识 PCB
  • conda 安装包出现问题 :Collecting package metadata (current_repodata.json): failed

    如果有重装过anaconda的经历的同学 xff0c 应该注意到会有一个 condarc文件会自动生成 xff0c 所以当使用conda install和conda create命令会出现问题 删除 condarc文件之后 xff0c 这个
  • DockerFile+Python2安装和python3和Pip2安装request

    dockerfile 的使用步骤 sudo docker build t cve 11890 cve 11890是文件名 docker images 查看文件是否成功创建 sudo docker run d p 8089 80 cve 11
  • Linux关闭启用图形界面

    Linux关闭启用图形界面 关闭图形界面 sudo su root systemctl set default multi user target sudo service lightdm stop shutdown r 重启命令 xff0
  • Prometheus&Grafana

    Prometheus是一个全能选手 原生支持容器监控 也支持传统应用程序 它具备所有监控系统都具备的流程 数据采集 数据处理 数据存储 数据展示 警告 prometheus中文名字普罗米修斯最初在soundCloud上构建的监控系统 xff