5分钟部署Prometheus+Grafana批量监控Linux服务器

news2024/11/15 21:00:22

文章目录

    • 一键安装Node Exporter
    • 安装prometheus
      • 创建数据存储目录
      • 创建配置文件
      • 下载运行Prometheus
    • 安装Grafana
      • 创建数据目录
      • 下载运行Grafana
      • 配置Grafana监控Linux服务器
        • 登录
        • 首次登录后设置密码
        • 添加数据源
        • 选择prometheus
        • 填写prometheus地址
        • 导入模板


最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能、开发运维相关技术分享,文章对您有用的话,辛苦您也关注下公众号,感谢!


本文将为你详细讲解如何在 Linux 服务器上使用 Docker 容器快速部署 Prometheus 和 Grafana 监控系统,同时通过 node_exporter 采集全面的系统性能数据。整个流程涵盖了从环境配置到搭建一个全面监控平台的每个步骤。

先来几张效果图:

image-12831924222502610

image-12831924222607872

image-12831924222637672

一键安装Node Exporter

Node Exporter 是 Prometheus 生态系统中的一个关键组件,它专门用于收集和导出 Linux 系统的硬件和操作系统指标,如 CPU 使用率、内存利用率、磁盘 IO、网络统计等。这些数据可以帮助你深入了解服务器的性能表现,从而提高系统的监控和管理效率。

该服务所有需要监控的服务器安装,属于数据采集Agent。

下面是一键安装的脚本,脚本设置了国内加速

#!/bin/bash

# 定义变量
URL="https://mirror.ghproxy.com/https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz"
TAR_FILE="node_exporter-1.8.2.linux-amd64.tar.gz"
DIR_NAME="node_exporter-1.8.2.linux-amd64"
LISTEN_PORT="9100"

# 下载文件
echo "Downloading $TAR_FILE..."
wget -c $URL -O $TAR_FILE
if [ $? -ne 0 ]; then
  echo "Error: Failed to download $TAR_FILE."
  exit 1
fi

# 解压文件
echo "Extracting $TAR_FILE..."
tar -zxvf $TAR_FILE
if [ $? -ne 0 ]; then
  echo "Error: Failed to extract $TAR_FILE."
  exit 1
fi

# 进入解压后的目录
echo "Changing directory to $DIR_NAME..."
cd $DIR_NAME
if [ $? -ne 0 ]; then
  echo "Error: Failed to change directory to $DIR_NAME."
  exit 1
fi

# 后台运行 node_exporter
echo "Starting node_exporter on port $LISTEN_PORT..."
nohup ./node_exporter --web.listen-address=":$LISTEN_PORT" > node_exporter.stdout 2>&1 &
if [ $? -ne 0 ]; then
  echo "Error: Failed to start node_exporter."
  exit 1
fi

echo "node_exporter started successfully and is listening on port $LISTEN_PORT."

安装prometheus

创建数据存储目录

mkdir /data/prometheus_data && chmod 777 /data/prometheus_data

创建配置文件

将需要监控的节点和添加进配置文件

  - job_name: "node_exporter"
    static_configs:
      - targets:
        - "192.168.1.12:9100"
        - "192.168.1.13:9100"
        - "192.168.1.14:9100"
        - "192.168.1.15:9100"
        - "192.168.1.3:9100"
        - "192.168.1.4:9100"
        - "192.168.1.5:9100"
        - "192.168.1.6:9100"
        - "192.168.1.7:9100"

完整的配置文件内容为

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

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

# Load rules once and periodically evaluate them according to the global "evaluation_interval".
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets:
        - "192.168.1.12:9100"
        - "192.168.1.13:9100"
        - "192.168.1.14:9100"
        - "192.168.1.15:9100"
        - "192.168.1.3:9100"
        - "192.168.1.4:9100"
        - "192.168.1.5:9100"
        - "192.168.1.6:9100"
        - "192.168.1.7:9100"

tips:这里格式一定要对齐,否则可能会启动失败

设置配置文件权限

chmod 777 /etc/prometheus.yml

下载运行Prometheus

下载运行服务

docker run -d \
  --name=prometheus \
  -p 9090:9090 \
  -v /etc/prometheus.yml:/etc/prometheus/prometheus.yml \
  -v /data/prometheus_data:/prometheus \
  --restart always \
  prom/prometheus

如果拉取不了可以用下面这个

docker run -d \
  --name=prometheus \
  -p 9090:9090 \
  -v /etc/prometheus.yml:/etc/prometheus/prometheus.yml \
  -v /data/prometheus_data:/prometheus \
  --restart always \
  registry.cn-hangzhou.aliyuncs.com/jast-docker/prometheus:latest
参数说明
-d使容器在后台运行(分离模式)。
--name=prometheus为容器指定名称 prometheus,便于管理。
-p 9090:9090将宿主机的 9090 端口映射到容器的 9090 端口,便于访问 Prometheus。
-v /etc/prometheus.yml:/etc/prometheus/prometheus.yml挂载宿主机的 Prometheus 配置文件到容器中。
-v /data/prometheus_data:/prometheus挂载宿主机的目录用于存储 Prometheus 数据,确保数据持久化。
--restart always设定容器在停止后自动重启,保证持续运行。
prom/prometheus使用 Prometheus 的官方 Docker 镜像启动容器。

访问:http://localhost:9090 验证是否启动生效

安装Grafana

创建数据目录

mkdir -p grafana/data

下载运行Grafana

docker run -d -p 3000:3000 --name=grafana \
  --user "$(id -u)" \  
  --volume "$PWD/grafana/data:/var/lib/grafana" \
  grafana/grafana  

上面的如果用不了,用下面的国内镜像

docker run -d -p 3000:3000 --name=grafana \
  --user "$(id -u)" \
  --restart always \
  --volume "$PWD/grafana/data:/var/lib/grafana" \
  registry.cn-hangzhou.aliyuncs.com/jast-docker/grafana:latest

运行完成访问: http://localhost:3000

配置Grafana监控Linux服务器

登录

默认账号密码admin/admin

image-12831924142719831

首次登录后设置密码

image-12831924142745346

添加数据源

image-12831924142924970

选择prometheus

image-12831924142945524

填写prometheus地址

image-12831924143022372

最下方点击保存

image-12831924143101480

导入模板

导入8189模板,官方提供的监控模板

image-12831924143232463

输入名称和数据源导入

image-12831924143325078

监控效果

image-12831924222502610

image-12831924222607872

image-12831924222637672

到此监控已经配置完成,你也可以配置预警值,进行一些告警操作,第一时间发现问题。

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

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

相关文章

ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

IT/研发团队的秘密武器:9款协作工具盘点

本文将介绍的9款工具如下&#xff1a;1.Worktile&#xff1b;2.PingCode&#xff1b;3.企业微信&#xff1b;4.WPS协作&#xff1b;5.融洽&#xff1b;6.印象团队&#xff1b;7.ClickUp&#xff1b;8.Redbooth&#xff1b;9.Podio。 在管理IT或研发团队时&#xff0c;选择合适的…

kube-scheduler调度任务的执行过程分析与源码解读(二)

概述 摘要&#xff1a; 上文我们对Kube-scheduler的启动流程进行了分析&#xff0c;本文继续探究kube-scheduler执行pod的调度任务的过程。 正文 说明&#xff1a;基于 kubernetes v1.12.0 源码分析 上文讲到kube-scheduler组件通过sched.Run() 启动调度器实例。在sched.Run(…

贵州大数据实验室建设案例分享

贵州大数据实验室建设与学科建设紧密结合&#xff0c;旨在为高校提供教学资源和实训环境&#xff0c;以支持大数据技术人才的培养。高校在实验室规划过程中&#xff0c;第一要务就是从学科定位出发、结合学校的特色和行业优势&#xff0c;定义人才培养目标和方向&#xff0c;并…

栈——有效的括号

在这道题中给出一个字符串包含三种不同的括号&#xff0c;需要判断这三个括号是否能相互匹配。因为方向需要保证不出错&#xff0c;所以我们可以想到如果指向字符的指针为左括号时&#xff0c;可以将它拿出&#xff0c;与下一个字符进行匹配若能匹配则继续匹配&#xff0c;如果…

一文搞懂Window、PhoneWindow、DercorView、WindowManage

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 本文摘要 通过本文您可以了解PhoneWindow&#xff0c;Window&#xff0c;DecorView&#xff0c;WindowManager&#xff0c;WindowManag…

虚拟机【linux】配置无线网络

虚拟机【linux】配置无线网络 在Linux系统中配置网卡是一个常见的任务&#xff0c;特别是当你需要手动设置IP地址、子网掩码、网关或DNS服务器等信息时。不同的Linux发行版可能有不同的配置方法&#xff0c;但以下是一些基本且通用的步骤来配置网卡。 1. 确定网卡名称 首先&…

【云原生】Kubernetes中如何通过Pod名称查询Docker容器ID,通过Docker容器ID查询Pod名称?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

中秋节不容错过的送礼指南,除了月饼,还有五大科技好物助力团圆

中秋节&#xff0c;作为中华民族的传统节日&#xff0c;承载着深厚的文化内涵和家庭团聚的美好愿望。在这个月圆人圆的时刻&#xff0c;送礼成为了表达情感和祝福的重要方式。虽然月饼作为传统的象征&#xff0c;总是节日礼单上的首选&#xff0c;但随着科技的发展&#xff0c;…

SpringCloud乐尚代驾学习笔记:司机端登录(四)

SpringCloud乐尚代驾学习笔记&#xff1a;司机端登录&#xff08;四&#xff09; 文章目录 SpringCloud乐尚代驾学习笔记&#xff1a;司机端登录&#xff08;四&#xff09;1、司机端微信小程序登录1.1、准备工作1.2、接口开发1.2.1、service-driver模块1.2.2、openFeign远程调…

bitmap(位图)的使用

零存零取&#xff0c;整存零取&#xff0c;整存整取, 零存整取 bitmap介绍 位图不是真正的数据类型&#xff0c;它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容, 位上限&#xff1a;2^(9(512)10(1024)10(1024)3(8b1B))2^32b 语句操作&#xff1a; s…

数据结构与算法 第四天(串、数组、广义表)

串&#xff08;String&#xff09; 任意字符组成的有限序列 串的类型定义 串的顺序存储结构 模式匹配算法 确定主串所含字串第一次出现的位置。 BF算法 穷举法&#xff0c;从每个字符开始依次匹配 KMP算法 链式存储 数组 基本操作 特殊矩阵存储 对称矩阵 三角矩阵 对角矩阵…

UDP英译汉网络词典

这里我们用UDP实现一个简单的英译汉小词典。我们还是仿照前一篇的UDP编程&#xff0c;将各自的组件封装起来&#xff0c;实现高内聚低耦合。 一. 字典翻译功能实现 首先我们将我们的字典知识库放在txt文本中。 apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 ha…

容器访问外网

目录 1 容器访问外网 1.1 容器访问外网的原理 1.2 容器与外网通讯原理解剖 2 docker跨主机网络 2.1 实现docker跨主机通讯方式 2.2 macvlan网络方式实现跨主机通信 2.2.1 macvlan网络方式 2.2.2 macvlan网络间的隔离和连通 2.2.3 实现方法如下&#xff1a; 1 容器访问外网 1.…

Django+Vue社区养老管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

详解Spring AOP

前言&#x1f440;~ 上一章我们介绍了SpringBoot统一功能相关的知识点&#xff0c;今天来讲解Spring框架另外一个核心AOP&#xff0c;细&#xff01;&#xff01;&#xff01; 什么是AOP&#xff1f; 什么是面向切面编程呢&#xff1f; 什么是面向特定方法编程呢&#xff1…

Bahdanau注意力机制

介绍 在Bahadanu注意力机制中&#xff0c;本质上是序列到序列学习的注意力机制实现&#xff0c;在编码器-解码器结构中&#xff0c;解码器的每一步解码过程都依赖着整个上下文变量&#xff0c;通过Bahdanau注意力&#xff0c;使得解码器在每一步解码时&#xff0c;对于整个上下…

ET6框架(七)Excel配置工具

文章目录 一、Excel表的基本规则&#xff1a;二、特殊特殊标记三、编译路径说明四、动态获取数据五、可导表类型查看: 一、Excel表的基本规则&#xff1a; 在框架中我们的Excel配置表在ET > Excel文件夹中 1.在表结构中需要注意的是起始点必须在第三行第三列&#xff0c;且…

91.游戏的启动与多开-游戏启动

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;90.游戏安全项目-项目搭建与解析 以90.游戏安全项目-项目搭建与解析它的代码为基础进行…

[java][代码] java中date格式化输出时间字符串

Date date new Date();//具备默认的风格//DateFormat dateFormDateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);DateFormat dateFormnew SimpleDateFormat("yyyy-mm-dd");System.out.println(dateForm.format(date)); 这段Java代码演示了如何使用S…