入门指南:使用Prometheus监控Linux服务器

Prometheus介绍

image-20230331095757061

Prometheus是一款开源的监控系统,主要用于收集、存储和查询时间序列数据,以便于对系统进行监控和分析。以下是Prometheus的架构图介绍:

Prometheus的架构由四个主要组件组成:

  1. Prometheus Server(Prometheus服务器) :Prometheus Server是Prometheus的核心组件,主要负责从各个目标(target)中收集指标(metrics)数据,并对这些数据进行存储、聚合和查询。Prometheus Server还提供了一个Web界面,用于展示和查询监控数据。
  2. Client Libraries(客户端库) :Prometheus提供了多种客户端库,用于在应用程序中嵌入Prometheus的指标收集功能。客户端库支持多种编程语言,包括Go、Java、Python等,用户可以根据自己的需求选择合适的客户端库。
  3. Exporters(导出器) :Exporters是用于将第三方系统的监控数据导出为Prometheus格式的组件。Prometheus支持多种Exporters,例如Node Exporter、MySQL Exporter、HAProxy Exporter等,用户可以根据自己的需求选择适合的Exporter。
  4. Alertmanager:Alertmanager是Prometheus的告警组件,用于根据用户定义的规则对监控数据进行告警。Alertmanager支持多种告警方式,例如邮件、Slack、PagerDuty等。用户可以根据自己的需求选择适合的告警方式。

同时Prometheus有以下优点

  1. 灵活的数据模型:Prometheus采用的是key-value对的形式存储指标数据,每个指标都可以包含多个标签(labels),这样可以更加灵活地描述指标数据。例如,可以使用标签来描述不同的机器、不同的应用程序、不同的数据中心等,从而更加细粒度地监控系统。

  2. 高效的存储和查询:Prometheus使用自己的时间序列数据库,可以高效地存储和查询大量的指标数据。同时,Prometheus提供了灵活的查询语言(PromQL),可以对指标数据进行复杂的查询和聚合操作。

  3. 强大的可视化和告警功能:Prometheus提供了Web界面和API,可以方便地展示和查询监控数据。同时,Prometheus还提供了灵活的告警功能,可以根据用户定义的规则对监控数据进行告警,并支持多种告警方式。

  4. 可扩展性强:Prometheus的架构非常灵活,可以根据需要选择合适的组件进行配置。同时,Prometheus还支持多种扩展方式,例如使用Pushgateway将非常规的指标数据推送到Prometheus,使用Federation将多个Prometheus Server进行联合查询等。

  5. CNCF的成员项目:CNCF是一个非营利组织,致力于推广云原生技术,包括容器、服务网格、微服务、不可变基础设施等。Prometheus作为CNCF的项目之一,得到了广泛的关注和支持,并且得到了来自全球各地的贡献者的积极参与和开发。作为一个CNCF的项目,Prometheus不仅具有开源、社区化的特点,而且还受到了CNCF的支持和认可,可以更好地满足云原生环境下的监控需求。

下面就Prometheus基于本地环境进行监控报警进行讲解

下载

docker pull prom/prometheus:v2.43.0

image-20230329170341774

配置

创建文件夹data

image-20230329170516593

创建配置文件prometheus.yml,可以根据需要进行配置

global:scrape_interval:     15s # By default, scrape targets every 15 seconds.# Attach these labels to any time series or alerts when communicating with# external systems (federation, remote storage, Alertmanager).external_labels:monitor: 'codelab-monitor'# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'# Override the global default and scrape targets from this job every 5 seconds.scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']

因为路径过长,创建一个软链

 ln -s /Users/weizhao.dong/Documents/soft/prometheus /data/prometheus

启动

docker run --name prometheus -d -p 9090:9090 -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml   -v /data/prometheus:/prometheus prom/prometheus:v2.43.0

image-20230330141947743

image-20230330233346072

Grafana安装

下载

docker pull grafana/grafana-enterprise:8.5.22

image-20230330143946592

启动

docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise:8.5.22

image-20230330233325310

配置数据源

添加prometheus数据源

image-20230330233452500

image-20230515232307244

Linux服务器资源监控

下载node-exporter

由于我的电脑是arm架构所以使用了arm64的包,如果是其他架构请访问此链接进行下载https://github.com/prometheus/node_exporter/releases

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-arm64.tar.gz

下载解压执行node_exporter文件暴漏9100端口,即可采集到监控信息

image-20230330233733640

image-20230330233840865

安装node-exporter

由于直接启动node-exporter关闭窗口此进程就会挂掉,所以不是我们想要的,因此可以采用systemctl方式进行配置

  1. /usr/lib/systemd/system/目录,创建node_exporter.service文件,内容如下,ExecStart指向的就是node_exporter执行文件

    [Unit]
    Description=Node Exporter[Service]
    ExecStart=/usr/local/node_exporter
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    
  2. 执行systemctl daemon-reload

  3. 执行 systemctl start node_exporter启动node_exporter

  4. 执行netstat -aon|grep 9100查看9100是否启动成功

    image-20230330234533527

修改prometheus配置文件

增加以下任务,5s采集一次

  - job_name: 'linux'# Override the global default and scrape targets from this job every 5 seconds.scrape_interval: 5sstatic_configs:- targets: ['10.211.55.4:9100']

image-20230330234805218

重启prometheus

docker restart prometheus

image-20230330234904188

image-20230330234938650

Grafana文件配置

访问官网https://grafana.com/grafana/dashboards/下载node_export配置文件

image-20230330235849765

点击进去,点击右边的DownloadJson文件进行下载

image-20230330235927788

文件下载以后导入到Grafana

image-20230331000109536

导入完成以后,查看可以看到对应的数据采集到

image-20230331000226890

到这Linux监控就告一段落。

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

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

相关文章

PCL 点云最小二乘法拟合二维圆

文章目录 一、原理概述二、实现代码三、实现效果参考资料一、原理概述 二、实现代码 // 标准文件 #include <iostream>// PCL #include <pcl/io/pcd_io.h>

SVM原理理解

目录 概念推导&#xff1a; 共识&#xff1a;距离两个点集距离最大的分类直线的泛化能力更好&#xff0c;更能适应复杂数据。 怎么能让margin最大&#xff1f; 最大化margin即&#xff1a; 拉格朗日乘子法&#xff1a; 为什么公式中出现求和符号? SVM模型: 小结&#…

第59天:django学习(八)

事务 事务是MySQL数据库中得一个重要概念,事务的目的&#xff1a;为了保证多个SQL语句执行成功&#xff0c;执行失败&#xff0c;前后保持一致&#xff0c;保证数据安全。 开启事务的三个关键字 start transaction commit rollback 开启事务 from django.db import transaction…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number x 2 − 2 x 2 0 ⇒ x 1 i x^2-2x20\Rightarrow x1\pm i x2−2x20⇒x1i 代数表达&#xff1a; z a b i , R e ( z ) a , I m ( z ) b zabi,\mathrm{Re}…

GO设计模式——9、过滤器模式(结构型)

目录 过滤器模式&#xff08;Filter/Criteria Pattern&#xff09; 代码实现 过滤器模式&#xff08;Filter/Criteria Pattern&#xff09; 过滤器模式&#xff08;Filter Pattern&#xff09;或标准模式&#xff08;Criteria Pattern&#xff09;是一种设计模式&#xff0c;…

【深度学习】一维数组的聚类

在学习聚类算法的过程中&#xff0c;学习到的聚类算法大部分都是针对n维的&#xff0c;针对一维数据的聚类方式较少&#xff0c;今天就来学习下如何给一维的数据进行聚类。 方案一&#xff1a;采用K-Means对一维数据聚类 Python代码如下&#xff1a; from sklearn.cluster im…

shell语言判断

目录 判断&#xff1a; shell条件测试 数值比较 文件测试 字符串比较 and和or 流程控制if&#xff1a; 单分支结构&#xff1a; 双分支结构 多分支结构 嵌套结构 调试脚本 注意&#xff1a; 测试语法&#xff1a; 模式匹配&#xff1a;case 判断&#xff1a; …

Vue 防止页面闪烁 v-cloak

v-cloak 指令&#xff1a;用于解决页面渲染的过程中&#xff0c;出现闪烁的问题。 注&#xff1a;当网速较慢&#xff0c;来不及渲染时&#xff0c;页面上就会出现源码【例如&#xff1a;{{ xxx }} 】。 语法格式&#xff1a; <template><div v-cloak>内容</d…

[python库] mistune库的基本使用

前言 mistune库是一个解析Markdown的利器&#xff0c;使用起来非常简单。当我们想要解析Markdown格式的文档时&#xff0c;只需两步就能将其转换成html格式。如下&#xff1a; import mistune mistune.html(YOUR_MARKDOWN_TEXT)安装方式也非常简单&#xff0c;dddd&#xff1…

JavaSE基础50题:10. 计算1/1-1/2+1/3-……+1/99-1/100的值(两种方法)

概述 计算1/1 - 1/2 1/3 - …… 1/99 - 1/100的值。 当分母为偶数时&#xff0c;符号是负的&#xff0c;放分母为奇数时&#xff0c;符号是负的。 方法一 用 flg 做了一个正负交替 【代码】 public static double func() {double sum 0;int flg 1; //设置正负号的for (i…

java中可重入锁是什么?

可重入锁是一种支持同一个线程多次获得同一把锁的锁机制。在 Java 中&#xff0c;synchronized 关键字和 ReentrantLock 类都支持可重入锁。 可重入锁的主要特点是允许同一个线程多次获取同一把锁&#xff0c;而不会导致死锁。这使得在进行递归调用或者多层调用的情况下&#…

CopyOnWriteArraySet怎么用

简介 CopyOnWriteArraySet是一个线程安全的无序集合&#xff0c;它基于“写时复制”的思想实现。它继承自AbstractSet&#xff0c;可以将其理解成线程安全的HashSet。 CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程…

力扣每日一题day29[102. 二叉树的层序遍历]

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&#xff1a; 输入&…

『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建PG开源数据库

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器&#xff08;Elastic Compute Cloud&#xff09;是亚马…

配置Ubuntu18.04使iptables规则重启系统后仍然有效

第一步&#xff1a;保存iptables规则到文件 /etc/iptables.rules iptables-save > /etc/iptables.rules 第二步&#xff1a;将如下代码写入 /etc/rc.local #!/bin/sh iptables-restore < /etc/iptables.rules 第三步&#xff1a;为 /etc/rc.local 文件赋可执行权限 …

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

VUE.js

后端&#xff1a; BookMapper&#xff1a; <select id"selectBybookname" resultMap"BaseResultMap" parameterType"java.lang.String" >select<include refid"Base_Column_List" />from t_book<where><if tes…

NOIP2014提高组第二轮day1 - T3:飞扬的小鸟

#题目链接 [NOIP2014 提高组] 飞扬的小鸟 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度&#xff0c;让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话&#xff0c;便宣告失败…

深度解析 Kafka 消息保证机制

Kafka作为分布式流处理平台的重要组成部分&#xff0c;其消息保证机制是保障数据可靠性、一致性和顺序性的核心。在本文中&#xff0c;将深入探讨Kafka的消息保证机制&#xff0c;并通过丰富的示例代码展示其在实际应用中的强大功能。 生产者端消息保证 1 At Most Once &quo…

pip的常用命令

安装、卸载、更新包&#xff1a;pip install [package-name]&#xff0c;pip uninstall [package-name]&#xff0c;pip install --upgrade [package-name]。升级pip&#xff1a;pip install --upgrade pip。查看已安装的包&#xff1a;pip list&#xff0c;pip list --outdate…