使用Prometheus组件node_exporter采集linux系统的指标数据(包括cpu/内存/磁盘/网络)

一、背景

Linux系统的基本指标包括cpu、内存、磁盘、网络等,其中网络可以细分为带宽进出口流量、连接数和tcp监控等。

本文使用Prometheus组件node_exporter采集,存储在promethues,展示在grafana面板。

二、安装node_exporter

1、下载至本地

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz

在这里插入图片描述

2、运行node-exporter

默认运行的端口号是9100

tar xvfz node_exporter-1.3.1.linux-amd64.tar.gzmv node_exporter-1.3.1.linux-amd64 node-exportercd node-exporternohup ./node_exporter >/dev/null 2>&1 &

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,node_exporter进程启动完成,其进程号是15479。见上图。

  • 指定端口号为9102

如果端口9100已被占用,可以另外指定运行端口。

nohup ./node_exporter --web.listen-address=":9102" >/dev/null 2>&1 &
  • 查看进程

进程号是15479,与启动进程时输出的一致。

在这里插入图片描述

  • 查看端口号

我们没有在运行的时候指定端口号,所以它默认运行的端口号是9100。从下图也可以看到,它的进程号是154709

在这里插入图片描述

三、prometheus配置

prometheus采集指标,是采用pull拉取的方式,必须知晓被抓取指标的地址。

对于node_exporter,它的指标地址是http://{ip}:9100/metrics (如果你是默认端口启动)
在这里插入图片描述

在prometheus.yml配置

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'file_sd'metrics_path: '/metrics'file_sd_configs:- files:- linux-targets.json

修改配置文件linux-targets.json

在这里插入图片描述

在这里插入图片描述

实时生效,无需重启

配置实时生效,因为我们在启动prometheus进程的时候,是采用热加载的方式。

# 保存10天的数据
./prometheus --web.enable-lifecycle --web.enable-admin-api --storage.tsdb.retention=10d

四、grafana展示

使用grafana官方面板,https://grafana.com/dashboards/8919

Node Exporter Dashboard
在这里插入图片描述
在这里插入图片描述

可以看到,这台机器的磁盘空间已使用86.9%了,标红提醒我们注意磁盘清理或扩容。

在这里插入图片描述

最后,我们看一看这台机器的网络情况。

在这里插入图片描述
TCP_tw, 是指TCP连接处于TIME_WAIT状态的数量,说明了有多少是主动关闭的连接。

附: 网络socket连接指标之TIME_WAIT

TIME_WAIT 是「主动关闭方」断开连接时的最后一个状态,该状态会持续 2MSL(Maximum Segment Lifetime) 时长,之后进入CLOSED 状态。

1、TCP_TW状态的设计初衷

TCP_TW状态的主要原因是防止由于网络原因,FIN包或者ACK包没有到达对方。如果没有进入TCP_TW状态,那么就会立即回收socket和相关资源,这个时候FIN包到了接收方,接收方返回一个ACK包,但是由于sender已经释放了相关资源,这个时候ACK就无处可去,接收方无法获取到这个ACK,这就不只是一个连接的问题了,可能会导致链接资源耗尽等问题。

2、TCP_TW是如何回收的

TCP_TW状态的回收是通过定时器来完成的。每当一个socket进入TCP_TW状态时,系统就会开启一个定时器,并等待固定时间,比如2分钟。在这个时间内,如果接收到对方的ACK包,那么这个定时器就会被立即销毁,并进入CLOSE状态。

然而,在TCP_TW状态下,如果由于ACK漏接或者其他原因,这个时间到了之后还没有收到对方的ACK包,那么这个socket就需要被回收。如果这个socket处于端口共享状态,那么socket实际上不会被立即回收,而是进入假CLOSE状态。这个时候,TCP协议会重新分配一个随机数seq,同时重置计时器,如果在一段时间之内,没有收到对方发来的重复的ACK包,那么socket就会被彻底关闭。

3、关注TCP_tw指标

  • 系统中同时存在大量TCP_TW状态的socket就会导致系统资源的压力,可能会引导奔溃。为了避免这种情况,可以通过修改内核参数来限制TCP_TW状态的数量。一般来说,建议将内核参数设置为6000左右。

  • 防止SYN等IP攻击。攻击者可以通过大量的SYN包来伪造TCP协议中的一个socket,从而放置于TCP_TW状态。如果这种攻击成功,系统的队列资源将被占满,无法被其他请求使用,系统就会崩溃。为了防止这个问题,可以在系统中添加过滤规则,阻止来自可疑IP地址的请求。

  • 在协议栈中,应用程序和内核之间的性能问题。每进入一个TCP_TW状态,都意味着会在内核中创建一个资源对象,这个资源对象的使用可能会带来一些性能问题。如果TCP_TW状态对象过多,就有可能导致内存使用过高,而且更加影响网络系统的性能。

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

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

相关文章

Bean 的生命周期的各个阶段

Bean的生命周期通常可以归结为以下几个阶段&#xff1a; 1.实例化&#xff08;Instantiation&#xff09;&#xff1a; Spring根据Bean的定义&#xff08;如XML配置、Java配置或注解&#xff09;来实例化Bean&#xff0c;这个阶段会分配内存空间给Bean&#xff0c;生成一个原始…

微服务:Ribbon负载均衡与加载时机修改

Ribbon 负载均衡 执行流程 负载均衡策略 调整负载均衡方案&#xff1a; 配置类中&#xff08;全局&#xff09;&#xff1a; // 负载均衡策略Beanpublic IRule randomRule() {return new RandomRule();}yaml配置 userservice: # 给某个微服务配置负载均衡规则&#xff…

Mac 安装 git

文章目录 前言一、介绍二、下载三、验证四、配置五、Git常用命令六、git提交和撤销工作流程代码提交和提交同步代码撤销和撤销同步 FAQ1.homebrew 下载解决方法一&#xff08;强烈推荐&#xff09;&#xff1a;解决方法二&#xff1a; 总结 前言 Git 是一个开源的分布式版本控…

Fastadmin框架使用phpstudy部署,部分页面404无法显示

背景 在windows系统下&#xff0c;使用phpstudy部署fastadmin框架&#xff0c;会部分页面404无法访问。 解决方案 原来是要用伪静态&#xff0c;自己看官方视频时喜欢跳着看&#xff0c;刚好漏了&#xff0c;这里记录下。 依次点击如下&#xff1a; 如果你是Apache&#xf…

使用libtorch加载YOLOv8生成的torchscript文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集&#xff0c;使用 LabelMe 工具进行标注&#xff0c;然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件&#xff0c;并自动生成YOLOv8支持的目录结构&#xff0c;包括melon.yaml文件&#xff0c;其内容…

【C语言】自定义类型:联合与枚举的简明概述

&#x1f525;引言 关于自定义类型除了我们常用的结构体&#xff0c;还有联合与枚举也是属于自定义类型。本篇将简单介绍联合与枚举基本概念和使用方法 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&…

etcd 和 MongoDB 的混沌(故障注入)测试方法

最近在对一些自建的数据库 driver/client 基础库的健壮性做混沌&#xff08;故障&#xff09;测试, 去验证了解业务的故障处理机制和恢复时长. 主要涉及到了 MongoDB 和 etcd 这两个基础组件. 本文会介绍下相关的测试方法. MongoDB 中的故障测试 MongoDB 是比较世界上热门的文…

php部分特性漏洞学习

php部分函数漏洞学习 简单总结一些我遇到的ctf中的php的一些函数或特性的漏洞&#xff0c;我刷题还是太少了&#xff0c;所以很多例子来自ctfshow&#xff0c;以后遇到相关赛题再更新 1.MD5和其他hash 弱类型比较 php中&#xff0c;有两中判断相等的符号&#xff0c;和&…

c# 贪心算法(Greedy Algo)

贪婪是一种算法范式&#xff0c;它逐步构建解决方案&#xff0c;始终选择提供最明显和直接收益的下一个部分。贪婪算法用于解决优化问题。 如果问题具有以下属性&#xff0c;则可以使用贪心法解决优化问题&#xff1a; 每一步&#xff0c;我们都可以做出当前看来最好的选择&…

HTML-JavaWeb

目录 1.标题排版 2.标题样式 ​编辑 ​编辑 小结 3.超链接 4.正文排版 ​编辑​编辑​编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…

月薪5万是怎样谈的?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;星球号&#xff1a;63559049&#xff09;里的学员问&#xff1a;目前是晶圆厂的PE&#xff0c;但是想跳槽谈了几次薪水&#xff0c;都没法有大幅度的增长&#xff0c;该怎么办&#xff1f;“学得文武…

感知觉训练:解锁独立生活的钥匙

在日新月异的科技时代&#xff0c;一款名为“蝙蝠避障”的辅助软件以其独到之处&#xff0c;为盲人朋友的日常生活平添了诸多便利&#xff0c;不仅实现了实时避障&#xff0c;还通过拍照识别功能扩展了信息获取的边界。然而&#xff0c;科技辅助之外&#xff0c;提升盲人朋友的…

低代码的原理、发展历史、使用场景和优势。

在数字化转型的浪潮中&#xff0c;低代码开发平台&#xff08;YDUIbuilder&#xff09;以其独特的优势迅速崛起&#xff0c;为各行各业带来了创新的解决方案。本文将深入探讨低代码的原理、发展历史、使用场景以及它所带来的优势。 gitee下载&#xff1a;yduibuilder: 快速开发…

MySQL从入门到高级 --- 10.索引

文章目录 第十章&#xff1a;10.索引10.1 分类10.2 创建索引10.2.1 单列索引 - 普通索引10.2.2 查看索引10.2.3 删除索引10.2.4 单列索引 - 唯一索引10.2.5 单列索引 - 主键索引10.2.6 组合索引 10.3 全文索引10.3.1 概述10.3.2 使用 10.4 空间索引10.4.1 操作 10.5 原理10.5.1…

PyTorch学习笔记:新冠肺炎X光分类

前言 目的是要了解pytorch如何完成模型训练 https://github.com/TingsongYu/PyTorch-Tutorial-2nd参考的学习笔记 数据准备 由于本案例目的是pytorch流程学习&#xff0c;为了简化学习过程&#xff0c;数据仅选择了4张图片&#xff0c;分为2类&#xff0c;正常与新冠&#xf…

Python爬虫实战:利用代理IP获取电商数据

文章目录 1.电商数据介绍2.爬取目标3.代理IP推荐4.准备工作4.1 模块安装4.2 代理IP获取 5.爬虫代码实战5.1分析网页5.1.1 获取cookie5.1.2 关键词分析5.1.3 翻页分析5.1.4 数据获取分析 5.2 发送请求5.3 提取数据5.4 保存数据5.5 完整源码5.6 数据分析六、总结 1.电商数据介绍 …

回收站清空的文件怎么恢复?8个方法公开(2024更新版)

“我太粗心了&#xff0c;刚想恢复部分回收站中误删的重要文件&#xff0c;一不小心把回收站清空了&#xff0c;现在还有什么方法可以恢复它们吗&#xff1f;” 在数字时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;随着我们对电脑的依赖加…

linux经典定时任务

在使用时记得替换为自己的脚本路径。请在相应的脚本第一行加上#!/bin/bash&#xff0c;否则脚本在定时任务中无法执行。 1、在每天凌晨2点执行 0 2 * * * /bin/sh bashup.sh 2、每天执行两次 下面的示例命令将在每天上午5点和下午5点执行。您可以通过逗号分隔指定多个时间戳…

LeetCode:279.完全平方数

class Solution:def numSquares(self, n: int) -> int:dp[i for i in range(n1)]for i in range(2,n1):for j in range(1,int(i**(0.5))1):dp[i]min(dp[i],dp[i-j*j]1)return dp[-1]代码解释 初始化 DP 数组&#xff1a; dp [i for i in range(n1)] 这里&#xff0c;dp[i]…

【云原生】Kubernetes-----POD资源限制与探针机制

目录 引言 一、资源限制 &#xff08;一&#xff09;基本定义 &#xff08;二&#xff09;资源单位 1.CPU资源 2.内存资源 &#xff08;三&#xff09;请求与限制 &#xff08;四&#xff09;定义方式 1.编写yaml文件 2.查看资源情况 &#xff08;五&#xff09;资源…