【监控】【Nginx】使用 Docker 部署 Prometheus + Grafana 监控 Nginx
在现代应用程序中,监控是确保服务高可用性和性能的关键。本文将详细介绍如何使用 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_processes和events:基本的 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 数据源
- 登录到 Grafana。
- 点击左侧菜单中的“设置”图标,然后选择“数据源”。
- 点击“添加数据源”按钮,选择 Prometheus。
- 在 URL 字段中输入
http://prometheus:9090(这是 Docker 内部网络中使用的服务名称)。 - 点击“保存并测试”以确认连接成功。
解释
这一步骤确保 Grafana 可以正确连接到 Prometheus,获取监控数据。
步骤 8:创建仪表板
- 点击左侧菜单中的“仪表板”图标,然后选择“新建仪表板”。
- 点击“添加图表”,选择数据源为刚刚添加的 Prometheus。
- 在查询框中输入指标,例如
nginx_http_requests_total来查看总请求数。 - 自定义图表样式,保存仪表板。
解释
通过创建仪表板,你可以可视化 Nginx 的性能数据,帮助你更好地理解服务的运行状态。
结论
通过 Docker 部署 Prometheus 和 Grafana,你可以方便地监控 Nginx。这一解决方案不仅简单易用,还能根据需要灵活扩展。希望这篇博客对你有所帮助,助你成功构建一个强大的监控系统!
相关文章:
【监控】【Nginx】使用 Docker 部署 Prometheus + Grafana 监控 Nginx
在现代应用程序中,监控是确保服务高可用性和性能的关键。本文将详细介绍如何使用 Docker 部署 Prometheus 和 Grafana,以监控 Nginx。我们将分步骤讲解每个环节,以确保你能够顺利完成整个过程。 准备工作 在开始之前,请确保你的…...
Vue3 + Vite Web项目 Electron 打包桌面应用程序
在根目录下创建 electron 文件夹 创建 electron/main.js 文件: // 导入模块 const { app, BrowserWindow ,Menu } require(electron) const path require(path)// 创建主窗口 const createWindow () > {const mainWindow new BrowserWindow({width: 1440…...
Linux:login shell和non-login shell以及其配置文件
相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 shell是Linux与外界交互的程序,登录shell有两种方式,login shell与non-login shell,它们的区别是读取的配置文件不同,本…...
面试速通宝典——1
1. 内存有哪几种类型? 内存分为五个区,堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量&#…...
用uniapp 及socket.io做一个简单聊天 升级 9
比这之前优化了以下功能 上线通知 群聊里适时显示在线人数 约请好友 通过好友通过socket 相应端自动变化 PC端可以拉取摄象头拍照 PC端可以录音发送 拉起摄象头发送录象 <template><view class""><scroll-view scroll-y"true" class&…...
【Unity Shader】Special Effects(九)Vortex 旋涡(UI)
源码:[点我获取源码] 索引 Vortex 旋涡思路分析旋涡中心旋涡旋转旋涡强度旋涡动画Vortex 旋涡 旋涡效果可以将一张图像以指定点作为旋涡中心,呈顺时针旋涡动画效果,使用动画播放器: 思路分析 首先,旋涡特效的核心也即是旋转(特别是uv坐标的旋转); 在此基础上,旋涡中…...
01_两数之和
一、题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。…...
ChatGLM-6B-部署与使用
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 什么是ChatGLM-6B 一、简介 ChatGLM-6B 是由清华大学知识工程实验室(KEG&…...
李宏毅结构化学习 03
文章目录 一、Sequence Labeling 问题概述二、Hidden Markov Model(HMM)三、Conditional Random Field(CRF)四、Structured Perceptron/SVM五、Towards Deep Learning 一、Sequence Labeling 问题概述 二、Hidden Markov Model(HMM) 上图 training data 中的黑色字为xÿ…...
java重点学习-总结
十五 总结 https://kdocs.cn/l/crbMWc8xEZda (总结全部的精华) 1.面试准备 企业筛选简历规则简历编写注意事项(亮点)项目怎么找,学习到什么程度面试过程(表达结构、什么样的心态去找工作) 2.redis 缓存相关(缓存击穿、穿透、雪崩、缓存过期淘…...
文件操作
文件的由来:在程序中,之前每一个程序都是需要运行然后输入数据,当程序结束时输入的数据也随之消散,为了下一次运行时不再输入数据就有文件的由来,使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据…...
docker存储
docker分层结构 如图所示,容器是由最上面可读可写的容器层,以及若干个只读镜像层组成,创建容器时,容器中的 数据都来自镜像层。这样的分层机构最大的特点是写时复制: 1、容器中新生成的数据会直接存放在容器层…...
Ubuntu20.04.6 环境下docker设置proxy
问题背景: 在进行dokcer pull操作的时候,会失败且出现如下提示Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting h…...
如何给文件夹里面的文件批量添加前缀和编号(利用C#写的小工具)
运行结果 将上面的文件编号效果 下载过后启动这个程序即可(这个程序灵感来源是上次给美术资源分类和编号的时候给我干吐了,所以写了这个工具) 体验链接:laozhupeiqia/批处理 --- laozhupeiqia/批处理 (github.com) 如果对你有帮助…...
使用分布式调度框架时需要考虑的问题——详解
引言 随着企业系统的规模不断扩大,特别是在分布式计算和云计算环境下,如何协调多个节点或服务执行任务成为一个关键问题。分布式调度框架在这种背景下应运而生,它可以调度成千上万的任务,在多个节点上分配、执行和监控任务&#…...
C语言编译四大阶段
目录 一、引言 二、预处理阶段 三、编译阶段 四、汇编阶段 五、链接阶段 六、总结 本文将详细介绍C语言编译的四个阶段,包括预处理、编译、汇编和链接。通过学习这些阶段,读者可以更好地理解C语言程序的编译过程,提高编程效率。 一、引…...
C# 关于“您与该网站的连接不是私密连接...”的问题
目录 问题现象 范例运行环境 WebService 类 类介绍 增加参数 实现 小结 问题现象 最近在访问开发的微信支付功能时遇到了无法访问令牌的错误,这个错误是公司内部应用程序接口返回的访问错误。经过排查是访问 HTTPS 站点遇到的错误,提示证书风险…...
【超详细】基于YOLOv8训练无人机视角Visdrone2019数据集
主要内容如下: 1、Visdrone2019数据集介绍 2、下载、制作YOLO格式训练集 3、模型训练及预测 4、Onnxruntime推理 运行环境:Python3.8(要求>3.8),torch1.12.0cu113(要求>1.8),…...
VUE项目在Linux子系统部署
1、导读 环境:Windows 11、python 3.12.3、Django 4.2.11、 APScheduler 3.10.4 vue 背景:换系统需要重新安装,避免后期忘记,此处记录一下啊 事件:20240922 说明:使用node启动,非nginx&…...
开源 | 如何在产品上扩展大储存?合宙LuatOS外挂SPI Flash库轻松搞定
我们都知道芯片的储存都是寸土寸金的,当你的产品需要存储照片、音频、文档等资源的时候,有没有眉头一紧?内部不够只能外扩,但是外扩要编写各种驱动,还有Flash替换,这都要消耗头发啊! 但&#x…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
flow_controllers
关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
Cursor AI 账号纯净度维护与高效注册指南
Cursor AI 账号纯净度维护与高效注册指南:解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后,许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...
在MobaXterm 打开图形工具firefox
目录 1.安装 X 服务器软件 2.服务器端配置 3.客户端配置 4.安装并打开 Firefox 1.安装 X 服务器软件 Centos系统 # CentOS/RHEL 7 及之前(YUM) sudo yum install xorg-x11-server-Xorg xorg-x11-xinit xorg-x11-utils mesa-libEGL mesa-libGL mesa-…...
