Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松

news/2024/5/19 2:02:53 标签: Prometheus, grafana, NodeExporter

Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松》

一、概述

本文使用Prometheus+Grafana+Node Exporter搭建Linux主机监控系统:

  • Prometheus 是一个监控系统,可以收集和存储来自各个目标的指标数据。它支持多种数据源,包括 Node Exporter。

  • Grafana 是一个可视化工具,可以用于可视化 Prometheus 收集到的指标数据。它提供了多种仪表盘和图表类型,可以帮助您快速了解监控数据。

  • Node Exporter是一个进程,可以收集 Linux 主机的各种指标数据,并将其暴露为 Prometheus 可以抓取的 HTTP 端点。

二、安装

环境准备

以下是本文所需的环境:

  • 一台运行 Linux 的服务器(建议使用 CentOS 或 Ubuntu)
  • Docker
  • Prometheus 和 Grafana
  • Node Exporter

1、安装prometheus

这里我们可以在github上获取最新的版本:https://github.com/prometheus/prometheus

vim prometheus.yml
# my global config
global:
  scrape_interval:     15s # 采集被监控段指标的一个周期
  evaluation_interval: 15s # 告警评估的一个周期

# 告警的配置文件
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# 告警规则配置
rule_files:
  # - "first_rules.yml"
# 被监控端的配置,目前只有一个节点,就是prometheus本身
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
docker run -d  -p 9090:9090 \
--name prometheus  \
--restart on-failure  \
-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus

完全启动后可以,访问Prometheus自带的UI:http://xx.xx.xx.xx:9090/,打开以下页面说明安装成功。

2、安装grafana

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

执行后,下载镜像并启动。完成启动完成,打开http://xx.xx.xx.xx:3000,默认用户名/密码:admin/admin

3、安装node_exporter

cd /usr/local/src/
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz
mv /usr/local/src/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin
vim /usr/lib/systemd/system/node_exporter.service

node_exporter.service文件内容:

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter

启动后打开这个地址:http://xx.xx.xx.xx:9100/

以上页面能打开说明安装成功。

如果安装失败可以使用:

systemctl status node_exporter

看看有什么异常。

4、配置prometheus

# 启动后,配置prometheus.yml
vim /data/prometheus/prometheus.yml
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: ['xx.xx.xx.xx:9090']
  # 新增,采集node_exporter监控数据
  - job_name: "Linux-Metrics"
    static_configs:
    - targets: ['xx.xx.xx.xx:9100']
# 重新启动prometheus
systemctl restart prometheus

三、使用

http://xx.xx.xx.xx:3000,默认用户名/密码:admin/admin

选择 "Add your first data source"

进入后选择Prometheus

填写相关信息

添加Prometheus模板

输入id号,9276

然后下拉,选择Prometheus,然后Import

成功展示来由Prometheus数据

至此整个Linux主机监控就完成了。

四、补充

1、Dashboard模板

如果不知道使用什么模板可以找个教程使用教程里的就好,如果想进一步了解下模板可以去官网这里搜索相应的模板。Dashboards | Grafana Labs ,里面可以输入关键词搜索,还有相应的下载量排名或评分排名。

选择一个,点击进入详情页面,可以复制ID

2、数据对照

可以看到有些数据与top是一致的,有的不一致。主要是计算的方式不一致,可以选择一个统计图,点击标题

Edit进入详情。

比如已用内存它是根据这个计算公式算出来的。这样再对照着top的数据就是一致的了。

3、自定义模板

上面说到可以Edit进入dashboard详情,可以看到这么多的表达式。如果我们想调整这里的数据或过滤条件就可以编辑这些参数了。

当然从Edit进入的是单个统计模块,也可以从这里进入整个dashboard模板。修改这里的json

再来说一下这个表达式,这个表达式也就是PromQL 语言。

Grafana Dashboard 中的表达式是 PromQL 语言,它是 Prometheus 的指标查询语言。PromQL 是一种基于 Prometheus 数据模型的查询语言,可以用于查询和过滤 Prometheus 的指标数据。

PromQL 表达式可以用于以下目的:

  • 查询指标数据
  • 过滤指标数据
  • 计算指标数据
  • 对指标数据进行聚合

PromQL 表达式使用以下语法:

[指标名] [操作符] [值]

例如,以下表达式将查询 CPU 使用率的指标数据:

cpu_usage

以下表达式将查询 CPU 使用率的指标数据,并将其限制为 100%:

cpu_usage < 100

以下表达式将计算 CPU 使用率的指标数据的平均值:

avg(cpu_usage)

以下表达式将将 CPU 使用率的指标数据按主机聚合:

by(host) cpu_usage

PromQL 语言具有丰富的功能,可以满足各种监控需求。

以下是一些常用的 PromQL 表达式:

  • 查询指标数据
cpu_usage
  • 过滤指标数据
cpu_usage < 100
  • 计算指标数据
avg(cpu_usage)
  • 对指标数据进行聚合
by(host) cpu_usage

如何简单调试PromQL,可以打开prometheus自带的web ui进入调试


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

相关文章

跨境电商电动交通设备需CE认证亚马逊出口美国市场UL报告办理解析

电动自行车或电动滑板车的独立替换电池。电动交通设备的电池包括作为电动自行车或电动滑板车配件单独销售的任何&#xff08;原装或非原装&#xff09;电池。 注意&#xff1a; 某些类型的替换电池没有 CE 或 UKCA 标志。此类商品不符合在亚马逊商城销售的要求。示例&#xff…

MySQL---表的增查改删(CRUD进阶)

文章目录 数据库约束表的设计一对一一对多多对多 新增查询聚合查询分组查询联合查询内连接外连接自连接子查询合并查询 数据库约束 数据库约束就是指&#xff1a;程序员定义一些规则对数据库中的数据进行限制。这样数据库会在新增和修改数据的时候按照这些限制&#xff0c;对数…

oracle,CLOB转XML内存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

通过kettle采集数据时&#xff0c;表输入的组件&#xff0c;查询报错。 ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE”, line 272 ORA-06512: at line 1 通过 ALTER SESSION SET EVENTS ‘31156 trace name context forever, level 0x400’; 修改会话配置 或直接修改…

机器学习实验六:决策树-海洋生物例子

#创建数据集 import numpy as np import pandas as pd from sklearn import tree from sklearn.tree import DecisionTreeClassifier import graphviz def createDataSet():row_data {no surfacing:[1,1,1,0,0],flippers:[1,1,0,1,1],fish:[yes,yes,no,no,no]}dataSet pd.Dat…

vue 无限滚动插件 vue-seamless-scroll

1.安装 npm install vue-seamless-scroll --save** 2.页面注册使用 ** //页面 //注&#xff1a;tablesRow 为 overflow hidden<div class"tablesRow"><vue-seamless-scroll :data"study2table" :class-option"classOption1">//…

如何学好C++?学习C和C++的技巧是什么?

如何学好C?学习C和C的技巧是什么&#xff1f; 你这三个问题&#xff0c;前两个都是意思是差不多的&#xff0c;那么怎么怎么学习C/C我来问答一下&#xff1a;最近很多小伙伴找我&#xff0c;说想要一些C资料&#xff0c;然后我根据自己从业十年经验&#xff0c;熬夜搞了几个通…

【JavaScript】leetcode链表相关题解

【JavaScript】leetcode链表相关题解 一、什么是链表&#xff1f;二、Javascript中的链表三、leetcode相关链表2.两数相加237.删除链表中的节点206.反转链表 &#x1f48e;个人主页: 阿选不出来 &#x1f48e;个人简介: 大三学生&#xff0c;热爱Web前端&#xff0c;随机掉落学…

分布式存储系统Ceph应用组件介绍

1、 无中心架构分布式存储Ceph Ceph是一套开源的分布式存储系统。具有可靠性高&#xff0c;性能优良&#xff0c;可伸缩&#xff0c;与HDFS不同的地方在于&#xff0c;该架构中没有中心节点。 Ceph优点在于它不单单是存储&#xff0c;同时还充分利用了存储节点上的计算能…