在ubuntu上搭建系统监控系统

news/2024/5/18 23:23:53 标签: ubuntu, linux, prometheus, grafana

大纲

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

在一个监控系统中,一定会有“数据生产方”和“数据消费方”存在。“数据生产方”用于产出需要监控的相关指标数据;“数据消费方”使用这些数据产生额外的信息和功能,比如数据图表化表达、异常数据预警等。
请添加图片描述
当“数据生产方”变多时,系统往往会演化出“数据收集方”用于统一收集数据。这个时候“数据消费方”可以通过“数据收集方”获得全部数据。
请添加图片描述
当“数据消费方”变多时,不同的“数据消费方”会有不同诉求。比如有的只要A“数据生产方”的数据;有的既要A的、也要B的数据。于是整个系统又会演化出“数据分发方”,用于满足消费方的不同诉求。
在这里插入图片描述
随着数据越来越多,且生产和消费并非一定要紧密连接,在“数据收集方”和“数据分发方”之间就会演化出“数据仓储方”。它的出现让“数据收集方”和“数据分发方”实现了解耦,且提升了系统的健壮性。
在这里插入图片描述
在实际生产中,我们往往使用prometheusgrafana来实现该系统中重要的两部分。
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
在这里插入图片描述

效果展现

在这里插入图片描述

参考资料


http://www.niftyadmin.cn/n/5465412.html

相关文章

九泰智库 | 医械周刊- Vol.19

⚖️ 法规动态 国创中心联合中科院发布《高性能医疗器械2023年度发展报告》 近日,国家高性能医疗器械创新中心和中国科学院深圳先进技术研究院共同发布了《高性能医疗器械2023年度发展报告》。该报告指出,我国医疗器械领域已形成以粤港澳大湾区、长三角…

echarts实现炫酷科技感的流光效果

前言: echarts实现炫酷科技感的流光效果 效果图: 实现步骤: 1、引入echarts,直接安装或者cdn引入 npm i echarts https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js 2、封装 option方法,第一个数据是折线数据&a…

是否应该升级到ChatGPT 4.0?深度对比ChatGPT 3.5与4.0的差异

如果只是想简单地体验AI的魅力,感受大模型的独特之处,或是玩一玩文字游戏,那么升级至ChatGPT 4.0可能并非必需。然而,若你期望将AI作为提升工作学习效率的得力助手,那么我强烈建议你升级到ChatGPT 4.0。 如果你不知道…

【spdlog学习】【issue】#2975-编译时设置宏定义SPDLOG_ACTIVE_LEVEL对日志等级的影响

【网络链接】issue 问题的大概意思是,下面的代码没有按照楼主的预期输出日志 /*代码*/#include "spdlog/spdlog.h"int main() {spdlog::info("Welcome to spdlog!");spdlog::error("Some error message with arg: {}", 1);spdlog::warn("E…

MySQL的优化以及排错

目录 一、MySQL的优化 1、调优思路 2、优化的方法 ①硬件优化 ②数据库设计与规划(基于架构上的优化) ③查询优化 ④磁盘IO规划,IO相关的技术 ⑥my.cnf内参数的优化 3、对查询进行缓存 4、强制限制mysql资源设置 5、关键字缓冲区 …

AUTOSAR Davinci 达芬奇BswM配置Ecu State Handling

BswMModeRequestPort 1、 状态描述 这个是属于ECU启动和休眠的状态处理机制,主要包含以下几种状态: ESH_INIT ESH_RUN ESH_POST_RUN ESH_PREP_SHUTDOWN ESH_WAIT_FOR_NVM ESH_SHUTDOWN ESH_WAKEUP 2、Init Value:ESH_INIT 3、Request Proc…

abc-347

title: abc 347 date: 2024-04-01 01:57:25 tags: 比赛 categories: 赛后思考与总结 A 思路 能够被整除的就输出 代码 void solve() {int n,k;cin >> n >> k;vector<int> vec;for(int i 1; i < n ; i ){int x; cin >> x;if(x % k 0) vec.push_…

Linux编程6.2 线程及并发控制-线程创建

线程创建及相关函数 1 pthread_create:创建线程 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);成功&#xff1a;返回0&#xff0c;否则返回错误编号参数 thread:线程标识符指…