从零开始搭建Prometheus与Grafana监控系统:实战演练

news2024/9/17 8:24:42

从零开始搭建 Prometheus 与 Grafana 监控系统:实战演练

监控系统是现代 IT 基础设施的重要组成部分,用于监控服务器、应用程序和服务的性能和可用性。Prometheus 和 Grafana 是目前广泛使用的开源监控和可视化工具。本篇文章将从零开始,手把手带你搭建 Prometheus 与 Grafana 监控系统,包括环境准备、安装配置、数据采集、可视化展示和报警设置等内容。

目录

  1. 环境准备
  2. 安装 Prometheus
  3. 配置 Prometheus
  4. 安装 Node Exporter
  5. 安装 Grafana
  6. 配置 Grafana
  7. 创建监控 Dashboard
  8. 设置报警规则
  9. 总结与扩展

1. 环境准备

在开始搭建 Prometheus 和 Grafana 之前,需要准备以下环境和工具:

  • 一台 Linux 服务器(本文以 Ubuntu 20.04 为例)
  • Docker(可选,但推荐用于简化安装过程)
  • 基本的 Linux 命令行操作知识

在开始之前,确保你的服务器已经可以访问互联网,以便下载必要的安装包和 Docker 镜像。

步骤:

  1. 更新系统包:

    sudo apt update && sudo apt upgrade -y
    
  2. 安装 Docker:

    如果还没有安装 Docker,可以通过以下命令进行安装:

    sudo apt install docker.io -y
    
  3. 启动 Docker 并设置开机自启:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. 验证 Docker 安装是否成功:

    docker --version
    

2. 安装 Prometheus

Prometheus 是一个开源的系统监控和报警工具,采用拉取(pull)模型收集数据,具有强大的查询语言 PromQL。我们将通过 Docker 安装 Prometheus。

步骤:

  1. 拉取 Prometheus 镜像:

    docker pull prom/prometheus
    
  2. 创建 Prometheus 配置文件:

    创建一个名为 prometheus.yml 的文件,配置 Prometheus 拉取数据的方式。以下是一个简单的配置示例:

    global:
      scrape_interval: 15s # 拉取数据的时间间隔
      evaluation_interval: 15s # 规则评估的时间间隔
    
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090'] # Prometheus 自身
    
  3. 运行 Prometheus:

    使用以下命令启动 Prometheus:

    docker run -d --name=prometheus -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
    
  4. 验证 Prometheus 是否运行:

    打开浏览器访问 http://<你的服务器 IP>:9090,可以看到 Prometheus 的 Web 界面。


3. 配置 Prometheus

Prometheus 的核心是配置文件 prometheus.yml,通过该文件定义数据采集的来源、频率以及评估规则。我们需要进一步配置以便收集更多的系统指标。

步骤:

  1. 配置 Node Exporter:

    Node Exporter 是 Prometheus 官方推荐的用于收集 Linux 系统指标的工具。我们需要在 Prometheus 的配置文件中添加 Node Exporter 的目标。

    scrape_configs:
      - job_name: 'node_exporter'
        static_configs:
          - targets: ['localhost:9100']
    
  2. 重新加载 Prometheus 配置:

    如果 Prometheus 是通过 Docker 运行的,可以通过重启容器来加载新的配置:

    docker restart prometheus
    

4. 安装 Node Exporter

Node Exporter 是一个用于暴露系统指标给 Prometheus 的工具,它可以收集 CPU、内存、磁盘、网络等系统级别的指标。我们通过 Docker 安装 Node Exporter。

步骤:

  1. 拉取 Node Exporter 镜像:

    docker pull prom/node-exporter
    
  2. 运行 Node Exporter:

    docker run -d --name=node_exporter -p 9100:9100 prom/node-exporter
    
  3. 验证 Node Exporter:

    访问 http://<你的服务器 IP>:9100/metrics,可以看到系统的各项指标数据。


5. 安装 Grafana

Grafana 是一个开源的数据可视化工具,支持多种数据源,如 Prometheus、InfluxDB、MySQL 等。它的强大之处在于其灵活的 Dashboard 和可视化组件。

步骤:

  1. 拉取 Grafana 镜像:

    docker pull grafana/grafana
    
  2. 运行 Grafana:

    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    
  3. 访问 Grafana:

    打开浏览器,访问 http://<你的服务器 IP>:3000,默认用户名和密码都是 admin。首次登录后会提示修改密码。


6. 配置 Grafana

Grafana 安装完成后,需要配置数据源以从 Prometheus 获取监控数据。

步骤:

  1. 添加 Prometheus 数据源:

    • 登录 Grafana 后,点击左侧边栏的“Configuration” > “Data Sources”。
    • 点击“Add data source”,选择 “Prometheus”。
    • 在 URL 栏输入 http://<你的服务器 IP>:9090,然后点击“Save & Test”确认数据源配置成功。
  2. 验证数据源:

    如果配置成功,Grafana 会显示“Data source is working”的提示。


7. 创建监控 Dashboard

Grafana 提供了丰富的 Dashboard 模板,可以快速创建各种监控面板。我们将创建一个简单的系统监控 Dashboard。

步骤:

  1. 创建新 Dashboard:

    • 在 Grafana 首页,点击“Create” > “Dashboard”。
    • 选择“Add new panel”,在“Query”栏选择数据源为 Prometheus。
  2. 添加查询:

    • 在“Query”输入框输入 PromQL 查询,如 node_cpu_seconds_total,可以看到实时的 CPU 使用情况。
    • 点击“Apply”保存该面板。
  3. 保存 Dashboard:

    点击右上角的“Save”按钮,为你的 Dashboard 命名并保存。


8. 设置报警规则

监控系统的一个重要功能是报警,当某些指标超过设定的阈值时,系统会自动发送通知。Prometheus 支持通过配置报警规则来实现这一功能。

步骤:

  1. 配置报警规则文件:

    创建一个名为 alert.rules 的文件,添加以下内容:

    groups:
      - name: example
        rules:
          - alert: HighCPUUsage
            expr: node_cpu_seconds_total{mode="system"} > 0.5
            for: 1m
            labels:
              severity: critical
            annotations:
              summary: "Instance {{ $labels.instance }} high CPU usage"
              description: "CPU usage is above 50% for more than 1 minute."
    
  2. 在 Prometheus 配置中添加报警规则:

    prometheus.yml 中添加以下内容:

    rule_files:
      - "alert.rules"
    
  3. 重新加载 Prometheus 配置:

    使用以下命令重启 Prometheus 以应用新的配置:

    docker restart prometheus
    
  4. 设置报警通知:

    Prometheus 支持多种报警通知方式,如 Email、Slack、Webhook 等。可以通过配置 Alertmanager 来实现更灵活的报警策略。


9. 总结与扩展

通过本篇文章的实战演练,你已经成功搭建了一个基本的 Prometheus 与 Grafana 监控系统。这个系统能够收集服务器的各项指标数据,并通过 Grafana 实时展示,同时支持设置报警规则以在系统异常时通知相关人员。

后续扩展:

  • 集成更多的 Exporter: Prometheus 社区提供了多种 Exporter,可用于监控数据库(如 MySQL、PostgreSQL)、消息队列(如 Kafka、RabbitMQ)等。
  • 优化报警策略: 根据实际需求优化报警规则,避免过多无效的报警。
  • 安全配置: 考虑为 Prometheus 和 Grafana 配置 HTTPS 和用户认证,以确保监控数据的安全性。

通过不断优化和扩展,你可以将这个基础监控系统逐步升级为生产环境中强大而灵活的运维保障工具。

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

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

相关文章

韩国火烧车影响出现,浙江出现限制电车进入地下车库,车主难受了

韩国电动汽车起火&#xff0c;烧毁140辆汽车&#xff0c;还导致大楼损坏以及居民受伤的后果&#xff0c;如今在中国市场也产生了影响&#xff0c;《华商报》旗下的《大风新闻》报道指&#xff0c;浙江多地的饭店、大厦禁止电动汽车进入地下车库&#xff0c;这下子电动汽车车主又…

滑动窗口在算法中的应用

滑动窗口是一种经典的算法技巧&#xff0c;就像在处理一系列动态数据时&#xff0c;用一扇可以滑动的“窗口”来捕捉一段连续的子数组或子字符串。通过不断地移动窗口的起点或终点&#xff0c;我们能够以较低的时间复杂度来解决一系列问题。在这篇文章中&#xff0c;我们将通过…

图形视频处理软件Adobe After Effects(AE)2024WIN/MAC下载及系统要求

目录 一、Adobe AE软件简介 1.1 什么是Adobe AE软件 1.2 AE软件的发展历程 1.3 AE软件的应用领域 二、Adobe AE软件下载 2.1 下载 2.2 下载注意事项 三、Adobe AE软件系统要求 3.1 最低配置要求 3.2 推荐配置要求 3.3 显示器和分辨率 四、Adobe AE软件安装与使用 …

【MacOS】mac定位服务中删除已经卸载的软件

mac定位服务中删除已经卸载的软件 网上的帖子真不靠谱 直接右键 WeTypeSettings &#xff0c;查找位置&#xff0c;丢废纸篓即可&#xff01;会提示你卸载的&#xff01;

Pyramid: Real-Time LoRa Collision Decoding with Peak Tracking技术思考与解读

一点点个人的论文解读、技术理解&#xff0c;难免会有错误&#xff0c;欢迎大家一起交流和学习~~ &#x1f600;作者关于lora的系列文章从问题陈述到方法论的提出&#xff0c;再到实验评估&#xff0c;文章结构条理清晰&#xff0c;逻辑性强&#xff0c;并深入分析了LoRa信号处…

力扣刷题(5)

整数转罗马数字 整数转罗马数字-力扣 思路&#xff1a; 把各十百千位可能出现的情况都列出来&#xff0c;写成一个二维数组找出该数的各十百千位&#xff0c;与数组中的罗马元素对应 const char* ch[4][10]{{"", "I", "II", "III"…

webpack - 五大核心概念和基本配置(打包一个简单HTML页面)

// 五大核心概念 1. entry&#xff08;入口&#xff09; 指示Webpack从哪个文件开始打包2. output&#xff08;输出&#xff09; 指示Webpack打包完的文件输出到哪里去&#xff0c;如何命名等3. loader&#xff08;加载器&#xff09; webpack本身只能处理js&#xff0c;json等…

Bev pool 加速(2):自定义c++扩展

文章目录 1. c++扩展2. 案例2.1 案例12. 1.1 代码实现(1) c++ 文件(2) setup.py编写(3) python 代码编写2.1 案例1在bevfusion论文中,将bev_pooling定义为view transform中的效率瓶颈,bevfusion 主要就是对bev_pooling进行了加速,使得视图转换的速度提高了40倍,延迟从500ms…

charles配置安卓抓包(避坑版)

下载Charleshttps://www.charlesproxy.com/安装&#xff0c;疯狂点击下一步即可注册&#xff1a;打开Charles&#xff0c;选择“Help”菜单中的“Register Charles”&#xff0c;进网站生成密钥&#xff1a;https://www.zzzmode.com/mytools/charles/,将生成的密钥填入注册重启…

JavaScript练手小技巧:利用鼠标滚轮控制图片轮播

近日&#xff0c;在浏览网站的时候&#xff0c;发现了一个有意思的效果&#xff1a;一个图片轮播&#xff0c;通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法&#xff0c;顺带复习下鼠标滚轮事件。 鼠标滚轮事件&#xff0c;参考这篇文章&#xff1a;…

Vue 3 + Element Plus 封装单列控制编辑的可编辑表格组件

在Web应用开发中&#xff0c;经常需要提供表格数据的编辑功能。本文将介绍如何使用Vue 3结合Element Plus库来实现一个支持单列控制编辑功能的表格&#xff0c;并通过封装组件的形式提高代码的复用性。通过本教程&#xff0c;你将学会如何构建一个具备单列控制编辑功能的表格组…

Cloudways搭建WordPress外贸独立站完整教程(1)

验证邮件发送完成后&#xff0c;就等待Cloudways的回复邮件&#xff0c;一般24小时之内就会收到激活的邮件。 Cloudways账号升级 激活成功后还需要账户升级&#xff0c;Cloudways提供了为期3天的免费试用体验。如果在试用期结束之前未绑定信用卡以升级账户&#xff0c;试用期…

UE5学习笔记21-武器的射击功能

一、创建C类 创建武器子弹的类&#xff0c;创建生产武器子弹的类&#xff0c;创建弹壳的类&#xff0c;生产武器子弹的类的父类是武器的类 创建后如图&#xff0c;ProjectileMyWeapon类(产生子弹的类)继承自weapon类&#xff0c;Projectile(子弹的类)&#xff0c;Casing(弹壳声…

Claude 3.5:如何高效辅助编程——全面入门指南

在现代编程世界中&#xff0c;AI的角色越来越重要&#xff0c;尤其是在代码生成、调试、文档生成等领域中&#xff0c;AI工具的运用让开发者可以更高效地完成任务。Claude 3.5是一个这样的AI助手&#xff0c;凭借其强大的自然语言处理能力&#xff0c;在编程中提供了大量的支持…

Sui Narwhal and Tusk 共识协议笔记

一、Overwiew [ 整体流程: Client提交transaction到Narwhal Mempool。(Narwhal Mempool由一组worker和一个primary组成) Mempool接收到的Transaction->以Certificate的形式进行广播 由worker将交易打包为Batch,worker将Batch的hash发送给primary primary上运行了mempo…

mysql笔记4(数据类型)

数据库的数据类型应该是数据库架构师(DBA)和产品经理沟通后依据公司的项目、业务而定的&#xff0c;而且会不停地变化。数据类型的选择方面没有一个统一的标准&#xff0c;但是应该符合业务、项目的逻辑标准。 菜鸟教程 Mysql 数据类型 文章目录 1. int类型2. 浮点数3. 定点数4…

C# Dotfuscator加密dll设置流程

按照以下步骤处理后&#xff0c;反编译基本只能看到函数名&#xff0c;看不到源代码 1.Input 2.Setting 3.Rename 4.Rename 5.Control Flow 6.String Encryption 7.Output

【stata】自写命令分享dynamic_est,一键生成dynamic effect

1. 命令简介 dynamic_est 是一个用于可视化动态效应&#xff08;dynamic effect&#xff09;的工具。它特别适用于事件研究&#xff08;event study&#xff09;或双重差分&#xff08;Difference-in-Differences, DID&#xff09;分析。通过一句命令即可展示动态效应&#xf…

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求&#xff0c;要求做一款播放器&#xff0c;发现能力上跟EasyPlayer.js基本一致&#xff0c;满足要求&#xff1a; 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏&#xff08;单屏/全屏&#xff09; 多分屏&#xff08;2*2&#xff09; 多分屏…

JVM面试(七)G1垃圾收集器剖析

概述 上一章我们说了&#xff0c;G1收集器&#xff0c;它属于里程碑式的发展&#xff0c;开创了面向局部收集垃圾的概念。专门针对多核处理器以及大内存的机器。在JDK9中&#xff0c;更是呗指定为官方的GC收集器。满足高吞吐的通知满足GC的STW停顿时间尽可能的短。 虽然现在我…