利用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 …...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...