基于Grafana+Prometheus搭建可视化监控系统实践

news2024/12/4 16:34:14

基本介绍

Grafana:一个监控仪表系统,可以根据提供的监控数据,生产可视化仪表盘,同时也具有告警通知功能。这里的监控数据来源,目前主要以Prometheus为主(也支持其它数据源),每次展现仪表盘时,都会向Prometheus服务发送一个查询请求,从而拿到监控数据并构建可视化仪表盘。

Prometheus:主要负责存储和查询数据,并对Grafana的请求进行响应。

Prometheus如何采集数据?

有两种方式:pull以及push

pull:主动拉取,被监控机器需安装各类exporter(监控插件:node_exporter、mysql_exporter等),exporter以守护进程的方式运行,进行自动采集并将数据返回给prometheus。

push:被动推送,安装pushgateway,然后将数据组织成key value形式的metrics发送给pushgateway,然后再由pushgateway推送给Prometheus。

exporter的下载与使用

本文以node_exporter(监控两台linux机器)为例子,可以在官网进行下载。(地址:Download | Prometheus)

找到我们需要的node_exporter,进行下载。

下载完成后,在linux服务器输入rz,将安装包上传至服务器,然后对其进行解压。

tar xf node_exporter-1.7.0.linux-amd64.tar.gz -C /usr/local/            #解压至指定路径下
mv /usr/local/node_exporter-1.7.0.linux-amd64/ /usr/local/node_exporter #重命名

解压完毕后会发现有一个node_exporter可执行程序,我们可以在后面加上--help查看其语法,也可直接运行(默认监听9100端口)。

由于要求它在后台运行,这里为了方便推荐一款工具:screen,直接yum install -y screen进行下载即可。下载完成后输入screen,会进入后台,然后运行node_exporter,紧接着按住ctrl+a+d即可退出screen。(输入screen -ls可以查看以该方式运行的程序)

同理,由于我们演示监控两台机器,所以我们在另一台被监控机器,进行上述操作。

Prometheus与Grafana的下载与使用

这里为了方便,我们直接以docker容器方式进行运行。有关docker下载相关在前文[点击跳转]。(这两个安装在哪里都可以)。

#不指定tag时,会自动拉取最新版本镜像
docker pull prom/prometheus 
docker pull grafana/grafana

docker run -d --name prometheus -p 9090:9090 prom/prometheus #启动prometheus
docker run -d --name grafana -p 3000:3000 grafana/grafana    #启动grafana

将exporter添加到prometheus服务

接下来我们将exporter添加到promtheus服务,我们直接输入如下指令:

docker exec -it -u root prometheus sh #以root身份进入prom容器内部

打开其配置文件,并添加服务

vi /etc/prometheus/prometheus.yml

完毕后保存并退出,同时重启容器,使配置生效

接下来我们可以在浏览器通过ip+端口访问prometheus服务,此时我们可以看到我们监控的两台linux服务。(同理,也可以监控其它服务,如mysql、redis、elasticsearch等)

当然,我们也可以输入一些promQL语句进行查询监控数据

Grafana展示数据

为了使数据更加直观的展示,我们可以用Grafana来实现,通过ip+端口,访问grafana服务,默认初始账号与密码都是admin,登陆后会要求重置密码

进去后添加数据源

这里的地址填写我们的prometheus地址即可,这里我是部署在47.99.141.178机器上。

接下来我们就可以创建仪表盘了,可以自己创建,也可以直接导入模板使用,这里先演示直接导入模板使用

最后点击import导入即可。

Grafana制作面板

有时候仅仅依靠模板是无法满足实际业务需求,所以也需学会如何自己来制作面板。我们点击新建仪表盘,

点击后选择prometheus数据源,此时会出现如下界面:

Panel options模块

Tooltip模块

Legend模块

Axis模块

Graph styles模块

Standard options模块

Data links这块不咋使用,这里也不做讲解

Value mappings模块

Thresholds模块

制作完毕后保存即可,可以点击add选项,继续在仪表盘中添加相应面板。

面板的样式是非常多的,可以根据需求制作相应样式的面板。

变量的设置

我们还可以在仪表盘中添加一些变量,这就类似于我们在写代码时,使用变量,避免将代码写"死"。

在设置完毕变量后,我们就可以在我们的promQL语句中通过$,进行使用了。

将Grafana嵌入前端页面

我们可以通过使用iframe标签,将制作的grafana面板嵌入前端页面

如下所示,src中填入上方url:

<!DOCTYPE html>
<html>
  <body>
      <h1>grafana_test</h1>
      <iframe
      src="http://47.99.141.178:3000/d/cba6fca4-090c-415e-8394-d2f42d4cde63/new-dashboard?orgId=1&from=1706234620306&to=1706256220307"
      width="1250"
      height="850"
      frameborder="0"
    ></iframe>

    
  </body>
</html>

不过grafana默认是关闭通过iframe嵌入的,所以我们需要进入grafana容器,找到grafana.ini文件

docker exec -it -u root grafana bash # 以root身份进入grafana容器

vi打开后,找到allow_embedding设置,将其改为true,此时可以通过iframe进行嵌入到其它页面,但是会进行登录验证,要关闭登录验证,将 [auth.anonymous]中的enabled 设置也改为true。

(注意将前面的;也要去掉)

保存退出后,重启grafana容器即可。

此时就实现了嵌入到前端页面功能,并且去除了登录验证。(此时的grafana面板是没有edit编辑功能的)

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

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

相关文章

day10_面向对象

今日内容 零、 复习昨日 一、this关键字 二、构造方法 三、重载 零、 复习昨日 1 类和对象是什么关系? 类是模板,对象是实例对象是由类创建的 2 类中有什么?(类的成员) 成员属性(成员变量)成员方法 3 创建对象的语法? 类名 对象名 new 类名(); 4 调用对象属性的语法 对象.属…

CLion编辑器中文乱码

1.首先设置编码格式 都设置成utf-8 调整注册表 搜索regis

泽众云真机-机型集中化运维方案升级全面完成

2024年元月份&#xff0c;泽众云真机运维团队&#xff0c;经过几个月软硬件多轮安装调试&#xff0c;机型集中化运维方案升级全面完成。解决了云真机的机型集中化运维难题&#xff0c;方便了运营人员手机管理。 具体如下&#xff1a; 1、集中化运维&#xff0c;如服务器、PC、…

智能分析网关V4智慧冶金工厂视频智能监管方案

一、背景与需求 随着工业4.0的推进&#xff0c;冶金行业正面临着转型升级的压力。为了提高生产效率、降低能耗、保障安全&#xff0c;冶金智能工厂视频监管方案应运而生。该方案通过高清摄像头、智能分析技术、大数据处理等手段&#xff0c;对工厂进行全方位、实时监控&#xf…

svn和git的本质区别是什么

参考&#xff1a; https://blog.csdn.net/feiying0canglang/article/details/126550676 上边图中&#xff0c;跨越了区的箭头&#xff0c;它中间的区数据都会同步。例如&#xff1a;git checkout &#xff0c;它是将本地仓库数据更新到暂存区和工作区的。\ 理解 gitlab和svn都…

五金压铸ERP软件有什么用?能帮助企业处理哪些难点

不同类型的五金压铸产品有不同的规格、质量、销售渠道、价格策略等&#xff0c;日常经营管理过程中存在的难点复杂多样。 近些年社会可的发展进步也不断推动五金压铸行业管理模式的变更&#xff0c;现如今逐渐朝着智能化和信息化方向发展。而在这个时代背景之下&#xff0c;有…

Jellyfin影音服务本地部署并结合内网穿透实现公网访问本地资源

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

系统架构设计师教程(十六)嵌入式系统架构设计理论与实践

嵌入式系统架构设计理论与实践 16.1 嵌入式系统概述16.1.1 嵌入式系统发展历程16.1.2 嵌人式系统硬件体系结构16.2 嵌入式系统软件架构原理与特征16.2.1 两种典型的嵌入式系统架构模式16.2.2 嵌入式操作系统16.2.3 嵌入式数据库16.2.4 嵌入式中间件16.2.5 嵌入式系统软件开发环…

[BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)

第15天 名词解释 Cookie 是小型的文本文件&#xff0c;由网站发送到用户的浏览器&#xff0c;并存储在用户的设备上。Cookie 通常用于存储识别用户的信息&#xff0c;例如用户偏好、登录状态等。每当用户再次访问同一网站时&#xff0c;浏览器会将 Cookie 发送回服务器&#…

mysql8版本批量造4000个数据SQL

需求: 测试工作中修改单需要构造单元下4000个组合的数据,写个博客来记录,其他类似的可以举一反三。 具体sql: 实现1个产品1个单元下插入4000个组合数据 思路: 在MySQL 8中实现循环插入4000条具有不同主键的记录,可以使用AUTO_INCREMENT和循环插入的方式。下面是一个…

5.列表选择弹窗(BottomListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 从底部弹出的列表选择弹窗。 1.布局 <?xml version"1.0" encoding"utf-8" ?> <toolkit:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns…

Sublime的安装及汉化

sublime安装 官网sublime 点击Windows 下载参考&#xff1a;傻瓜式下载 sublime汉化 1&#xff09;安装 Sublime Text 4 成功后&#xff0c;点击菜单 【Tools】 -> 【Install Package Control】&#xff1b; 注意&#xff1a;安装包控件需要等待一会&#xff0c;点击可…

GitBook可以搭建知识库吗?有无其他更好更方便的?

在一个现代化的企业中&#xff0c;知识是一项宝贵的资产。拥有一个完善的企业知识库&#xff0c;不仅可以加速员工的学习和成长&#xff0c;还能提高工作效率和团队协作能力。然而&#xff0c;随着企业不断发展和扩大规模&#xff0c;知识库的构建和管理变得更加复杂和耗时。 |…

React中使用LazyBuilder实现页面懒加载方法一

前言&#xff1a; 在一个表格中&#xff0c;需要展示100条数据&#xff0c;当每条数据里面需要承载的内容很多&#xff0c;需要渲染的元素也很多的时候&#xff0c;容易造成页面加载的速度很慢&#xff0c;不能给用户提供很好的体验时&#xff0c;懒加载是优化页面加载速度的方…

[Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法

一、vim及其三种模式的简单介绍 Vim是一个类似于Vi的文本编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面,如多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等…

如何使用 WebRTC 与 Kurento 建立视频会议 App

本文作者 WebRTC Ventures 工程师。在 RTC 2018 实时互联网大会上&#xff0c;WebRTC Ventures 的资深软件工程师&#xff0c;将围绕 WebRTC 开发带来经验分享。欢迎访问RTC 开发者社区&#xff0c;与更多WebRTC开发者交流经验。 了解 WebRTC 如何工作的一种简单方式是通过学习…

SpringBoot的默认组件扫描

本篇博客主要探究&#xff1a;为什么SpringBoot项目中我们没有配置组件扫描的包&#xff0c;为什么它会默认扫描启动类所在的包&#xff1f; 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口&#xff1a; 我们可以观察到&#xff0c;HelloController这个类处在…

如何做接口测试?看完这个图让你清楚了解接口测试

01 通用的项目架构 02 什么是接口 接口&#xff1a;服务端程序对外提供的一种统一的访问方式&#xff0c;通常采用HTTP协议&#xff0c;通过不同的url&#xff0c;不同的请求类型&#xff08;GET、POST&#xff09;&#xff0c;不同的参数&#xff0c;来执行不同的业务逻辑…

大数据学习之Redis、从零基础到入门(二)

二、Redis安装配置 1. VMWare本地虚拟机 VMWare准备的为64位 查看自己的VMWare是32位还是64位 getconf LONG_BIT 2. Redis的安装 2.1 系统选择 选择Linux系统 2.2 Linux版安装 2.2.1 Linux环境安装Redis必须先具备gcc编译环境 ①什么是gcc gcc是linux下的一个编译程序&…

应急响应-Windows-进程排查

进程&#xff08;process&#xff09;是计算机中的程序关于某数据集合上的一次运动活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结果的基础。在早期面向进程结构中&#xff0c;进程是线程的容器。无论是在Windows系统还是Linux系统中&#xff0c…