【监控】【Nginx】使用 Docker 部署 Prometheus + Grafana 监控 Nginx

news2024/9/23 12:28:05

在现代应用程序中,监控是确保服务高可用性和性能的关键。本文将详细介绍如何使用 Docker 部署 Prometheus 和 Grafana,以监控 Nginx。我们将分步骤讲解每个环节,以确保你能够顺利完成整个过程。

准备工作

在开始之前,请确保你的系统上已安装 Docker 和 Docker Compose。这两个工具将帮助我们轻松创建和管理容器化的应用环境。

步骤 1:创建项目目录

首先,我们需要创建一个新的目录来存放所有配置文件。这有助于保持项目的结构清晰。

mkdir nginx-monitoring
cd nginx-monitoring

步骤 2:创建 Prometheus 配置文件

接下来,创建一个名为 prometheus.yml 的文件,这是 Prometheus 的配置文件,定义了监控的目标和抓取间隔。

global:
  scrape_interval: 15s  # 设置全局抓取间隔为15秒

scrape_configs:
  - job_name: 'nginx'  # 监控任务的名称
    static_configs:
      - targets: ['nginx:80']  # 指定 Nginx 服务的名称和端口

解释

  • global:定义全局配置,如抓取间隔。
  • scrape_configs:配置要监控的服务,这里我们将 Nginx 的指标作为目标。

步骤 3:创建 Docker Compose 文件

然后,创建一个 docker-compose.yml 文件,定义我们需要的服务,包括 Nginx、Prometheus 和 Grafana。

version: '3.7'  # Docker Compose 文件版本

services:
  nginx:
    image: nginx:latest  # 使用最新的 Nginx 镜像
    ports:
      - "8080:80"  # 将宿主机的8080端口映射到容器的80端口
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf  # 自定义 Nginx 配置文件

  prometheus:
    image: prom/prometheus  # 使用 Prometheus 镜像
    ports:
      - "9090:9090"  # 将宿主机的9090端口映射到容器的9090端口
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml  # 挂载 Prometheus 配置文件
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'  # 指定配置文件位置

  grafana:
    image: grafana/grafana  # 使用 Grafana 镜像
    ports:
      - "3000:3000"  # 将宿主机的3000端口映射到容器的3000端口

解释

  • services:定义我们要运行的服务。
  • image:指定要使用的 Docker 镜像。
  • ports:配置端口映射,使得我们可以从宿主机访问容器中的服务。
  • volumes:挂载配置文件到容器,以便于管理。

步骤 4:创建 Nginx 配置文件

在项目目录中创建一个 nginx.conf 文件,以设置 Nginx 的指标导出。

worker_processes 1;  # 设置工作进程数

events { 
    worker_connections 1024;  # 最大连接数
}

http {
    server {
        listen 80;  # Nginx 监听80端口

        location / {
            root   /usr/share/nginx/html;  # 静态文件根目录
            index  index.html index.htm;  # 默认首页
        }

        location /metrics {
            stub_status on;  # 启用 stub_status 模块以导出指标
        }
    }
}

解释

  • worker_processesevents:基本的 Nginx 配置。
  • location /metrics:指定一个路径用于导出 Nginx 的指标。

步骤 5:启动 Docker 容器

在项目目录中运行以下命令以启动服务:

docker-compose up -d  # 后台运行 Docker 容器

解释

  • -d 选项使得容器在后台运行,便于继续在终端中执行其他命令。

步骤 6:访问 Grafana 和 Prometheus

服务启动后,我们可以访问 Grafana 和 Prometheus。

  • Grafana:在浏览器中访问 http://localhost:3000。默认的用户名和密码都是 admin/admin,首次登录时系统会提示你更改密码。
  • Prometheus:在浏览器中访问 http://localhost:9090,可以查看抓取的指标。

步骤 7:配置 Grafana 数据源

  1. 登录到 Grafana。
  2. 点击左侧菜单中的“设置”图标,然后选择“数据源”。
  3. 点击“添加数据源”按钮,选择 Prometheus。
  4. 在 URL 字段中输入 http://prometheus:9090(这是 Docker 内部网络中使用的服务名称)。
  5. 点击“保存并测试”以确认连接成功。

解释

这一步骤确保 Grafana 可以正确连接到 Prometheus,获取监控数据。

步骤 8:创建仪表板

  1. 点击左侧菜单中的“仪表板”图标,然后选择“新建仪表板”。
  2. 点击“添加图表”,选择数据源为刚刚添加的 Prometheus。
  3. 在查询框中输入指标,例如 nginx_http_requests_total 来查看总请求数。
  4. 自定义图表样式,保存仪表板。

解释

通过创建仪表板,你可以可视化 Nginx 的性能数据,帮助你更好地理解服务的运行状态。

结论

通过 Docker 部署 Prometheus 和 Grafana,你可以方便地监控 Nginx。这一解决方案不仅简单易用,还能根据需要灵活扩展。希望这篇博客对你有所帮助,助你成功构建一个强大的监控系统!


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

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

相关文章

免杀对抗—python混淆算法反序列化shellcode

一、前言 内网已经学的七七八八了(主要是实验环境太麻烦了,累了),今天就开启新的篇章——免杀。免杀我们主要是对生成的shellcode做免杀,而不是对生成的exe做免杀。为啥呢,你可以这样理解,exe已经是成品了&#xff0c…

Vue 内存泄漏分析:如何避免开发过程中导致的内存泄漏问题

一. 引言 Vue 作为一款流行的前端框架,已经在许多项目中得到广泛应用。然而,随着我们在 Vue 中构建更大规模的应用程序,我们可能会遇到一个严重的问题,那就是内存泄漏。内存泄漏是指应用程序在使用内存资源时未正确释放&#xff…

昇思MindSpore进阶教程-模型模块自定义

大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 基础用法示例 神经网络模型由各种层(Lay…

【AI实战攻略】保姆级教程:用AI打造治愈动画vlog,轻松打造爆款,快速涨粉!

在当今这个快节奏的社会中,你是否也曾在某个雨夜,沉浸于那些温馨而治愈的动画短视频中,找到片刻的宁静与放松? 窗外大雨滂沱,而你,刚结束一天的忙碌,沐浴在温暖的热水中,随后裹上柔…

Integer 源码记录

Integer 公共方法结构 注意: 通过构造函数创建一个Integer对象,每次都会返回一个新的对象,如果使用 进行对象的比较,那么结果是false。 public Integer(int value) {this.value value;}与之对应的是,valueOf 方法…

java -----泛型

泛型的理解和好处 泛型是在JDK5之后引入的一个新特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式为 <数据类型> import java.util.ArrayList;SuppressWarnings({"all"}) public class Generic02 {public static void…

WGS1984快速度确定平面坐标系UTM分带(快速套表、公式计算、软件范围判定)

之前我们介绍了坐标系3带6带快速确定带号及中央经线&#xff08;快速套表、公式计算、软件范围判定&#xff09;就&#xff0c;讲的是CGCS2000 高斯克吕格的投影坐标系。 那还有我们经常用的WGS1984的平面坐标系一般用什么投影呢? 对于全球全国的比如在线地图使用&#xff1a…

探索GraphRAG:用yfiles-jupyter-graphs将知识库可视化!

yfiles-jupyter-graphs 可视化 GraphRAG 结构 前言 前面我们通过 GraphRag 命令生成了知识库文件 parquet&#xff0c;这节我们看一下如何使用 yfiles-jupyter-graphs 添加 parquet 文件的交互式图形可视化以及如何可视化 graphrag 查询的结果。 yfiles-jupyter-graphs 是一…

前端-js例子:收钱转账

支付宝转账 在这里用到周期定时器setInterval(function,time)&#xff0c;设置达到目标钱数时停止定时器。 点击转账按钮时&#xff0c;开始函数显示。 同时要确定输入框里输入的是数字。&#xff08;有一定容错&#xff09; window.onloadfunction(){var btn document.que…

vue3 + ts + pnpm:nprogress / 页面顶部进度条

一、简介 nprogress 是一个轻量级的进度条库&#xff0c;它适用于在网页上添加顶部进度条&#xff0c;用于指示页面加载进度或任何长时间的运行过程。这个库非常流行&#xff0c;因为它易于使用且视觉效果很好。 二、安装 pnpm add nprogress 三、在使用的页面引入 / src/v…

MySQL连接查询解析与性能优化成本

文章目录 一、连接查询1.连接查询基础1. INNER JOIN内连接2. LEFT JOIN (或 LEFT OUTER JOIN)左外连接3. RIGHT JOIN (或 RIGHT OUTER JOIN)右外连接4. FULL OUTER JOIN 2.连接查询的两种过滤条件3.连接的原理 二、性能优化成本1.基于成本的优化2.调节成本常数(1)mysql.server_…

ECharts基础使用方法 ---vue

1.安装依赖文件 仔细看项目" README.md " 描述&#xff0c;确定用什么安装 npm npm install echarts --save //官网推荐使用 pnpm pnpm install echarts --save 其他也是 在项目根目录&#xff0c;打开当前目录命令控制栏&#xff0c;输入以上命令并运行 安装成功后…

动动手指探索世界,旅游APP如何定制开发?

旅游APP的出现为旅行带来了许多便利。随着移动互联网的发展&#xff0c;旅游行业也在不断寻求创新与变革。旅游APP为游客提供了更加便捷的旅行体验&#xff0c;通过旅游APP&#xff0c;用户可以了解旅游信息、旅游服务、在线咨询等&#xff0c;实现在线一站式解决旅行需求的目标…

Github 2024-09-23 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-09-23统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6C++项目3C项目3HTML项目2PowerShell项目1TypeScript项目1JavaScript项目1Blade项目1PHP项目1Bootstrap 5: Web上开发响应式、移动优…

【文心智能体】 旅游手绘手帐 开发分享 零代码 手绘风景 记录行程和心情 旅游攻略

旅游手绘手帐&#xff0c;点击文心智能体平台AgentBuilder | 想象即现实 (baidu.com) 目录 背景 创作灵感 开发历程 一、基础配置 二、高级配置 三、引导示例&#xff08;提示词&#xff09; 期待优化 背景 这个智能体是一个零代码智能体&#xff08;文心智能体平台现…

MySQL篇(管理工具)

目录 一、系统数据库 二、常用工具 1. mysql 2. mysqladmin 3. mysqlbinlog 4. mysqlshow 5. mysqldump 6. mysqlimport/source 6.1 mysqlimport 6.2 source 一、系统数据库 MySQL数据库安装完成后&#xff0c;自带了一下四个数据库&#xff0c;具体作用如下&#xf…

JDBC和一下重要的jar包,分层结构

系列文章目录 JDBC和方便使用的jar包 目录 系列文章目录 文章目录 一、JDBC 1.步骤 2.SQL注入 3.SQL注入解决&#xff08;PreparedStatement&#xff09; 4.批处理和事务控制 5.连接池 Druid连接池&#xff08;德鲁伊&#xff09; 6.封装为工具类 7.ThreadLocal 、小秘书 二、…

大语言模型(LLM)入门学习路线图

Github项目上有一个大语言模型学习路线笔记&#xff0c;它全面涵盖了大语言模型的所需的基础知识学习&#xff0c;LLM前沿算法和架构&#xff0c;以及如何将大语言模型进行工程化实践。这份资料是初学者或有一定基础的开发/算法人员入门活深入大型语言模型学习的优秀参考。这份…

【FPGA】FPGA芯片结构

目录 1 可编程输出/输出单元&#xff08;IOB&#xff09;2 可配置逻辑块&#xff08;CLB&#xff09;3 数字时钟管理模块&#xff08;DCM&#xff09;4 嵌入式块存储器&#xff08;BRAM&#xff09;5 布线资源6 内嵌功能模块&#xff08;专用IP单元&#xff09;6.1 PLL&#xf…

SpringBoot简易商品管理系统

> 这是一个基于SpringBootThymeleaf实现的简易商品管理系统。 > 包含基本的登录/注册与商品管理功能。 > 界面简洁美观&#xff0c;代码结构清晰&#xff0c;适用于JAVA初学者在此基础上进行二次开发。 一、项目演示 二、技术框架 框架描述Spring Boot容器管理 S…