在ubuntu上搭建系统监控系统

大纲

  • 数据生产方
    • 安装和运行
    • 验证
  • 数据收集、存储和分发方
    • 下载和解压
    • 修改配置
    • 运行
    • 验证
  • 数据消费方
    • 下载和运行
    • 验证
      • 新增数据源
      • 新增看板
      • 关联看板和数据源
      • 效果展现
  • 参考资料

在一个监控系统中,一定会有“数据生产方”和“数据消费方”存在。“数据生产方”用于产出需要监控的相关指标数据;“数据消费方”使用这些数据产生额外的信息和功能,比如数据图表化表达、异常数据预警等。
请添加图片描述
当“数据生产方”变多时,系统往往会演化出“数据收集方”用于统一收集数据。这个时候“数据消费方”可以通过“数据收集方”获得全部数据。
请添加图片描述
当“数据消费方”变多时,不同的“数据消费方”会有不同诉求。比如有的只要A“数据生产方”的数据;有的既要A的、也要B的数据。于是整个系统又会演化出“数据分发方”,用于满足消费方的不同诉求。
在这里插入图片描述
随着数据越来越多,且生产和消费并非一定要紧密连接,在“数据收集方”和“数据分发方”之间就会演化出“数据仓储方”。它的出现让“数据收集方”和“数据分发方”实现了解耦,且提升了系统的健壮性。
在这里插入图片描述
在实际生产中,我们往往使用prometheus和grafana来实现该系统中重要的两部分。
prometheus主要用于收集、存储和分发数据。虽然prometheus可以展现数据,但是功能并不强大,所以将其限定在非消费区域。
grafana主要用于消费数据。主要体现就是各种报表形式展现数据,以及提供一些基于规则数据告警。
在这里插入图片描述
“数据生产方”需要给prometheus提供规定协议的数据。本文我们并不对此进行介绍,而是专注于将系统搭建和验证。为了简单起见,我们选用了prometheus开源项node_exporter作为“数据生产方”。

数据生产方

安装和运行

下载并解压node_exporter。(可以从https://prometheus.io/download/#node_exporter找到最新的版本)

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz 
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz 

运行node_exporter

cd node_exporter-1.7.0.linux-amd64/
./node_exporter

验证

在本机上使用localhost:9100/metrics(跨环境使用,则配置IP)访问node_exporter产生的数据。
在这里插入图片描述

数据收集、存储和分发方

下载和解压

下载并解压prometheus。(可以在https://prometheus.io/download/#prometheus找到最新版)

wget https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz .
tar -zvxf prometheus-2.51.0.linux-amd64.tar.gz

修改配置

进入prometheus目录下可以找到prometheus.yml

cd prometheus-2.51.0.linux-amd64/

修改prometheus.yml文件,新增对node_exporter的监控。
原来的部分配置

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]

修改后的配置

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]- job_name: "node_exporter"static_configs:- targets: ["localhost:9100"]

运行

通过指定配置的方式启动prometheus。

./prometheus --config.file=./prometheus.yml 

验证

在本机上使用localhost:9090(跨环境使用,则配置IP)访问prometheus后台页面。
在这里插入图片描述
可以看到node_exporter已经被监控。
在这里插入图片描述

我们还可以在图形化(Graph)的输入框中输入以下指令查看数据图表展现效果。

MetricMeaning
rate(node_cpu_seconds_total{mode=“system”}[1m])在最后一分钟内,每秒在系统模式下花费的平均CPU时间(以秒为单位)
node_filesystem_avail_bytes非root用户可用的文件系统空间(以字节为单位)
rate(node_network_receive_bytes_total[1m])最后一分钟内每秒接收的平均网络流量(以字节为单位)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据消费方

prometheus虽然可以配置一些看板和告警,但是可视化并不是它的核心。于是我们引入效果更好的grafana来做“数据消费方”。

下载和运行

下载并解压grafana。(可以在https://grafana.com/grafana/download找到最新版)

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.4.1.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-10.4.1.linux-amd64.tar.gz
cd grafana-v10.4.1/
./bin/grafana server

验证

在本机上使用localhost:3000(跨环境使用,则配置IP)访问grafana后台页面。
第一次登录时,我们可以使用admin名称登录,密码也是admin。进入这个账号后会提示修改初始密码,我们还是设置为admin以方便记忆。

新增数据源

我们要让grafana连接prometheus,以提供数据。具体操作如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新增看板

在这里插入图片描述
我们到grafana官网上找为node_exporter定制的开源看板。
在这里插入图片描述
在这里插入图片描述
把上一步看板网页地址https://grafana.com/grafana/dashboards/1860-node-exporter-full/复制到下图的输入框中,以加载它。
在这里插入图片描述

关联看板和数据源

上个页面往下滚动,可以看到输入数据源的地方。我们选择之前步骤创建的prometheus。
在这里插入图片描述

效果展现

在这里插入图片描述

参考资料

  • https://github.com/prometheus/node_exporter
  • https://prometheus.io/docs/guides/node-exporter/
  • https://prometheus.io/download/
  • https://grafana.com/grafana/download
  • https://grafana.com/docs/grafana/latest/setup-grafana/sign-in-to-grafana/

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

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

相关文章

Android MediaRecorder

AndroidManifest.xml中添加权限标记 <uses-permission android:name"android.permission.RECORD_AUDIO"/> 动态添加权限MainActivity requestPermissions(new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},100); 创建MediaReco…

Go build 交叉编译-实现多平台兼容

【前言】 本章主要讲的是go程序如何兼容各种架构系统以及架构之间的区别 直接上干货&#xff0c;直接执行下面的指令&#xff0c;将GOOS&#xff08;平台&#xff09;和GOARCH&#xff08;架构&#xff09;就可以解决大部分架构兼容问题 GOOSlinux GOARCHamd64 go build test.g…

使用Asible自动化Linux管理任务

自动化与 Linux 系统管理 多年来&#xff0c;大多数系统管理和基础架构管理都依赖于通过图形或命令行用户界面执行的手动任务。系统管理员通常使用检查清单、其他文档或记忆的例程来执行标准任务。 这样的做法容易出错。系统管理员很容易跳过某个步骤或在某个步骤上出错。对步骤…

Flask学习(五):session相关流程

流程图如下图所示&#xff1a; 调用相关类如下图所示&#xff1a; 相关代码如下&#xff1a; from flask import Flask, sessionapp Flask(__name__)1. 加密会话数据&#xff1a;在 Flask 中&#xff0c;会话数据存储在客户端的 cookie 中。设置 app.secret_key 可以加密会话…

OLED模块

OLED模块 综述&#xff1a;本篇文章简要讲述了oled的定义&#xff0c;两种oled的引脚和接线情况、iic通讯协议、spi通讯协议、OLED代码引用和注意事项。 1.定义 OLED&#xff08;Organic Light-Emitting Diode&#xff09;模块是一种使用有机发光二极管作为显示元素的显示模…

【强化学习概念01】什么是 Q-Learning:了解 Q-Learning 的最佳指南

​ 一、说明 强化训练如同训狗。当狗或孩子行为不端时,你会怎么做?你责骂他们以确保他们不会重复或学习不良行为。另一方面,如果他们做了好事,你就会奖励他们,灌输良好的行为。不管你相信与否,这种正强化或负强化系统也可用于训练机器。它被称为强化学习,它可以帮助我…

DFS:二叉树的深搜与回溯

一、计算布尔二叉树的值 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool evaluateTree(TreeNode* root) {if(root->leftnullptr) return root->val0?false:true; bool left evaluateTree(root->left);bool rightevaluateTree(root->rig…

1.1 单片机的概念

一,单片机的概念 单片机(Single-Chip Microcomputer),也被称为单片微控制器,是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、…

Ubuntu20.04彻底删除mysql,并重装mysql

彻底卸载 sudo apt purge mysql-* sudo rm -rf /etc/mysql/ /var/lib/mysql sudo apt autoremove sudo apt autocleanapt-get purge 与 apt-get remove是不同的&#xff0c;简单来说&#xff1a; purge可以将包以及软件的配置文件全部删除 remove仅可以删除包&#xff0c;但不…

springcloud基本使用(搭建eureka服务端)

创建springbootmaven项目 next next finish创建成功 删除项目下所有文件目录&#xff0c;只保留pox.xml文件 父项目中的依赖&#xff1a; springboot依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…

类模板与友元

掌握类模板配合友元函数的类内实现和类外实现。 全局函数类内实现&#xff1a;直接在类内声明友元函数即可&#xff08;推荐使用这种&#xff09; #include <iostream> #include <Windows.h> #include <string>using namespace std;template<typename T…

大模型提示工程之Prompt框架和示例

今天和大家分享一下&#xff1a;大模型提示工程之Prompt框架和示例&#xff1a; TAG框架 任务&#xff08;Task&#xff09;: 开发一个新的手机应用&#xff0c;旨在帮助用户更好地管理他们的日常健康。 行动&#xff08;Action&#xff09;: 进行市场调研&#xff0c;设计用户…

[Godot] 3D拾取

CollisionObject3D文档 Camera3D文档 CollisionObject3D有个信号_input_event&#xff0c;可以用于处理3D拾取。 Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。 extends Node3D#是否处于选中状态 var selected : bool false #摄像机的前向量 var front : V…

Swift:“逻辑运算子“与“比较运算符“

1. 逻辑非 ! 逻辑非运算符 ! 是用于对布尔值取反的。当操作数为 true 时&#xff0c;! 将返回 false&#xff0c;而当操作数为 false 时&#xff0c;! 将返回 true。 let isTrue true let isFalse !isTrue // isFalse 现在是 false 2. 逻辑与 && 逻辑与运算符 &a…

爬取b站音频和视频数据,未合成一个视频

一、首先找到含有音频和视频的url地址 打开一个视频&#xff0c;刷新后&#xff0c;找到这个包&#xff0c;里面有我们所需要的数据 访问这个数据包后&#xff0c;获取字符串数据&#xff0c;用正则提取&#xff0c;再转为json字符串方便提取。 二、获得标题和音频数据后&…

linux基础命令篇:Linux基础命令讲解——文件浏览(cat、less、head、tail和grep)

Linux基础命令讲解——文件浏览&#xff08;cat、less、head、tail和grep&#xff09; 本文详细介绍Linux中的cat、less、head、tail和grep命令&#xff0c;这些命令在日常工作中非常实用&#xff0c;以下是关于这些命令的详细介绍&#xff1a; 1. cat命令&#xff1a;用于查看…

JUC:synchronized优化——锁的升级过程(偏向锁->轻量级锁->重量级锁)以及内部实现原理

文章目录 锁的类型轻量级锁重量级锁自旋优化偏向锁偏向锁的细节偏向锁的撤销批量重偏向批量撤销锁消除 锁的类型 重量级锁、轻量级锁、偏向锁。 加锁过程&#xff1a;偏向->轻量级->重量级 轻量级锁 轻量级锁的使用场景&#xff1a;如果一个对象虽然有多线程要加锁&am…

rust - 使用serde_yaml读取配置文件

本文提供了一种读取yaml配置文件&#xff0c;转换为结构体的方法。 安装依赖 cargo add serde cargo add serde_json cargo add serde_yaml cargo add schemars配置文件示例 test:debug: true设置需要转换的结构体 需要定义Default trait&#xff0c;用于配置文件不存在的情…

登录者个人信息查询

目录 &#x1f95e;1.vo层描述 &#x1f37f;2..vo层创建 &#x1f32d;3.编写controller层 &#x1f953;4.service层 &#x1f9c2;5.测试 1.vo层描述 Spring Boot项目中的实体类通常用于映射数据库表&#xff0c;包含了业务对象的所有属性。然而&#xff0c;前端或其…

Jenkins详细安装配置部署

目录 简介一、安装jdk二、安装jenkins这里如果熟悉 Jenkins &#xff0c;可以【选择插件来安装】&#xff0c;如果不熟悉&#xff0c;还是按照推荐来吧。注意&#xff1a; 三、插件安装如果上面插件安装&#xff0c;选择的不是【安装推荐的插件】&#xff0c;而是【选择插件来安…