利用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即可。

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

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

相关文章

Java研学-HTTP 协议

一 概述 1 概念和作用 概念:HTTP 是 HyperText Transfer Protocol (超文本传输协议)的简写,它是 TCP/IP 协议之上的一个应用层协议。简单理解就是 HTTP 协议底层是对 TCP/IP 协议的封装。   作用:用于规定浏览器和服务器之间数据传输的格式…

【源码解析】聊聊ReentrantReadWriteLock是如何实现的读写锁

为什么需要读写锁 在并发编程领域,有多线程进行提升整体性能,但是却引入了共享数据安全性问题。基本就是无锁编程下的单线程操作,有互斥同步锁操作,但是性能不高,并且同一时刻只有一个线程可以操作资源类。但是对于大…

[SWPUCTF 2021 新生赛]gift_F12

打开环境 题目有提示(F12),那就查看一下源代码 直接滑到最后 看提示猜测,flag就在源代码里了 ctrlf查找flag 最后得到flag,改一下形式就可以了

ORACLE总结

例1: 现在有 医嘱主表ORDER_MAIN(ID,ORDER_ID,ORDER_NAME) A表 和医嘱执行表ORDER_EXEC(ID,ORDER_ID,PLAN_TIME) B表 两个表是用ORDER_ID关联起来的,A表一个ORDER_ID对应一条数据,B表一个ORDER_ID对应多个字段,要求根据ORDER_…

网络技术基础与计算思维实验教程_2.4_跨交换机VLAN配置实验

实验内容 实验目的 实验原理 实验步骤 构建 在工作区放置交换机然后单击 选择config , 把交换机的默认名改为switch1 再放置两个交换机 再放置终端 放置三台与交换机1相连的终端 再放置三台与交换机3相连的终端 再放置两台与交换机2相连的终端 用直通线连接 然后用交叉线互联交…

java8流库之Stream.iterate

简介 java.util.stream.Stream 下共有两个 iterate iterate(T seed, final UnaryOperator<T> f)iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> f) 该方法产生一个无限流&#xff0c;它的元素包含seed&#xff0c;在seed上调用f产生的…

Matlab论文插图绘制模板第131期—函数等高线图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 进一步&#xff0c;再来分享一下函数等高线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数…

【Week-P2】CNN彩色图片分类-CIFAR10数据集

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结3.1 ⭐ torch.nn.Conv2d()详解3.2 ⭐ torch.nn.Linear()详解3.3 ⭐torch.nn.MaxPool2d()详解3.4 ⭐ 关于卷积层、池化层的计算4.2.1 optimizer.zero_grad()说明4.2.2 loss.backward()说…

MyBatis Plus使用遇到的问题

如果想使用Mapper的xxxById()方法&#xff0c;实体类的主键上面必须加上TableId注解&#xff0c;如果不加&#xff0c;会报错 2023-12-21 22:48:33.526 WARN 11212 --- [ main] c.b.m.core.injector.DefaultSqlInjector : class com.example.mybatisplusdemo.dom…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…

无约束优化问题求解笔记(2):最速下降法

目录 3. 最速下降法3.1 最速下降法的基本思想3.2 基于精确搜索的最速下降法3.3 基于精确搜索的最速下降法的程序实现3.4 基于精确搜索的最速下降法的缺点 Reference 3. 最速下降法 3.1 最速下降法的基本思想 最速下降法是典型的线搜索方法. 设 f f f 是 R n \mathbb{R}^n R…

vue2与vue3的区别

首先了解什么是vue3 Vue.js 3.0&#xff08;简称Vue 3&#xff09;是一个流行的JavaScript框架Vue.js的最新版本。Vue 3于2020年9月正式发布&#xff0c;带来了许多令人兴奋的新特性和改进。下面是Vue 3的一些主要特点&#xff1a; 更快的性能&#xff1a;Vue 3通过全新的响应…

【redis】redis系统实现发布订阅的标准模板

目录 简介参数配置代码模板 简介 Redis发布订阅功能是Redis的一种消息传递模式&#xff0c;允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下&#xff0c;消息的发送者被称为发布者&#xff08;publisher&#xff09;&#xff0c;而接收消息的客户端被称为…

Easyexcel读取单/多sheet页

Easyexcel读取单/多sheet页 此文档会说明单个和多个的sheet页的读取方法&#xff0c;包括本人在使用过程中的踩坑点。 依赖不会的自行百度导入&#xff0c;话不多说&#xff0c;直接上干货。以下示例基于2.x&#xff0c;新版本基本类似 1、创建实体 实体是用来接收对应列的数据…

【QT】QGraphicsView和QGraphicsItem坐标转换

坐标转换 QGraphicsItem和QGraphicsView之间的坐标转换需要通过QGraphicsScene进行转换 QGraphicsView::mapToScene() - 视图 -> 场景QGraphicsView::mapFromScene() - 场景 -> 视图QGraphicsItem::mapToScene() - 图元 -> 场景QGraphicsItem::mapFromScene() - 场景 …

java连接oracle出现ORA-12505错误

问题 sqlplus可以连接;但java连接报错:ORA-12505 ORA-12505, TNS:listener does not currently know of SID given in connect descr 解析 原因: 数据库中实际使用的实例名并非与集群对外使用的相同&#xff0c;使用第三方构件或程序进行连接的时候&#xff0c;所给数据库运…

Arduino驱动LTR390-UV紫外线传感器(光照传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序

C++ Qt开发:StringListModel字符串列表映射组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QStringListModel字符串映射组件的常用方法及…

Java-JDBC(重要)--待更新

1、第一个JDBC程序 步骤总结&#xff1a; 创建测试数据库加载驱动&#xff0c;固定写法连接数据库获得执行SQL的对象statement执行SQL对象去执行SQLresultset获得返回结果集释放连接 import java.sql.*;public class Jdbc {public static void main(String args[]) throws C…

线程(四)

线程(一) ~ 线程(四)章节导图 导图https://naotu.baidu.com/file/07f437ff6bc3fa7939e171b00f133e17 线程安全 什么是线程安全&#xff1f; 业务中多线程同时访问一个对象或方法时我们不需要做额外的处理&#xff08;像单线程编程一样&#xff09;程序可以正常运行并能获取…