Prometheus环境搭建和认识

news2024/9/24 3:21:01

Prometheus 环境搭建

1.prometheus 简介

Prometheus是基于go语言开发的一套开源的监控、报警和时间序列数据库的组合,是由SoundCloud公司开发的开源监控系统,Prometheus于2016年加入CNCF(Cloud Native Computing Foundation,云原生计算基金会),2018年8月9日prometheus成为CNCF继kubernetes 之后毕业的第二个项目,prometheus在容器和微服务领域中得到了广泛的应用,其特点主要如下:

使用key-value的多维度(多个角度,多个层面,多个方面)格式保存数据
数据不使用MySQL这样的传统数据库,而是使用时序数据库,目前是使用的TSDB
支持第三方dashboard实现更绚丽的图形界面,如grafana(Grafana 2.5.0版本及以上)
组件模块化
不需要依赖存储,数据可以本地保存也可以远程保存
平均每个采样点仅占3.5 bytes,且一个Prometheus server可以处理数百万级别的的metrics指标数据。
支持服务自动化发现(基于consul等方式动态发现被监控的目标服务)
强大的数据查询语句功(PromQL,Prometheus Query Language)
数据可以直接进行算术运算
易于横向伸缩
众多官方和第三方的exporter(“数据”导出器)实现不同的指标数据收集

1.1 为什么使用Prometheus

​ 容器监控的实现方对比虚拟机或者物理机来说比大的区别,比如容器在k8s环境中可以任意横向扩容与缩容,那么就需要监控服务能够自动对新创建的容器进行监控,当容器删除后又能够及时的从监控服务中删除,而传统的zabbix的监控方式需要在每一个容器中安装启动agent,并且在容器自动发现注册及模板关联方面并没有比较好的实现方式。

1.2 Prometheus 架构图

prometheus server:主服务,接受外部http请求,收集、存储与查询数据等
prometheus targets: 静态收集的目标服务数据
service discovery:动态发现服务
prometheus alerting:报警通知
push gateway:数据收集代理服务器(类似于zabbix proxy)
data visualization and export: 数据可视化与数据导出(访问客户端)

2. 部署Prometheus

2.1 docker-compose 部署

# 创建prometheus目录
mkdir prometheus && chmod 777 prometheus
# 创建数据挂载目录
cd prometheus && mkdir grafana_data prometheus_data && chmod 777 grafana_data prometheus_data
version: "3.7"
services:
  node-exporter:
    image: prom/node-exporter:latest
    container_name: "node-exporter"
    ports:
      - "9100:9100"
    restart: always
  prometheus:
    image: prom/prometheus:latest
    container_name: "prometheus"
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
      - "./prometheus_data:/prometheus"
  grafana:
    image: grafana/grafana:7.3.6
    container_name: "grafana"
    ports:
      - "3000:3000"
    restart: always
    volumes:
      - "./grafana_data:/var/lib/grafana"

创建prometheus.yml

root@promethues(192.168.1.20)/data/prometheus>ls
docker-compose.yml  grafana_data  prometheus_data  prometheus.yml
root@promethues(192.168.1.20)/data/prometheus>cat prometheus.yml 
global:
  scrape_interval:     15s 
  external_labels:
    monitor: 'codelab-monitor'
scrape_configs:
  - job_name: 'node-exporter' 
    scrape_interval: 5s
    metrics_path: /metrics  
    static_configs:
      - targets: ['192.168.1.10:9100','192.168.1.11:9100'] 

root@promethues(192.168.1.20)/data/prometheus>

2.2 运行docker-compsoe

root@promethues(192.168.1.20)/data/prometheus>docker-compose up -d
[+] Running 3/0
 ✔ Container node-exporter  Running                                                                                                                                     0.0s 
 ✔ Container grafana        Running                                                                                                                                     0.0s 
 ✔ Container prometheus     Running                                                                                                                                     0.0s 
root@promethues(192.168.1.20)/data/prometheus>

2.3 部署node_exporter

安装 Node Exporter 用于收集各 node 主机节点上的监控指标数据,监听端口为9100

二进制安装最为方便,要是部署在docker里也很方便,前提是安装docker

所以在node节点我采用的是二进制安装,并整理成脚本,一键安装

root@k8s-master(192.168.1.10)~/node_export>ls
install.sh  node_exporter.service*  node_exporter.tar.gz
root@k8s-master(192.168.1.10)~/node_export>netstat -tnlp |grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      972/node_exporter   
root@k8s-master(192.168.1.10)~/node_export>
#安装链接
链接:https://pan.baidu.com/s/1wLVWxOhhEUz0q8vekH4e5g?pwd=7rp8 
提取码:7rp8 

2.4 grafana插件管理

#在线安装 进入容器
bash-5.0$ grafana-cli plugins  list-remote     # 查看插件目录

bash-5.0$ grafana-cli plugins install grafana-piechart-panel   # 安装饼图插件
installing grafana-piechart-panel @ 1.6.4
from: https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.4/download
into: /var/lib/grafana/plugins

✔ Installed grafana-piechart-panel successfully 

Restart grafana after installing plugins . <service grafana-server restart>

bash-5.0$ 


# 离线安装
# 饼图插件未安装,需要提前安装
https://grafana.com/grafana/plugins/grafana-piechart-panel
#将下载下来的挂载到/var/lib/grafana/plugins目录中就行
# unzip grafana-piechart-panel-v1.3.8-0-g4f34110.zip
# mv grafana-piechart-panel-4f34110 grafana-piechart-panel
root@promethues(192.168.1.20)/data/prometheus/grafana_data/plugins>pwd
/data/prometheus/grafana_data/plugins

3. 访问web界面

在这里插入图片描述

3.1 dashboard 菜单说明

#一级目录解析
Alerts  #Prometheus的告警信息菜单
Graph  #Prometheus的图形展示界面,这是prometheus默认访问的界面
Status  #Prometheus的状态数据界面
Help   #Prometheus的帮助信息界面
#Status子菜单,在Status菜单下存在很多的子选项,其名称和功能效果如下:
Runtime & Build Information 服务主机的运行状态信息及内部的监控项基本信息
Command-Line Flags 启动时候从配置文件中加载的属性信息
Configuration 配置文件的具体内容(yaml格式)
Rules 查询、告警、可视化等数据分析动作的规则记录
Targets 监控的目标对象,包括主机、服务等以endpoint形式存在
Service Discovery 自动发现的各种Targets对象列表

在这里插入图片描述

3.2 验证node exporter web界面

在这里插入图片描述

在这里插入图片描述

3.3 grafana图形化界面

在这里插入图片描述

登录用户和密码都为admin

登录成功后会立即修改密码

4. Exporters

4.1 Node Exporter 的指标

  • 常用的各指标
    • node_cpu_seconds_total
    • node_memory_MemTotal_bytes
    • node_filesystem_size_bytems{mount_point=PATH}
    • node_system_unit_state{name=}
    • node_vmstat_pswpin: 系统每秒从磁盘读到内存的字节数
    • node_vmstat_pswpout: 系统每秒钟从内存写到磁盘的总字节数

4.2 适用于主机监控的USE方法

  • USE是使用率(Utilization)、饱和度(Saturation) 和错误 (Error)的缩写,由Netflix的内核和性能工程师Brendan Gregg开发;
    • USE方法可以概括为:针对每个资源,检查使用率、饱和度和错误;
      • 资源:系统的一个组件,在USE中,它指的是一个传统意义上的物理服务器组件,如CPU、内存和磁盘等;
      • 使用率:资源忙于工作的平均时间,它通常用随时间变化的百分比进行表示;
      • 饱和度:资源排队工作的指标,无法再处理额外的工作;通常用队列长度表示错误:资源错误事件的计数;
    • 对CPU来说,USE通常意味着如下概念
      • CPU使用率随时间的百分比;
      • CPU饱和度,等待CPU的进程数;
      • 错误,通常对CPU不太有影响;
    • 对内存来说,USE的意义相似
      • 内存使用率随时间的百分比;
      • 内存饱和度,可通过监控swap进行测量;
      • 错误,通常不太关键;

4.3 简单实例

每台主机CPU在5分钟内的平均使用率

(1-avg(irate(node_cpu_seconds_total{mode=‘idle’}[5m])) by(instance)) * 100

在这里插入图片描述

#单位换算
node_memory_MemFree_bytes / (1024 * 1024)
#可用内存占用率
node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes * 100
#内存使用率
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) /
node_memory_MemTotal_bytes * 100
#磁盘使用率
(node_filesystem_size_bytes{mountpoint="/"} -
node_filesystem_free_bytes{mountpoint="/"})
/node_filesystem_size_bytes{mountpoint="/"} * 100
#阈值判断
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) /
node_memory_MemTotal_bytes > 0.95
#内存利用率是否超过80
( 1 - node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes ) * 100 > bool
80
prometheus_http_requests_total > bool 1000 #布尔值,当超过1000为1,否则为0
#注意:
对于比较运算符来说,条件成立有结果输出,否则没有结果输出
使用bool修改符后,布尔运算不会对时间序列进行过滤,而是直接依次瞬时向量中的各个样本数据与标量的比
较结果0或者1。从而形成一条新的时间序列。

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

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

相关文章

基于51单片机电子钟万年历LCD1602显示

51单片机的电子钟万年历LCD1602显示 &#x1f534; &#x1f535;51单片机的电子钟万年历LCD1602显示&#x1f534; &#x1f535;主要功能&#xff1a;&#x1f534; &#x1f535;讲解视频&#x1f534; &#x1f535;仿真图&#xff1a;&#x1f534; &#x1f535;程序&…

脏页刷新机制总结

1、Buffer Cache和Page Cache 一句话解释&#xff1a;Page Cache用于缓存文件的页数据&#xff0c;Buffer Cache用于缓存块设备&#xff08;磁盘&#xff09;的块数据。但由于磁盘都是由文件系统管理的&#xff0c;所以会导致数据会被缓存两次&#xff0c;因此现在Linux已经不再…

递归剪枝题

期中考终于考完了&#xff0c;整道题奖励下自己 我一北大同学问我的&#xff0c;说他递归超时了&#xff0c;叫我想一个办法 后面他说他加了个剪枝就过了&#xff0c;然后我自己尝试了一个方法&#xff1a; 就是先把城市按1到n排列&#xff0c;然后考虑互换&#xff0c;如果互…

【模拟开关CH440R】2022-1-20

资料模拟开关CH440芯片手册 - 百度文库 ch440R回来了&#xff0c;导通usb设备没问题&#xff0c;降压不影响。但是我发现个严重的问题&#xff0c;我的电路是直接通过4067控制ch440r接地&#xff0c;低电平&#xff0c;使能三个线路连一起的&#xff0c;邮箱的图您看看&#xf…

核药供应链创新:远大医药策略与明道云实践

摘要 文章首先介绍了远大医药是一家集药品制剂、医疗器械、抗肿瘤以及原料药、生物健康等业务于一体的综合型科技企业&#xff0c;在全球拥有 30 多家成员企业。接着提到核药供应链数字化场景的特点&#xff0c;包括管理严格、物流过程复杂等。 然后指出在核药业务数字化建设中…

C#,《小白学程序》第一课:初识程序,变量,数据与显示

曰&#xff1a;扫地僧练就绝世武功的目的是为了扫地更干净。 1 引言 编程只是一项技术&#xff0c;如包包子&#xff0c;不是什么高深的科学。 学习程序最不好的方法是先学习枯燥的语法。 学习程序主要是用代码解决问题。因此&#xff0c;我们抛开所有的语法与诸多废物&…

番外篇之矩阵运算

矩阵的运算代码&#xff08;加减乘除&#xff09;&#xff08;内有注释&#xff09; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define ROW 10 //定义行 #define COL 10 //定义列 //设置全局变量A矩阵的m代表实际矩阵的行数&#xff0c;n代表实际矩阵的列…

OSG粒子系统与阴影-雾效模拟(1)

虚拟现实中有很多效果&#xff0c;如雨效、雪效、雾效等&#xff0c;这些都可以通过粒子系统来实现。一个真实的粒子系统的模式能使三维场景达到更好的效果。 本章对OSG粒子系统的使用以及生成自定义粒子系统的方法进行了详细介绍最后还附带说明了阴影的使用方法。在实时的场景…

HTML新特性【缩放图像、图像切片、平移、旋转、缩放、变形、裁切路径、时钟、运动的小球】(二)-全面详解(学习总结---从入门到深化)

目录 绘制图像_缩放图像 绘制图像_图像切片 Canvas状态的保存和恢复 图形变形_平移 图形变形_旋转 图形变形_缩放 图形变形_变形 裁切路径 动画_时钟 动画_运动的小球 引入外部SVG 绘制图像_缩放图像 ctx.drawImage(img, x, y, width, height) img &#xf…

R语言——图解taxize,强烈推荐收藏关注,持续更新中

图解taxize 1. taxize分解思路1.1 图解说明 2. 针对不同数据库的函数组2.1 APGⅢ2.2 BOLD&#xff08;barcode of life data system&#xff09; 1. taxize分解思路 taxize可以帮助人们从许多数据库中获取信息。 由于要处理的数据库很多&#xff0c;导致taxize包含的功能函数…

一文教你开启真人3D手办生意

真人手办定制是现代数字化技术结合文化创意视角而诞生的一种新型消费场景。在3D技术的辐射之下&#xff0c;真人3D手办生产与销售的是产销合一的数字化产品&#xff0c;想要实现这种精准消费的高效化、规模化&#xff0c;既需要专业技术也需要在线平台&#xff0c;一旦通路达成…

Ubuntu18.4中安装wkhtmltopdf + Odoo16配置【二】

deepin Linux 安装wkhtmltopdf 1、先从官网的链接里下载linux对应的包 wkhtmltopdf/wkhtmltopdf 下载需要的版本&#xff0c;推荐版本&#xff0c;新测有效&#xff1a; wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 2、解压下载的文件 解压后会有一个wkhtmltox文件夹 3…

linux高级篇基础理论六(firewalld,防火墙类型,,区域,服务端口,富语言)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

『亚马逊云科技产品测评』活动征文|低成本搭建物联网服务器thingsboard

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 0. 环境 - ubuntu22&#xff08;注意4G内存勉强够&#xff0c;部署完…

【Linux】进程间通信——进程间通信的介绍和分类、管道、匿名管道、命名管道、匿名管道与命名管道的区别

文章目录 进程间通信1.进程间通信的介绍1.1目的和发展 2.进程间通信分类3.管道3.1匿名管道3.1.1匿名管道的原理&#xff08;文件角度&#xff09;3.1.2匿名管道的原理&#xff08;内核角度&#xff09;3.1.3管道读写规则3.1.4管道特点 3.2命名管道3.2.1创建命名管道3.2.2命名管…

Twincat使用:EtherCAT通信扫描硬件设备链接PLC变量

EtherCAT通信采用主从架构&#xff0c;其中一个主站设备负责整个EtherCAT网络的管理和控制&#xff0c;而从站设备则负责在数据环网上传递数据。 主站设备可以是计算机、工控机、PLC等&#xff0c; 而从站设备可以是传感器、执行器、驱动器等。 EL3102:MDP5001_300_CF8D1684;…

【文末送书】机器学习高级实践

2023年初是人工智能爆发的里程碑式的重要阶段&#xff0c;以OpenAI研发的GPT为代表的大模型大行其道&#xff0c;NLP领域的ChatGPT模型火爆一时&#xff0c;引发了全民热议。而最新更新的GPT-4更是实现了大型多模态模型的飞跃式提升&#xff0c;它能够同时接受图像和文本的输入…

OpenStack云计算平台-镜像服务

目录 一、镜像服务概览 二、安装和配置 1、先决条件 2、安全并配置组件 3、完成安装 三、验证操作 一、镜像服务概览 OpenStack镜像服务是IaaS的核心服务&#xff0c;如同 :ref:get_started_conceptual_architecture所示。它接受磁盘镜像或服务器镜像API请求&#xff0c;…

浏览器缓存控制讲解

缓存的作用 在你访问互联网中的任何资源其所产生的任何链路中的每一个节点几乎都会进行缓存&#xff0c;整个缓存体系和细节十分复杂。比如浏览器缓存&#xff0c;服务器缓存&#xff0c;代理服务器缓存&#xff0c;CDN缓存等。 但是缓存又十分重要&#xff0c;不可缺少&…

matlab三维地形图

matlab三维地形图 %%%%—————Code to draw 3D bathymetry—————————— %-------Created by bobo,10/10/2021-------------------- clear;clc;close all; ncdisp E:\data\etopo\scs_etopo.nc filenmE:\data\etopo\scs_etopo.nc; londouble(ncread(filenm,lon)); lat…