利用prometheus+grafana进行Linux主机监控
文章目录
- 一.架构说明与资源准备
- 二.部署prometheus
- 1.上传软件包
- 2.解压软件包并移动到指定位置
- 3.修改配置文件
- 4.编写启动脚本
- 5.启动prometheus服务
- 三.部署node-exporter
- 1.上传和解压软件包
- 2.设置systemctl启动
- 3.启动服务
- 四.部署grafana
- 1.安装和启动grafana
- 2.设置prometheus数据源
- 3.新增监控模板
- 4.修改模板的变量和配置信息
一.架构说明与资源准备
需要准备的软件包:
node_exporter-1.2.0.tar.gz
grafana-7.3.0-1.x86_64.rpm
prometheus-2.45.1.linux-amd64.tar.gz
以上软件版本可以有一定的差异,只要兼容RHEL7的操作系统,本次部署的3台虚拟机操作系统是 CentOS Linux release 7.9.2009 (Core) 。
软件包下载地址参考:
https://rpmfind.net/linux/rpm2html/search.php
https://sourceforge.net/projects/infozip/files/
https://centos.pkgs.org/7/centos-x86_64/
https://access.redhat.com/downloads
二.部署prometheus
本章操作都在node01进行。
1.上传软件包
首先将软件包上传到/root目录下
2.解压软件包并移动到指定位置
接着创建/data目录,准备将后续解压后的软件文件放在/data目录
mkdir /data
tar zxf prometheus-2.45.1.linux-amd64.tar.gz
mv prometheus-2.45.1.linux-amd64 /data/prometheus
3.修改配置文件
针对配置文件 /data/prometheus/prometheus.yml 进行修改
global:scrape_interval: 15s evaluation_interval: 15s scrape_timeout: 15salerting:alertmanagers:- static_configs:- targets:- 192.168.0.201:9093
rule_files:# - "first_rules.yml"# - "second_rules.yml"- rules/*.ymlscrape_configs:- job_name: "node_exporter"static_configs:# #监控的主机IP和node-exporter端口- targets: ['192.168.0.201:9100','192.168.0.202:9100','192.168.0.203:9100']relabel_configs:- source_labels:- "__address__"regex: "(.*):9100"target_label: "instance"action: replacereplacement: "$1"remote_write:- url: "http://192.168.0.201:8086/api/v1/prom/write?db=prometheus&u=root&p=123456"
但一般情况下,由于公司负责的业务较多,我们会后期制作不同的grafana监控面板,对于监控的主机也需要进行分类。从实际需求角度,将所有的监控主机IP写在一个配置文件是不合适的,我们需要根据项目新增监控IP的yaml文件。
global:scrape_interval: 15s evaluation_interval: 15s scrape_timeout: 15salerting:alertmanagers:- static_configs:- targets:- 192.168.0.201:9093rule_files:- rules/*.yml#我们在当前目录下,新建一个目录hostlist,将所有新增项目的监控IP信息加到hostlist文件下。
scrape_configs:- job_name: "other"static_configs:file_sd_configs:- files:- hostlist/*.ymlrefresh_interval: 1mrelabel_configs:- source_labels:- "__address__"regex: "(.*):9100"target_label: "instance"action: replacereplacement: "$1"remote_write:- url: "http://192.168.0.201:8086/api/v1/prom/write?db=prometheus&u=root&p=123456"
在当前目录 /data/prometheus 下新建hostlist目录
在hostlist目录下新建一个yaml文件,后缀必须是 yml
我们给该项目起名为MOON,被监控主机的端口都是9100.
分别定义变量htname job proj,填写主机名、监控对象和项目信息,这些变量可以自由定义。
[root@node01 prometheus]# cat hostlist/MOON.yml
- targets: ['192.168.0.201:9100']labels:htname: node01job: linuxproj: MOON- targets: ['192.168.0.202:9100']labels:htname: node02job: linuxproj: MOON- targets: ['192.168.0.203:9100']labels:htname: node03job: linuxproj: MOON
这样,以后如果新增一个SUN项目,对应服务器资源监控的yaml文件就可以写为SUN.yml,以此类推,而新增项目的监控,yaml文件的增加,需要重新加载prometheus配置文件,才能让新配置生效并监控到新项目的资源。
#新增或更改监控资源后的重启服务命令
curl -X POST http://localhost:9090/-/reload
4.编写启动脚本
先编写一个启动prometheus服务的脚本,放在/data/prometheus目录下
[root@node01 prometheus]# cat prometheus.sh
#!/bin/bash
/data/prometheus/prometheus --web.enable-lifecycle --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention.time=20d --web.enable-admin-api
接着授予脚本执行权限。
chmod 755 prometheus.sh
再设置systemctl可以启动服务
[root@node01 prometheus]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target[Service]
User=root
Group=root
Type=simple
# 启动脚本
ExecStart=/data/prometheus/prometheus.sh[Install]
WantedBy=multi-user.target
5.启动prometheus服务
启动并设置开机自动启动
systemctl start prometheus.service
systemctl enable prometheus.service
systemctl status prometheus.service
检查端口,服务已启动
三.部署node-exporter
本章操作需要在3台服务器上都完成,此处只演示在node01的步骤,node02和node03同理。
1.上传和解压软件包
将上传的node-exporter解压并移动到/data
tar xzf node_exporter-1.2.0.tar.gz
mv node_exporter /data
2.设置systemctl启动
此处不改动配置文件,服务启动后的默认端口是9100
cp /data/node_exporter/node_exporter.service /usr/lib/systemd/system/
3.启动服务
使用systemctl直接启动服务
systemctl start node_exporter.service
systemctl enable node_exporter.service
systemctl status node_exporter.service
检查端口,node-exporter已经启动。
四.部署grafana
本章操作在node01进行。
1.安装和启动grafana
将下载好的grafana的rpm包上传至/root后,直接yum安装即可,自动安装依赖。
yum install -y grafana-7.3.0-1.x86_64.rpm
安装后直接启动服务。
systemctl start grafana-server.service
systemctl enable grafana-server.service
systemctl status grafana-server.service
检查3000端口打开,表示服务已启动。
2.设置prometheus数据源
首先打开本地浏览器,输入 192.168.0.201:3000
进入grafana页面,初始账号和密码都是admin,直接登录并修改密码,进入grafana首页。
接着按照下图顺序,找到 设置---数据源
的位置进行配置
在数据源的URL框中输入node01的prometheus服务IP和端口 http://192.168.0.201:9090/
然后保存退出即可。
设置成功后,数据源是prometheus。
3.新增监控模板
从网络上搜索Linux服务器的grafana监控模板,导入进去。
然后上传json文件,选择本地文件导入即可。
4.修改模板的变量和配置信息
一般情况下,直接导入的模板无法使用,因为它使用了自定义的变量。
例如别人的项目名proj变量使用了 apple
指定其监控的所有资源;我们项目名proj变量使用了MOON
表示监控的所有资源。
我们若要使用模板来查看监控资源的信息,需要修改变量以及prometheus查询语句的某些具体值,才能显示自己的资源监控数据。
进入配置页面后,选择变量修改,修改后的键值与hostlist下面的yml配置文件中的内容一样即可。
每一次对面板的修改都需要手动保存才能生效。
如果无法接收到数据,在浏览器输入 192.168.0.201:9090
进入prometheus服务器界面,进入 “状态”—“目标”,检查是否有监控数据。状态都是 UP 表示资源已被正常监控。
至此,Linux服务器的prometheus-grafana主机资源监控已经基本搭建完成,Windows服务器的监控只需要安装对应的node-exporter即可。
相关文章:

利用prometheus+grafana进行Linux主机监控
文章目录 一.架构说明与资源准备二.部署prometheus1.上传软件包2.解压软件包并移动到指定位置3.修改配置文件4.编写启动脚本5.启动prometheus服务 三.部署node-exporter1.上传和解压软件包2.设置systemctl启动3.启动服务 四.部署grafana1.安装和启动grafana2.设置prometheus数据…...
单词反转(字符串)
题目名字 单词反转 题目链接 题意 输入倒序的字符串,要求输出正序的字符串 思路 用while输入,这样当出现输入是空格时自动划分上一个为一个单词然后再次反输出 while循环的条件是当不再输入的时候,因为是字符串,不用getline输入…...

【Java 集合】LinkedBlockingDeque
在开始介绍 LinkedBlockingDeque 之前, 我们先看一下 LinkedBlockingDeque 的类图: 从其中可以看出他直接实现了 BlockingDeque 接口, 而 BlockingDeque 又实现了 BlockingQueue 的接口, 所以它本身具备了队列的特性。 而实现 BlockingDeque 使其在 BlockingQueue 的基础上多了…...

【hacker送书第3期】OpenCV轻松入门:面向Python(第2版)
第3期图书推荐 内容简介作者简介图书目录专家推荐参与方式 内容简介 本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用…...

手把手教你isPalindrome 方法在密码验证中的应用
在信息安全领域中,密码验证是一个极为重要的组成部分。一个强密码应具备足够的复杂性,以免遭到破解。而回文密码是一种具备特殊性质的密码,其正序和倒序相同,因此具有极高的安全性,并能发挥重要作用。在实际密码策略中…...

drf入门规范(二)
四 RESTful API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)。 它首次出现在2000年Roy Fielding的博士论文中。 RESTful是一种定义Web API接口的设计风格,尤其适用…...
使用Redis和Nginx分别实现限制接口请求频率
前言 为啥需要限制接口请求频率?这个是因为防止接口一直被刷,比如发送手机验证码的接口,一直被刷的话,费钱费资源的,至少做点基本的防护工作。以下分别使用Redis和Nginx实现限制接口请求频率方案。 一、基于Redis实现…...

ansible模块 (7-13)
模块 7、hostname模块: 远程主机名管理模块 ansible 192.168.10.202 -m hostname -a nameliu 8、copy模块: 用于复制指定的主机文件到远程主机的模块 常用参数: dest: 指出要复制的文件在哪,必须使用绝对路径。如果源目标是…...

MySQL概括与SQL分类
文章目录 一、计算机语言二、SQL语言三、数据库系统四、MySQL简介 一、计算机语言 二、SQL语言 三、数据库系统 四、MySQL简介...
微信小程序:wx:for 获取view点击的元素currentTarget.dataset为空
遍历数组渲染一组view通过bindtap事件获取点击的元素 解决办法: 在遍历时,设置data-item即可。 示例: <view wx:for"{{types}}" data-item"{{item}}"wx:key"key" bindtap"syntheActiveItem"c…...

Word的兼容性问题很常见,禁用兼容模式虽步不是最有效的,但可以解决兼容性问题
当你在较新版本的Word应用程序中打开用较旧版本的Word创建的文档时,会出现兼容性问题。错误通常发生在文件名附近(兼容模式)。兼容性模式问题(暂时)禁用Word功能,从而限制使用较新版本Word的用户编辑文档。…...

环境搭建及源码运行_java环境搭建_idea版本下载及安装
1、介绍 Idea是一款被广泛使用的Java集成开发环境,它提供了丰富的功能和工具来帮助开发人员更高效地编写和调试代码。作为一款开源软件,Idea不仅提供了基本的代码编辑、自动完成和调试功能,还支持大量的插件和扩展,可为开发人员提…...

jvm相关命令操作
查看jvm使用情况 jmap -heap PID 查看线程使用情况 jstack pid 查看当前线程数 jstack 21294 |grep -E (#[0-9]) -o -c 查看系统线程数 top -H top -Hp pid #查看具体的进程中的线程信息 使用 jps 命令查看配置了JVM的服务 查看某个进程JVM的GC使用情况 jstat -gc 进程…...

芋道前端框架上线之后发现element-ui的icon图标全部乱码
前言 最近发现线上有人反映图标全部是乱码,登录上去看确实乱码,刷新就好最后一顿搜,发现是sass版本不兼容导致的图标乱码问题 解决办法 1.先把sass升级到1.39.0 2.来到vue.config.js文件配置代码-如果是芋道前端框架不用配置自带 css: {lo…...

每个伦敦金投资者都应该练习的日线图交易
在伦敦金市场中,每个投资者都应该试着去做日线图的交易。有的人一听到日线图马上摇头,原因是日线图的价格跨度大,导致止损距离也变大,这样对投资者来说无疑是增加了风险。如果资金量大的投资者还好说,可以降低仓位&…...

高通平台开发系列讲解(USB篇)adb应用adbd分析
沉淀、分享、成长,让自己和他人都能有所收获!😄 在apps_proc/system/core/adb/adb_main.cpp文件中main()函数会调用adb_main()函数,然后调用uab_init函数 在uab_init()函数中,会创建一个线程,在线程中会调用init_functionfs()函数,利用ep0控制节点,创建ep1、ep2输…...

【上海大学数字逻辑实验报告】七、中规模元件及综合设计
一、实验目的 掌握中规模时序元件的测试。学会在Quartus II上设计序列发生器。 二、实验原理 74LS161是四位可预置数二进制加计数器,采用16引脚双列直插式封装的中规模集成电路,其外形如下图所示: 其各引脚功能为: 异步复位输…...

JVM内存结构Java内存模型Java对象模型
导图: https://naotu.baidu.com/file/60a0bdcaca7c6b92fcc5f796fe6f6bc9 1.JVM内存结构&&Java内存模型&&Java对象模型 1.1.JVM内存结构 1.2.Java对象模型 Java对象模型表示的是这个对象本身的存储模型,JVM会给这个类创建一个instanceKlass保存在方…...

Istio 社区周报(第一期):2023.12.11 - 12.17
欢迎来到 Istio 社区周报 Istio 社区朋友们,你们好! 我很高兴呈现第一期 Istio 社区周报。作为 Istio 社区的一员,每周我将为您带来 Istio 的最新发展、有见地的社区讨论、专业提示和重要安全新闻内容。 祝你阅读愉快,并在下一期中…...
质量图导向法解包裹之---计算边缘可靠性
在这之前需要我们知道像素点的可靠性 % 这反映了相位变化的平滑程度。以下是一个可能的实现,它使用了二阶差分来计算可靠性: function rel calculateReliability(wrappedPhase)% 应用高斯滤波减少噪声filteredImg imgaussfilt(wrappedPhase, 2); % 2 …...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...

【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...

DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...