初识:prometheus

一、概述

Prometheus本身为一种时序数据库(TSDB),还具备开源的监控、报警、时间序列、数据库的组合。其设计用于进行目标(target)监控的关键组件。

  • TSDB:pro通过采集的样本以时间序列的方式保存在内存(TSDB时序数据库)中并定时保存到硬盘中(持久化)。
  • target:主要指可输出、产生指标数据的组件/对象,包括但不限于主机、应用、服务、K8S ingress(逻辑组件)等
    小结:能正常输出指标数据的对象称为target 或网络端点。
  • 时序数据:一段时间内通过《重复》测量而获得的观测值的集合,并且可将这些观测值绘制与图形之上,以数据轴(纵轴)和时间轴(横轴)来表示随着时间流逝而产生的“渐变”变化(类似与股票)。

二、特性

  • 多维的数据模型(基于时间序列的Key、value键值对)
  • 灵活的查询和聚合语言PromQL
  • 提供本地存储和分布式存储
  • 通过基于HTTP和HTTPS的Pull模型采集时间序列数据(pull数据的拉取,时间序列:每段时间点的数据值指标,持续性的产生。横轴标识时间,纵轴为数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
  • 可利用Pushgateway (Prometheus的可选中间件)实现Push模式
  • 可通过动态服务发现或静态配置发现目标机器(通过consul自动发现和收缩)
  • 支持多种图表和数据大盘

三、场景

一、可以使用的场景

1、Prometheus可以很好地记录任何纯数字时间序列。它既适用于以机器为中心的监视,也适用于高度动态的面向服务的体系结构的监视。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

2、Prometheus是为可靠性而设计的,它是您在中断期间监控使用的系统,可让您快速诊断问题。每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您可以依靠它,并且无需设置广泛的基础结构即可使用它。

二、不可使用的场景

1、普罗米修斯重视可靠性。即使在故障情况下,您始终可以查看有关系统的可用统计信息。如果您需要100%的准确性(例如按请求计费),则Prometheus并不是一个不错的选择,因为所收集的数据可能不会足够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余的监视。

2、数据准确性要求极高的场景,不适合使用promeetheus。

四、实验

一、实验环境

prometheus	192.168.226.128	prometheus
server1	    192.168.226.129	node_exporter
server2	    192.168.226.130 node_exporter
#部署环境
[root@localhost ~]# hostnamectl set-hostname prometheus #另两台:server1/2
[root@localhost ~]# su
[root@prometheus ~]# systemctl stop firewalld
[root@prometheus ~]# systemctl disable firewalld
[root@prometheus ~]# setenforce 0
[root@prometheus ~]# cat /etc/resolv.conf
nameserver 114.114.114.114
[root@prometheus ~]# ntpdate ntp.aliyun.com
21 Sep 19:41:10 ntpdate[83693]: adjust time server 203.107.6.88 offset 0.003456 sec

二、安装Prometheus并启动

#Prometheus端
[root@prometheus ~]# cd /opt
[root@prometheus opt]# rz
#上传prometheus-2.27.1.linux-amd64.tar
[root@prometheus opt]# tar zxvf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local
[root@prometheus prometheus-2.27.1.linux-amd64]# ./prometheus #启动
  • 查看服务是否启动
    在这里插入图片描述

三、访问web

  • 访问192.168.238.150:9090,表达式浏览器
    在这里插入图片描述
  • 查看采集数据
    在这里插入图片描述

四、部署其他监控节点

#两台server
[root@server1 ~]# cd /opt
[root@server1 opt]# rz
#上传node_exporter-1.1.2.linux-amd64.tar
[root@server1 opt]# tar zxvf node_exporter-1.1.2.linux-amd64.tar.gz
[root@server1 opt]# cd node_exporter-1.1.2.linux-amd64
[root@server1 node_exporter-1.1.2.linux-amd64]# cp node_exporter /usr/local/bin #复制命令让系统可以识别
[root@server1 node_exporter-1.1.2.linux-amd64]# ./node_exporter #启动

在这里插入图片描述

#Prometheus端
[root@prometheus ~]# vim /usr/local/prometheus-2.27.1.linux-amd64/prometheus.yml #进入prometheus主配置文件;配置静态发现

在这里插入图片描述

五、访问http://192.168.238.150:9090

在这里插入图片描述
在这里插入图片描述

六、表达式浏览器常规使用

###CPU使用总量
node_cpu_seconds_total

###计算过去5分钟内的CPU空闲速率
##PromQL: 
irate(node_cpu_seconds_total{mode="idle"}[5m])
解析:
irate:速率计算函数(灵敏度非常高)
node_cpu_seconds_total:node节点CPU使用总量(指标)
mode="idle" 空闲指标(标签)
5m:过去的5分钟内,所有CPU空闲数的样本值,每个数值做速率运算
{mode="idle"} :整体称为标签过滤器

###每台主机CPU在5分组内的平均使用率
##PromQL:
(1- avg (irate(node_cpu_seconds_total{mode='idle'}[5m]))by (instance))* 100
解析:
avg:平均值
avg (irate(node_cpu_seconds_total{mode='idle'}[5m]):可以理解为CPU空闲量的百分比
by (instance):表示的是所有节点

###查询1/5/15分钟平均负载
node_load1 > on (instance) 2 * count (node_cpu_seconds_total{mode='idle'}) by(instance)
node_load5 > on (instance) 2 * count (node_cpu_seconds_total{mode='idle'}) by(instance)
node_load15  > on (instance) 2 * count (node_cpu_seconds_total{mode='idle'}) by(instance)

###内存使用率
node_memory_MemTotal_bytes
node_memory_MemFree_bytes
node_memory_Buffers_bytes
node_memory_Cached_bytes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值