Prometheus与Grafana的完美结合:打造强大的监控与可视化平台

news2024/10/6 1:47:39

目录

一、Prometheus简介

1.1、Prometheus基本介绍

1.2、Prometheus监控原理

1.3、Prometheus 的局限性

二、部署Prometheus

2.1、使用apt或者yum安装

2.2、基于官方提供的二进制文件安装

2.3、基于docker镜像直接启动或通过docker-compose编排

2.4、基于Operator部署在Kubernetes环境

2.5、Prometheus配置文件主要参数

2.6、部署Prometheus服务监控端

2.6.1、下载最新版Prometheus

2.6.2、解压文件

2.6.3、编辑service文件

2.6.4、启动Prometheus服务

​编辑

2.6.5、访问Prometheus的web界面

2.7、部署node_exporter

2.7.1、下载node_exporter的二进制文件

2.7.2、解压文件

2.7.3、编辑service文件

​编辑

2.7.4、启动node_exporter

2.8、在Prometheus Server上添加node节点

2.8.1、编辑prometheus的配置文件

​编辑

2.8.2、检查prometheus.yml文件格式

2.8.3、热加载prometheus配置

2.8.4、访问prometheus页面,查看node信息

2.9、node_exporter 的PromQL查询语句

2.10、node_exporter自定义指标

2.10.1、修改node_exporter的service文件

2.10.2、编写监控脚本

2.10.3、检查自定义指标

三、部署Grafana

3.1 、grafana安装

3.1.1、grafana安装

3.1.2、添加数据源


Prometheus

1.1Prometheus

Prometheus是基于Go语言开发的一套开源的监控、告警和时间序列数据库的组合,是由 SoundCloud公司开发(2012年)的开源监控系统。

Prometheus2016年加入CNCFCloud Native Computing Foundation ,云原生计算基金会),201889Prometheus成为CNCFKubernetes

之后毕业的第二个项目,它可以监控主机,服务,容器,支持多种exporter采集数据,还支持 pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群,Pormetheus在容器 和微服务领域中得到了广泛应用,其主要优缺点如下:

  1. 使用key-value的多种维度(多个角度、多个层面、多个方面)格式保存数据,支持通过多个 维度对数据进行查询
  2. 使用TSDB数据库存储数据:TSDB性能好,存储成本低
  3. 支持第三方dashboard实现更绚丽的图形界面,如grafana
  4. 组件是模块化的,Prometheus Server/Exporter/Alertmanager组件
  5. 不依赖存储,数据可本地保存也可以远程保存
  6. 平均每个采样点占3.5bytes,且一个Pometheus server可以处理数百万级别的metrics指标数 据
  7. 支持静态配置和自动化服务发现(基于consul等方式动态发现被监控的目标服务)
  8. 强大的数据查询语句(PromQL/Prometheus Query Language ),还提供http询接口
  9. 数据可以直接进行算术运算
  10. 易于横向伸缩
  11. 众多官方和第三方的expoter(数据导出器)实现不同的指标数据收集

1.2Prometheus

Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标 (Target),并通过每个目标上的指标 exporter 来采集(Scrape)指标数据;

Prometheus Server 内置一个基于文件的时间序列存储来持久存储指标数据,用户可使用 PromQL 口来检索数据,也能够按需将告警需求发往 Alertmanager 完成告警内容发送; 一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到 Server 端,它们一 般会采用推送(Push)方式输出指标数据, Prometheus 借助于 Pushgateway 收这些推送的 数据,进而由 Server 端进行抓取

Prometheus server 把采集到的监控指标数据通过 TSDB 储到本地 HDD/SSD 。 Prometheus 采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的告警通知发送到 Alertmanager

Alertmanager 通过配置报警接收方,发送报警到邮件、钉钉或者企业微信等。 Prometheus 自带的 Web UI 界面提供 PromQL 查询语言,可查询监控数据。 Grafana 可接入 Prometheus 数据源,把监控数据以图形化形式展示出。

1.3Prometheus

Prometheus 是一款指标监控系统,不适合存储事件及日志等;它更多地展示的是趋势性的监 控,而非精准数据;

Prometheus 认为只有最近的监控数据才有查询的需要,其本地存储的设计初衷只是保存短期 (例如一个月)数据,因而不支持针对大量的历史数据进行存储;

若需要存储长期的历史数据,建议基于远端存储机制将数据保存于 InfluxDB OpenTSDB 等系 统中;

Prometheus 的集群机制成熟度不高,可基于 Thanos Cortex 实现 Prometheus 群的高可用 及联邦集群。

Prometheus

Prometheus可以通过不同的方式安装部署Prometheus监控环境,实际生产环境中只需要根据实 际需求选择其中一种方式部署即可,无论使用哪一种方式安装部署Prometheus server,以后的 使用都是一样的。

2.1使aptyum

~# apt install prometheus
~# yum install prometheus

2.2

https://prometheus.io/download

2.3docker镜像直接启动或通过docker-compose

https://prometheus.io/docs/prometheus/latest/installation

2.4OperatorKubernetes

GitHub - prometheus-operator/kube-prometheus: Use Prometheus to monitor Kubernetes and applications running on Kubernetes

2.5Prometheus

--config.file="prometheus.yml" #指定配置文件

--web.listen-address="0.0.0.0:9090" #指定监听地址

--storage.tsdb.path="data/" #指定数存储目录 --storage.tsdb.retention.size=B,KB,MB,GB,TB,PB,EB #指定block大小,默认512MB

--storage.tsdb.retention.time= #数据保存时长,默认15天

--query.timeout=2m #最大查询超时时间

--query.max-concurrency=20 #最大查询并发数

--web.read-timeout=5m #最大空闲超时时间

--web.max-connections=512 #最大并发连接数

--web.enable-lifecycle #启用API动态加载配置功能

2.6Prometheus

这里我使用官方二进制进行安装部署

2.6.1Prometheus

~# wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz

2.6.2

~# tar zxvf prometheus-2.53.2.linux-amd64.tar.gz -C /usr/local/
~# ln -sv /usr/local/prometheus-2.53.2.linux-amd64 /usr/local/prometheus

2.6.3service

创建Prometheusservice文件

~# vim /usr/lib/systemd/system/prometheus.service
 #写入
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=root
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

2.6.4Prometheus

~# systemctl daemon-reload && systemctl start prometheus
~# systemctl status prometheus

2.6.5访Prometheusweb

浏览器输入http://PROM_IP:9090能显示如下信息,表示prometheus server部署成功

2.7node_exporter

node-exporter简介

node-exporter收集当前机器的系统数据,采用prometheus官方提供的exporter node-exporter部署

2.7.1node_exporter

~# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz

2.7.2

~# tar zxvf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/
~# ln -sv /usr/local/node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/node_exporter

2.7.3service

创建node_exporterservice文件

~# vim /usr/lib/systemd/system/node_exporter.service
#写入
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

2.7.4node_exporter

~# systemctl daemon-reload && systemctl start node_exporter

2.7.5node_exporter

~# systemctl status node_exporter

访问node_exporterweb界面

浏览器输入http://NODE_EXPORTER_IP:9100能显示如下信息表示node_exporter服务部署成 功

2.8Prometheus Servernode

2.8.1prometheus

/usr/local/prometheus/prometheus.yml件中添加节点信息

~# vim /usr/local/prometheus/prometheus.yml
添加
   - job_name: "node_exporter"
     static_configs:
     - targets: ["172.16.1.65:9100"]

2.8.2prometheus.yml

2.8.3prometheus

2.8.4访prometheusnode

2.9node_exporter PromQL

Prometheusweb页面,点击Graph,在输入框输入PromQL,执行后可以点击下面的Graph 查看图像

一些常用PromQL如下

系统启动时间

node_boot_time_seconds

CPU核数

count(node_cpu_seconds_total{mode='system'}) by (instance)

计算 CPU 使用率

计算内存使用率

(1- (node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_MemFree_bytes) / node_memory_MemTotal_bytes) * 100

计算磁盘使用率

(1 - node_filesystem_avail_bytes{fstype=~"ext4|xfs"} /
node_filesystem_size_bytes{fstype=~"ext4|xfs"}) * 100

网络带宽

下行带宽

sum by(instance) (irate(node_network_receive_bytes_total{device!~"bond.*?|lo"}[5m]))

上行带宽

sum by(instance) (irate(node_network_transmit_bytes_total{device!~"bond.*?|lo"}[5m]))

2.10node_exporter自定义指标

node_exporter内置的采集指标不能满足需求,我们可以自定义一些采集指标,方法如下

2.10.1node_exporterservice

~# vim /usr/lib/systemd/system/node_exporter.service

2.10.2

创建上一步添加的目录,并在该目录下编写监控脚本,脚本内容随意,执行结果输出到.prom后 缀的文件中

~# mkdir -pv /usr/local/node_exporter/custom_metrics
~# cd /usr/local/node_exporter/custom_metrics
~# vim up-custom-metrics.sh

脚本示例(实时获取系统启动时间和内存空闲大小,并输出到metrics1.prommetrics2.prom两 个文件):

#!/bin/bash
UPTIME=`cat /proc/uptime | awk '{print $1}'`
MemFree=`cat /proc/meminfo | grep MemFree | awk '{print $2}'`
echo "uptime ${UPTIME}" > /usr/local/node_exporter/custom_metrics/metrics1.prom
echo "MemFree ${MemFree}" > /usr/local/node_exporter/custom_metrics/metrics2.prom

2.10.3

node_exporterweb界面能查询到如下信息说明自定义的指标已被成功收集

                         

 

Grafana

rometheus这个监控软件的展示界面实在是有些难看,所以换一个展示方式:GrafanaGrafana是一个开源的度量分析和可视化工具(没有监控功能),可以通过将采集的数据分析, 查询,然后进行可视化的展示,并能实现报警。

3.1 、grafana

3.1.1grafana

软件包获得

官方网站: grafana:Grafana: The open observability platform | Grafana Labs

启动成功后通过浏览器查看grafana的页面,初始默认用户密码admin/admin

修改中文界面

3.1.2

过主页进入DATA SOURCE

选择Prometheus

这里写PrometheusIP和端口,其他选项先默认即可

点击最下方的Save & test,显示Successfully queried the Prometheus API表示连接成功

返回主页进入DASHBOARDS

这里可以导入一些好看的可视化模版

3种方式可以导入模版,1上传json文件,2.通过ID直接导入 3.直接键入json内容

可以通过grafana官网查找自己想要的模版

选中一个自己想要的,可以通过ID和下载josn文件的方式获取

比如,使用ID直接导入

上传Json文件的方式


欢迎关注作者的公众号,公众号每天分享运维干货文章 

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

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

相关文章

使用TensorBoard可视化模型

目录 TensorBoard简介 神经网络模型 可视化 轮次-损失曲线 轮次-准确率曲线 轮次-学习率曲线 迭代-评估准确率曲线 迭代-评估损失曲线 TensorBoard简介 TensorBoard是一款出色的交互式的模型可视化工具。安装TensorFlow时,会自动安装TensorBoard。如图: TensorFlow可…

TI 毫米波雷达——ADC Buffer的交错与非交错采样

TI 毫米波雷达——ADC Buffer的交错与非交错采样 写在前面ADC Buffer 数据存储形式交错采样 (Interleaved mode)1. 4 Rx 通道存储形式2. 3 Rx 通道存储形式3. 2 Rx 通道存储形式 —— RX0/RX1 Enable only4. 1 Rx 通道存储形式 —— RX0 Enable only 非交错采样 (Non-Interleav…

C++:STL常用算法随笔

主要的头文件#include <algorithm> < functional> <numeric> 遍历算法&#xff1a; for_each、transform(搬运容器到另一个容器中 ) void print1(int val) {cout << val <<" "; } for_each (v.begin(),v.end() , print1) 或者用仿…

NVIDIA网卡系列之ConnectX-6 DX规格信息(200G-PCIe 4.0x16-8PF1000VF-2019年发布)

背景 NVIDIA ConnectX-6是最大支持200G的产品&#xff0c;有DX LX等系列。LX一般是25G比较便宜。 核心关键点 200GbpsPCIe 4.0&#xff0c;最大lane: x16 (4.0的lane速 16GT/s * 16 256T/s&#xff0c;所以支持的是200G的网卡用PCIe4.0)QSFPPF&#xff0c;VF数量&#xff1…

Linux 传输层UDP

文章目录 一、再谈端口号查看知名端口号和网站的强关联信息&#xff1f;一个进程是否可以bind多个端口号&#xff1f;一个端口号是否可以被多个进程bind&#xff1f;理解进程和端口的关系&#xff1f; 二、UDP协议协议格式16位源端口号&#xff1a;16位目的端口号&#xff1a;1…

双指针:滑动窗口

题目描述 给定两个字符串 S 和 T&#xff0c;求 S 中包含 T 所有字符的最短连续子字符串的长度&#xff0c;同时要求时间复杂度不得超过 O(n)。 输入输出样例 输入是两个字符串 S 和 T&#xff0c;输出是一个 S 字符串的子串。样例如下&#xff1a; 在这个样例中&#xff0c…

计算机网络:物理层 —— 物理层下的传输媒体

文章目录 传输媒体导向性媒体同轴电缆双绞线光纤光纤分类中心波长光纤规格光纤的优缺点 非导向性媒体ISM 频段无线电波微波激光红外线可见光 传输媒体 传输媒体是计算机网络设备之间的物理通路&#xff0c;也称为传输介质或传输媒介&#xff0c;并不包含在计算机网络体系结构中…

408笔记|随笔记录|自用|2

文章目录 cache和TLB查找总结 接上篇选择题 打开同一个文件共享同一个内存索引结点 cache和TLB cache由SRAM组成&#xff0c;TLB通常由相联存储器组成&#xff0c;可以由SRAM组成。 DRAM需要不断刷新&#xff0c;性能比较低。 TLB缺失可以由软件或者硬件处理&#xff0c;cac…

JC系列CAN通信说明

目录 一、CAN协议二、指令格式三、通信接线3.1、一对一通信3.2、组网通信 四、寄存器定义五、指令说明4、读取电源电压5、读取母线电流6、读取实时速度8、读取实时位置10、读取驱动器温度11、读取电机温度12、读取错误信息32、设定电流33、设定速度35、设定绝对位置37、设定相对…

Java-进阶二

ArrayList的源代码分析&#xff08;扩容原理&#xff09; 1 使用空参构造的集合&#xff0c;在底层创建一个容量为0的数组。2 添加第一个元素时&#xff0c;底层会扩容创建一个容量为10的数组。3 存满时会扩容1.5倍。4 如果一次添加多个元素&#xff0c;1.5倍还放不下&#xff…

机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+

时间序列在回归预测的领域的重要性&#xff0c;不言而喻&#xff0c;在数学建模中使用及其频繁&#xff0c;但是你真的了解ARIMA、AR、MA么&#xff1f;ACF图你会看么&#xff1f;&#xff1f; 时间序列数据如何构造&#xff1f;&#xff1f;&#xff1f;&#xff0c;我打过不少…

提升客户满意度,数字化售后工单系统的实施策略

售后工单系统助企业优化运营&#xff0c;提升客户满意度。涵盖技术支持、维修服务、客户反馈管理等应用场景。ZohoDesk凭高效定制成企业首选。未来趋势包括AI、物联网、AR/VR技术集成&#xff0c;提升服务智能化水平。 一、售后工单系统的重要性 售后工单系统是企业用来管理和…

基于Java的GeoTools对Shapefile文件属性信息深度解析

目录 前言 一、Shapefile的属性列表信息 1、属性表格信息 2、属性表格包含的要素 二、GeoTools对属性表格的解析 1、常规解析方法 2、基于dbf文件的属性信息读取 三、总结 前言 ESRI Shapefile&#xff08;shp&#xff09;&#xff0c;或简称shapefile&#xff0c;是美…

SQL优化 - 排序

文章目录 排序和索引降序索引 FilesortORDER BY 顺序问题ORDER BY LIMIT 排序和索引 如果ORDER BY操作使用了索引&#xff0c;那么就可以避免排序操作&#xff0c;因为索引本身就是按索引 key 排好序的。那什么情况下&#xff0c;ORDER BY会走索引呢&#xff1f; 例如&#…

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结

目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值&#xff08;medi…

CF2013E Prefix GCD

【题目大意】 给定一个长度为 n n n 的数列 a 1 … n a_{1 \dots n} a1…n​&#xff0c;你可以将 a 1 … n a_{1 \dots n} a1…n​ 按照任意顺序进行重排&#xff0c;使得&#xff1a; ∑ i 1 n gcd ⁡ { a 1 , a 2 , a 3 , … , a n } \sum\limits_{i1}^{n}\gcd\left \{…

10.5学习

1.GateWay GateWay⽬标是取代Netflflix Zuul&#xff0c;它基于Spring5.0SpringBoot2.0WebFlux等技术开发&#xff0c;提供统⼀的路由⽅式&#xff08;反向代理&#xff09;并且基于 Filter(定义过滤器对请求过滤&#xff0c;完成⼀些功能) 链的⽅式提供了⽹关基本的功能&…

探索 Python 虚拟环境的奥秘:virtualenv 的魔法世界

文章目录 探索 Python 虚拟环境的奥秘&#xff1a;virtualenv 的魔法世界背景&#xff1a;为何选择 virtualenv&#xff1f;虚拟环境的守护者&#xff1a;virtualenv 是什么&#xff1f;安装 virtualenv&#xff1a;简单几步&#xff0c;开启隔离之旅掌握 virtualenv 的基本用法…

Relu激活

ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数 是卷积神经网络&#xff08;CNN&#xff09;以及许多深度学习模型中最常用的激活函数之一。它的主要作用是引入非线性&#xff0c;使模型能够学习和表达更复杂的特征。以下是对ReLU激活函数的详细解释。 1. ReLU的…

C语言进阶版第16课—自定义类型:结构体

文章目录 1. 结构体类型的声明和初始化2. 结构体自引用3. 结构体内存对齐3.1 结构体内存对齐规则3.2 修改默认对齐数 4. 结构体传参4. 结构体实现位段5. 位段使用的注意事项 1. 结构体类型的声明和初始化 结构体在使用之前都要对其类型进行声明&#xff0c;关键字是struct&…