prometheus学习之机器监控(代码片段)

kongxx kongxx     2022-11-29     252

关键词:

Prometheus 使用 exporter 工具来暴露主机和应用程序上的指标。今天我们就使用 node_exporter 来收集各种主机指标数据(如:CPU、 内存和磁盘等)。

安装node_exporter

从 Prometheus 的官网下载安装包,这里下载的是 Linux 安装包。
下载地址: https://prometheus.io/download/
安装包: node_exporter-0.18.1.linux-amd64.tar.gz

$ tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
$ cd node_exporter-0.18.1.linux-amd64/
$ ./node_exporter --version
node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e)
  build user:       root@b50852a1acba
  build date:       20190604-16:41:18
  go version:       go1.12.5

运行node_exporter

直接运行 node_exporter 命令即可启动服务,此时会打印出当前启用了那些指标收集,如下:

$ ./node_exporter 
INFO[0000] Starting node_exporter (version=0.18.1, branch=HEAD, revision=3db77732e925c08f675d7404a8c46466b2ece83e)  source="node_exporter.go:156"
INFO[0000] Build context (go=go1.12.5, user=root@b50852a1acba, date=20190604-16:41:18)  source="node_exporter.go:157"
INFO[0000] Enabled collectors:                           source="node_exporter.go:97"
INFO[0000]  - arp                                        source="node_exporter.go:104"
INFO[0000]  - bcache                                     source="node_exporter.go:104"
INFO[0000]  - bonding                                    source="node_exporter.go:104"
INFO[0000]  - conntrack                                  source="node_exporter.go:104"
INFO[0000]  - cpu                                        source="node_exporter.go:104"
INFO[0000]  - cpufreq                                    source="node_exporter.go:104"
INFO[0000]  - diskstats                                  source="node_exporter.go:104"
INFO[0000]  - edac                                       source="node_exporter.go:104"
INFO[0000]  - entropy                                    source="node_exporter.go:104"
INFO[0000]  - filefd                                     source="node_exporter.go:104"
INFO[0000]  - filesystem                                 source="node_exporter.go:104"
INFO[0000]  - hwmon                                      source="node_exporter.go:104"
INFO[0000]  - infiniband                                 source="node_exporter.go:104"
INFO[0000]  - ipvs                                       source="node_exporter.go:104"
INFO[0000]  - loadavg                                    source="node_exporter.go:104"
INFO[0000]  - mdadm                                      source="node_exporter.go:104"
INFO[0000]  - meminfo                                    source="node_exporter.go:104"
INFO[0000]  - netclass                                   source="node_exporter.go:104"
INFO[0000]  - netdev                                     source="node_exporter.go:104"
INFO[0000]  - netstat                                    source="node_exporter.go:104"
INFO[0000]  - nfs                                        source="node_exporter.go:104"
INFO[0000]  - nfsd                                       source="node_exporter.go:104"
INFO[0000]  - pressure                                   source="node_exporter.go:104"
INFO[0000]  - sockstat                                   source="node_exporter.go:104"
INFO[0000]  - stat                                       source="node_exporter.go:104"
INFO[0000]  - textfile                                   source="node_exporter.go:104"
INFO[0000]  - time                                       source="node_exporter.go:104"
INFO[0000]  - timex                                      source="node_exporter.go:104"
INFO[0000]  - uname                                      source="node_exporter.go:104"
INFO[0000]  - vmstat                                     source="node_exporter.go:104"
INFO[0000]  - xfs                                        source="node_exporter.go:104"
INFO[0000]  - zfs                                        source="node_exporter.go:104"
INFO[0000] Listening on :9100                            source="node_exporter.go:170"

服务启动后,可以通过浏览器访问 http://:9100 查看收集的指标。

上面这么多参数,如果我们不想收集某个指标,可以在启动服务的时候使用 --no-collector.xxx 来指定。比如 “./node_exporter --no-collector.zfs” 指定不收集 zfs 指标。

配置Prometheus

node_exporter 服务启动后,需要将其添加到 Prometheus 的配置中才能使其生效。现修改 prometheus.yml 文件,在 scrape_configs 下添加

scrape_configs:
  ...
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']

修改后完整的 prometheus.yml 文件内容如下:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']

默认 node_exporter 会收集很多指标,我们也可以在配置文件中设置只收集需要的指标,比如:

...
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']
    params:
      collect[]:
        - cpu
        - meminfo
        - loadavg
        - netstat

启动Prometheus

修改配置文件后,需要重新启动 Prometheus 服务。服务启动后,在浏览器通过访问 http://localhost:9090 来查看监控信息。

此时,我们可以通过输入 “instance=“localhost:9100”,job=“node”” 来过滤只显示新加入的指标。

比如:输入 node_cpu_seconds_totalinstance=“localhost:9100”,job=“node” 可以查看节点 CPU 监控指标。

Element     Value
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="idle"    3653653.37
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="iowait"  5653.09
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="irq" 0
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="nice"    5.95
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="softirq" 155.15
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="steal"   0
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="system"  14571.01
node_cpu_seconds_totalcpu="0",instance="localhost:9100",job="node",mode="user"    16084.06

prometheus学习之blackbox(代码片段)

简介Prometheus的探针监控可以在应用程序的外部对应用程序进行探测,比如:探测机器的http服务是否工作正常等。这里就看看怎样使用Prometheus的BlackboxExporter来实现这个功能。Prometheus的BlackboxExporter允许通过HTTP/HTTPS,TC... 查看详情

prometheus学习之blackbox(代码片段)

简介Prometheus的探针监控可以在应用程序的外部对应用程序进行探测,比如:探测机器的http服务是否工作正常等。这里就看看怎样使用Prometheus的BlackboxExporter来实现这个功能。Prometheus的BlackboxExporter允许通过HTTP/HTTPS,TC... 查看详情

prometheus学习之blackbox(代码片段)

简介Prometheus的探针监控可以在应用程序的外部对应用程序进行探测,比如:探测机器的http服务是否工作正常等。这里就看看怎样使用Prometheus的BlackboxExporter来实现这个功能。Prometheus的BlackboxExporter允许通过HTTP/HTTPS,TC... 查看详情

机器学习之决策树(代码片段)

一、复习信息熵  为了解决特征选择问题,找出最优特征,先要介绍一些信息论里面的概念。   1、熵(entropy)        python3代码实现:defcalcShannonEnt(dataSet):‘‘‘计算香农熵:paramdataSet:数据集:return:计算结果... 查看详情

机器学习之新闻文本分类。(代码片段)

新闻文本分类首先需要通过大量的训练之后获得一个存放关键字的表,之后再输入一个新闻内容,通过代码就可以自动判断出这个新闻的类别,我这里是在已经有了新闻文本的关键词表后的处理,#encoding=utf-8#遍历文件,用Prosesso... 查看详情

rust机器学习之tch-rs(代码片段)

Rust机器学习之tch-rstch-rs是PyTorch接口的Rust绑定,可以认为tch-rs是Rust版的PyTorch。本文将带领大家学习如何用tch-rs搭建深度神经网络识别MNIST数据集中的手写数字。本文是“Rust替代Python进行机器学习”系列文章的第五篇,其... 查看详情

机器学习之特征选择方法(代码片段)

特征选择是一个重要的数据预处理过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后在训练学习器,如下图所示:进行特征选择有两个很重要的原因:避免维数灾难:能剔除不相关(irrelevant)或冗余(redundant)... 查看详情

浅谈机器学习之深度学习(代码片段)

...公众号yk坤帝获取更多学习资料,学习建议1.1.4深度学习之“深度”深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有... 查看详情

机器学习之推荐算法(代码片段)

1、知识点"""推荐系统1、相似度计算:1、欧几里德距离2、皮尔逊相关系数3、Cosin距离2、推荐相似度选择:1、固定数量的邻居2、基于相似度门槛的邻居3、基于用户的协同过滤:根据用户和其他用户之间的相关系数值,选择值越... 查看详情

机器学习之深度学习入门(代码片段)

个人公众号yk坤帝获取更多学习资料,学习建议本文用浅显易懂的语言精准概括了机器学习的相关知识,内容全面,总结到位,剖析了机器学习的what,who,when,where,how,以及why等相关问题。从机器学习... 查看详情

机器学习之集成学习算法(代码片段)

一、 集成学习算法简介1.1什么是集成学习集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类... 查看详情

机器学习之线性回归(代码片段)

文章目录评价方法一元线性回归np.polyfit求解带入公式求解化简公式求解lstsq求解多元线性回归代码实现一元多项式回归代码实现参考评价方法回归问题有很多的评价方法。这里主要想写一下R^2的计算方法。需要计算R^2需要先弄清... 查看详情

机器学习之支持向量机(手推公式版)(代码片段)

文章目录前言1.间隔与支持向量2.函数方程描述3.参数求解3.1拉格朗日乘数3.2拉格朗日对偶函数前言  支持向量机(Support(Support(SupportVectorVectorVectorMachine,SVM)Machine,SVM)Machine,SVM)源于统计学习理论,是一种二分类模型,是机... 查看详情

机器学习之linearregression线性回归(代码片段)

一、预测先来看看这样一个场景:假如你手头有一套房子要出售,你咨询了房产中介。中介跟你要了一系列的数据,例如房子面积、位置、楼层、年限等,然后进行一系列计算后,给出了建议的定价。房产中介是如何帮你定价的... 查看详情

集成学习之随机森林案例专题python机器学习系列(十七)(代码片段)

集成学习之随机森林案例专题【Python机器学习系列(十七)】文章目录1.Bagging与随机森林简介2.随机森林--分类任务2.1准备数据2.2python实现随机森林--分类任务2.3绘制ROC曲线与计算AUC2.4绘制决策树3.随机森林--回归任务集成... 查看详情

机器学习之分类模型评估指标及sklearn代码实现(代码片段)

文章目录前言Accuracy(准确率)、Recall(召回率)、Precision(精确率)、F1评分(F1-Score)Accuracy(准确率)Recall(召回率)Precision(精确率)F1评 查看详情

强烈推荐机器学习之算法篇(代码片段)

机器学习算法机器学习算法数据类型:可用数据集:监督学习和无监督学习:算法分类:scikit-learn数据集获取数据集:获取数据集方式:数据集的划分:本地数据集:分类数据集:回归数据集&#x... 查看详情

强烈推荐机器学习之算法篇(代码片段)

机器学习算法机器学习算法数据类型:可用数据集:监督学习和无监督学习:算法分类:scikit-learn数据集获取数据集:获取数据集方式:数据集的划分:本地数据集:分类数据集:回归数据集&#x... 查看详情