当前位置: 首页 > news >正文

【服务器监控】grafana+Prometheus+node exporter详细部署文档

我们在进行测试时,不可能一直手动看着服务器的性能消耗,这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafana+Prometheus+nodeExporter的组合用于监控服务器。

简单介绍:

grafana:看板工具,所有采集的性能数据都会展示在这个看板上,官网: link
Prometheus: 监控系统,数据的采集、存储、查询等主要功能都是在它这里,参考文档: link
node_exporter:其是Prometheus的一个采集组件,可以用来采集机器上的数据,并暴露接口给Prometheus,以此将数据传过去。
这是prometheus官网的架构图,可以参考这个看一下
在这里插入图片描述
我这里简单概述一下我们使用到的功能,即node_exporter采集机器节点上的性能数据,并将数据传给Prometheus处理,grafana再从Prometheus那里获取数据展示在看板上。(exporter有多种类型,比如采集容器的,mysql的,这里node_exporter直接是采集整个机器的)
本文grafana和Prometheus是使用docker安装部署的,如果机器上未装docker,可参考链接: link
本文为最新的安装流程,可直接按照该流程安装部署。

1.安装grafana

命令为:

docker run -d -p 3000:3000 --name=grafana grafana/grafana-oss

在这里插入图片描述

2.安装Prometheus

1.配置Prometheus的配置文件

mkdir -p /opt/monitor/prometheus
tee /opt/monitor/prometheus/prometheus.yml <<- 'EOF'
global:# 拉取规则scrape_interval: 10s# 执行规则频率evaluation_interval: 10sscrape_configs:- job_name: prometheus  # 任务名static_configs:- targets: ['localhost:9100']  # 地址和端口,注意如果是docker安装的话,这个loalhost要替换成ip地址
EOF

在这里插入图片描述
这里的地址如果是采集本机的,写localhost即可,要是采集其它机器的,可以填对应的ip(这里的端口不是9090,而是9100,与下面的node_exporter对应的;而且如果是docker安装的话,这个loalhost要替换成机器的ip地址,不然容器内部根据localhost可识别不了机器实际的ip)

2.用配置文件部署启动Prometheus

docker run -d -p 9090:9090 -v /opt/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name=prometheus prom/prometheus

在这里插入图片描述

3.安装node_exporter

这里安装node_exporter是手动安装的,为什么不用docker直接安装呢,这是因为docker安装的exporter是在容器里面的,从容器里采集机器本机的数据的时候并不完全,有时会导致和实际数据相差较大(本人已踩过坑),这里建议手动安装到机器上。
下载地址: link
在这里插入图片描述
直接下载下来传到机器上并解压
在这里插入图片描述
然后我们配置服务启动项

tee /etc/systemd/system/node_exporter.service <<- 'EOF'
[Unit]
Description=node_exporter
After=network.target[Service]
ExecStart=/opt/monitor/node_exporter/node_exporter --web.listen-address=:9100[Install]
WantedBy=multi-user.target
EOF

在这里插入图片描述
配置完成后,我们启动服务

systemctl enable node_exporter  # 不是root用户前面都加一下sudo
systemctl start node_exporter
systemctl status node_exporter

在这里插入图片描述

4.监控服务串联

至此,我们各个模块都是各自安装完了,接下来我们把它们连成一个整体,首先看下node_exporter和Prometheus能否正常访问。

node exporter和Prometheus

查看node_exporter:可以浏览器直接访问http://192.168.238.128:9100/,这里192.168.238.128就是我linux机器的地址
在这里插入图片描述
显示无法访问。。。排查了一下,防火墙忘记关了。自己内网用的机器平时可以把防火墙关了(docker安装的服务端口未被防火墙限制,手动安装的服务端口会被限制)
在这里插入图片描述
这时再重新访问下
在这里插入图片描述
在这里插入图片描述
这里就是其采集的信息,可以看出采集服务已正常可用了。
然后我们看下Prometheus,浏览器直接访问http://192.168.238.128:9090/
在这里插入图片描述
也没问题,我们在上面输入框输点东西试一下数据能不能传上来

100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))

在这里插入图片描述
可以看出数据已经传上来了,这里时间不太对,应该是时区的问题吗,暂时不用管。至此,node exporter和Prometheus的对接正常了。

grafana配置

然后我们登录grafana:http://192.168.238.128:3000/
在这里插入图片描述
这里初始用户名密码是admin/admin,登录后可以修改下密码,grafana这里我们主要是配置下数据源以及展示模版,因为Prometheus那里的数据还没有和grafana对接,而且展示的数据也未经进一步处理,展示效果一般。

配置数据源:

进去找一下data sources,几个版本的grafana位置是不一样的,这个自己找一下即可

在这里插入图片描述
这里选择Prometheus
在这里插入图片描述
配置页面配置下名称(可使用默认的),以及连接的url,这个就是Prometheus的地址和端口,即我们上面访问的http://192.168.238.128:9090/
在这里插入图片描述
其他的默认即可,最后点击这个save&test,连接正常会弹出绿色的提示
在这里插入图片描述
到这里数据源就配置完成了。

导入监控模版:

这时候的数据都是Prometheus处理过的,虽然也有图表,但是比较简单,我们可以导入一个看板的模版,使其展示更加丰富,更加友好。(也可以自己写新的)
我们访问https://grafana.com/grafana/dashboards/这个网址,上面有已有的模版,可以查看下哪个适合我们

在这里插入图片描述
在这边搜索node exporter可以搜索出所有node exporter的模版
在这里插入图片描述
这里我们就选用第一个,点击进去
在这里插入图片描述
这里有两个选项,一个是复制id,一个是下载json,这里我们直接复制id好了。这个json其实就是模版文件了,但是我们也可以用id来自动导入。
然后我们进入自己搭建的grafana页面,点击这个import(各个版本的UI略有不同,按键位置可能也不同)
在这里插入图片描述
这里输入刚刚复制的id,然后点击load
在这里插入图片描述
加载完成后进入这个页面
在这里插入图片描述
这里选我们刚刚配好的数据源
在这里插入图片描述
然后点击import,就跳转到看板页面了,如果页面没有数据,可查看左上角这几个选项是不是正确;或者可以等一会,也有可能数据还没有上传上来。
在这里插入图片描述
至此,监控服务就部署好了,无论是做性能还是可靠性,我们可以对服务器进行长时间监测了。

问题记录:

实际部署时,也遇到了一些其他问题,这里记录下:
1.导入Node Exporter Full监控模版(id为1860)时,grafana一直报找不到方法,这个主要是1860这个模板和grafana当前版本不兼容,更新grafana即可。
2.监控数据不准确的问题,这个上面已经提到,解决办法是node_exporter手动直接安装在服务器上。
3.Prometheus可添加多个监控节点,网络能正常连通即可,修改Prometheus配置文件后需重启下服务。

相关文章:

【服务器监控】grafana+Prometheus+node exporter详细部署文档

我们在进行测试时&#xff0c;不可能一直手动看着服务器的性能消耗&#xff0c;这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafanaPrometheusnodeExporter的组合用于监控服务器。 简单介绍&#xff1a; grafana&#xff1a;看板工具&#xff0c;所有采集的…...

JavaScript中todolist操作--待办事项的添加 删除 完成功能

效果图 在文本框中输入内容点击添加按钮会在下面生成 添加功能 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…...

Windows中MySQL8.3.4 MSI版本——详细安装教程

一、下载MySQL安装文件。 下载地址&#xff1a;MySQL官网 进入后点击下面的MySQL社区版下载 点击MySQL Comunity Server。 我这里选择的是版本8.4.3LTS版本&#xff0c;在线对应的msi文件。 点击No thanks,直接下载。 二、安装MySQL 2.1、双击刚刚下载好的msi文件&#xff0c;…...

MySQL-DDL之数据库操作

文章目录 一. 创建数据库1. 直接创建数据库&#xff0c;如果存在则报错2. 如果数据库不存在则创建3. 创建数据库时设置字符集4. 栗子 二. 查看数据库1. 查看数据库 三. 删除数据库1. 删除数据库 四. 使用数据库1. 使用数据库2. 查看正在使用的数据库 数据定义语言&#xff1a;简…...

Python 笔记之进程通信

当需要创建的子进程数量不多时&#xff0c;可以直接利用multiprocessing中的Process动态生成多个进程 但是如果是上百个或者上千个目标&#xff0c;手动去创建进程的工作量很大&#xff0c;此时就可以利用到Multiprocessing模块提供的Pool方法 初始化pool时&#xff0c;可以指定…...

【Transformer序列预测】Pytorch中构建Transformer对序列进行预测源代码

Python&#xff0c;Pytorch中构建Transformer进行序列预测源程序。包含所有的源代码和数据&#xff0c;程序能够一键运行。此程序是完整的Transformer&#xff0c;即使用了Encoder、Decoder和Embedding所有模块。源程序是用jupyterLab所写&#xff0c;建议分块运行。也整理了.p…...

生产者-消费者模式:多线程并发协作的经典案例

生产者-消费者模式是多线程并发编程中一个非常经典的模式&#xff0c;它通过解耦生产者和消费者的关系&#xff0c;使得两者可以独立工作&#xff0c;从而提高系统的并发性和可扩展性。本文将详细介绍生产者-消费者模式的概念、实现方式以及应用场景。 1 生产者-消费者模式概述…...

数据库-mysql(基本语句)

演示工具&#xff1a;navicat 连接&#xff1a;mydb 一.操作数据库 1.创建数据库 ①create database 数据库名称 //普通创建 ②create database if not exists 数据库名称 //创建数据库&#xff0c;判断不存在&#xff0c;再创建&#xff1a; 使用指定数据库 use 数据库…...

android12L super.img 解压缩及其挂载到ubuntu18.04

本文介绍如何在Ubuntu18.04上解压缩高通平台Android12L的super.img&#xff0c;并将其挂载到系统中查看内容。 在源码的根目录下&#xff0c;执行如下命令&#xff1a; out/host/linux-x86/bin/simg2img out/target/product/msmnile_gvmq/super.img super.img_rawmkdir super…...

flask简易版的后端服务创建接口(python)

1.pip install安装Flask和CORS 2.创建http_server.py文件,内容如下 """ ============================ 简易版的后端服务 ============================ """ from flask import Flask, request, jsonify from flask_cors import CORS app = F…...

小程序入门学习(四)之全局配置

一、 全局配置文件及常用的配置项 小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下&#xff1a; pages&#xff1a;记录当前小程序所有页面的存放路径 window&#xff1a;全局设置小程序窗口的外观 tabBar&#xff1a;设置小程序底部的 tabBar 效…...

PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)

代码中包含了PHP在一般情况下使用方法和RabbitMQ开启了SSL验证后的使用方法&#xff08;我这边消费队列是使用接口请求的方式&#xff0c;每次只从中取出一条&#xff09; 安装amqp扩展 PHP使用RabbitMQ前&#xff0c;需要安装amqp扩展&#xff0c;之前文章中介绍了Windows环…...

轻量级视觉骨干网络 MobileMamba: Lightweight Multi-Receptive Visual Mamba Network

MobileMamba 快速链接解决问题&#xff1a;视觉模型在移动设备端性能和效果的平衡性解决方法&#xff1a;改进网络结构训练和测试策略网络结构改进训练和测试策略 实验支撑&#xff1a;图像分类、分割&#xff0c;目标检测等图像分类结果对比目标检测和实例分割结果对比语义分割…...

科技云报到:数智化转型风高浪急,天翼云如何助力产业踏浪而行?

科技云报到原创。 捷径消亡&#xff0c;破旧立新&#xff0c;是今年千行百业的共同底色。 穿越产业周期&#xff0c;用数字化的力量重塑企业经营与增长的逻辑&#xff0c;再次成为数字化技术应用的主旋律&#xff0c;也是下一阶段产业投资的重点。 随着数字化转型行至“深水区…...

dockerfile部署前后端(vue+springboot)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言0.环境说明和准备1.前端多环境打包1.1前端多环境设置1.2打包 2.后端项目多环境配置以及打包2.1后端多环境配置2.2项目打包 3.文件上传4.后端镜像制作4.1dockerf…...

c语言的思维导图

之前已经全部学完c语言了&#xff0c;所以为了更好的复习回顾&#xff0c;我做了一份c语言超详细的思维导图&#xff0c;帮助实现一张图就可以复习&#xff0c;避免盲目&#xff0c; 由于平台不支持直接发上图&#xff0c;有想要的小伙伴&#xff0c;可以私信找我要原件...

Android 拍照(有无存储权限两种方案,兼容Q及以上版本)

在某些行业&#xff0c;APP可能被禁止使用存储权限&#xff0c;或公司在写SDK功能&#xff0c;不方便获取权限 所以需要有 无存储权限拍照方案。这里两种方案都列出里。 对于写入权限&#xff0c;在高版本中&#xff0c;已经废弃&#xff0c; 不可用文件写入读取权限&#xf…...

MongoDB在自动化设备上的应用示例

发现MongoDB特别适合自动化检测数据的存储。。。 例如一个晶圆检测项目&#xff0c;定义其数据结构如下 #pragma once #include <vector> #include <QString> #include <QRectF> #include <string> #include <memory>class tpoWafer; class tp…...

draggable插件——实现元素的拖动排序——拖动和不可拖动的两种情况处理

最近在写后台管理系统的时候&#xff0c;遇到一个需求&#xff0c;就是关于拖动排序的功能。 我之前是写过一个关于拖动表格的功能&#xff0c;此功能可以实现表格中的每一行数据上下拖动实现排序的效果。 vue——实现表格的拖拽排序功能——技能提升 但是目前我这边的需求是…...

Redux的使用

到如今redux的已经不是react程序中必须的一部分内容了&#xff0c; 我们应该在本地需要大量更新全局变量时才使用它! redux vs reducer reducer的工作机制&#xff1a; 手动构造action对象传入dispatch函数中 dispatch函数将 action传入reducer当中 reducer结合当前state与a…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...