Prometheus 和 Grafana 通过nginx-exporter监控nginx

在生产环境下,您已经部署了 Prometheus 和 Grafana,并希望通过它们来监控另一台 Ubuntu 20.04 上的 Nginx 服务。以下是配置步骤:

1. 安装和配置 nginx-exporter (Nginx 的 Prometheus 导出器)

nginx-exporter 是 Prometheus 用来从 Nginx 收集指标的组件。

安装步骤:
  1. 在目标 Ubuntu 20.04 服务器上安装 nginx-exporter

    • 您可以使用官方的 Go 程序编译,或者直接下载预编译的二进制文件:
      wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.10.0/nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz
      tar -xzvf nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz
      sudo mv nginx-prometheus-exporter /usr/local/bin/
      
  2. 配置 nginx-exporter

    • 假设您的 Nginx 的状态页在 http://localhost:8080/status(这个 URL 需要在 Nginx 配置中开启并允许 Prometheus 访问),启动 nginx-exporter
      nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status
      
  3. 配置为服务(可选):

    • 为了保证 nginx-exporter 能在系统重启后自动启动,您可以将其配置为系统服务:
      sudo tee /etc/systemd/system/nginx-prometheus-exporter.service > /dev/null <<EOL
      [Unit]
      Description=Nginx Prometheus Exporter
      After=network.target[Service]
      User=nobody
      ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status
      Restart=always[Install]
      WantedBy=multi-user.target
      EOLsudo systemctl daemon-reload
      sudo systemctl start nginx-prometheus-exporter
      sudo systemctl enable nginx-prometheus-exporter
      

2. 配置 Prometheus 来抓取 Nginx 的指标

在 Prometheus 的配置文件中(通常为 prometheus.yml),添加 Nginx 的目标:

scrape_configs:- job_name: 'nginx'static_configs:- targets: ['<Nginx_Server_IP>:9113']
  • 这里 <Nginx_Server_IP> 是您 Ubuntu 服务器的 IP 地址。
  • 9113nginx-exporter 默认暴露的端口。

3. 在 Grafana 中创建 Nginx 的仪表盘

  1. 进入 Grafana,添加 Prometheus 数据源。
  2. 导入 Nginx 的现有仪表盘模板或创建自定义仪表盘:
    • 您可以在 Grafana 官方模板库中找到 Nginx 的仪表盘模板(例如,Dashboard ID:11199 )。
  3. 设置数据源为您在 Prometheus 中配置的 Nginx 监控源,保存并应用。

4. 验证配置

  • 确保在 Grafana 中能看到 Nginx 的相关监控数据。如果没有数据,检查以下内容:
    • Nginx 状态页是否可以被 nginx-exporter 访问。
    • Prometheus 是否可以正确抓取 nginx-exporter 的数据。
    • Grafana 中的数据源配置是否正确。

5. 其他优化和安全设置

  • 您可以在生产环境中考虑使用认证或限制 IP 来保护 Nginx 状态页。
  • 优化 Prometheus 抓取间隔,避免对服务器造成过大压力。

通过以上步骤,您应该能够成功在生产环境下使用 Prometheus 和 Grafana 监控 Nginx。

好的,下面我会具体举例说明如何配置 Nginx 的状态页并允许 Prometheus 访问,以便启动 nginx-exporter

1. 配置 Nginx 的状态页

首先,您需要在 Nginx 中启用状态页。可以通过在 Nginx 配置文件中添加 stub_status 模块来实现。

例子:配置 Nginx 的状态页
  1. 打开 Nginx 的主配置文件,通常位于 /etc/nginx/nginx.conf 或者 /etc/nginx/sites-available/default

  2. 在配置文件中添加一个新的 location 块,用于暴露 Nginx 的状态信息。假设您要在 localhost:8080/status 暴露状态页,配置如下:

    server {listen 8080;location /status {stub_status;allow 127.0.0.1;      # 仅允许本地访问deny all;              # 拒绝其他所有访问}
    }
    
    • stub_status 指令启用 Nginx 的基本状态信息。
    • allow 127.0.0.1; deny all; 配置限制只有本地可以访问状态页,您可以根据需要修改允许访问的 IP。
  3. 保存配置文件后,重新加载 Nginx 服务以应用配置:

    sudo systemctl reload nginx
    
  4. 测试配置是否生效,访问 http://localhost:8080/status

    curl http://localhost:8080/status
    

    预期输出应类似于:

    Active connections: 1 
    server accepts handled requests10 10 10 
    Reading: 0 Writing: 1 Waiting: 0 
    

2. 启动 nginx-exporter

配置好 Nginx 的状态页后,接下来就是启动 nginx-exporter

例子:启动 nginx-exporter

假设您的 nginx-exporter 已经安装在 /usr/local/bin/ 路径下,可以通过以下命令启动:

nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status

这个命令告诉 nginx-exporterhttp://localhost:8080/status 获取 Nginx 的状态信息并转换为 Prometheus 可识别的格式。

配置 nginx-exporter 为系统服务(可选)

为了确保 nginx-exporter 在系统重启后自动运行,可以将其配置为系统服务:

  1. 创建一个新的 systemd 服务文件:

    sudo nano /etc/systemd/system/nginx-prometheus-exporter.service
    
  2. 将以下内容复制到服务文件中:

    [Unit]
    Description=Nginx Prometheus Exporter
    After=network.target[Service]
    User=nobody
    ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status
    Restart=always[Install]
    WantedBy=multi-user.target
    
  3. 保存并退出编辑器。

  4. 重新加载 systemd 并启动 nginx-exporter 服务:

    sudo systemctl daemon-reload
    sudo systemctl start nginx-prometheus-exporter
    sudo systemctl enable nginx-prometheus-exporter
    

3. 验证 nginx-exporter 工作情况

您可以通过访问 http://<Nginx_Server_IP>:9113/metrics 来检查 nginx-exporter 是否正常工作。访问时应看到 Prometheus 格式的指标数据。

通过以上步骤,您的 nginx-exporter 应该已经正确配置并在工作了,Prometheus 也可以开始抓取 Nginx 的监控数据了。
图标id:111

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

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

相关文章

【机器学习-监督学习】逻辑斯谛回归

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

深度学习 --- VGG16各层feature map可视化(JupyterNotebook实战)

VGG16模块的可视化 VGG16简介&#xff1a; VGG是继AlexNet之后的后起之秀&#xff0c;相对于AlexNet他有如下特点&#xff1a; 1&#xff0c;更深的层数&#xff01;相对于仅有8层的AlexNet而言&#xff0c;VGG把层数增加到了16和19层。 2&#xff0c;更小的卷积核&#xff01;…

程序员如何平衡日常编码工作与提升式学习?

引言 在如今这个技术飞速发展的时代,程序员不仅需要专注于完成日常的编码任务,还必须不断提升自己的技能,以应对行业的变化和个人职业发展的需求。然而,在高强度的工作环境中,找到时间进行学习是一项挑战。许多程序员陷入了这样的困境:一方面,日常的编码工作要求高效且…

苹果手机照片格式heic怎么改jpg?教你3招快速转换

苹果手机照片格式heic怎么改jpg&#xff1f;将苹果手机照片格式从HEIC转为JPG&#xff0c;在日常使用中带来了极大便利。HEIC格式虽高效节省空间&#xff0c;但兼容性不如JPG广泛。转为JPG后&#xff0c;照片能轻松在多数设备、软件和在线平台上分享、打印或编辑&#xff0c;无…

【论文阅读】A Closer Look at Parameter-Efficient Tuning in Diffusion Models

Abstract 大规模扩散模型功能强大&#xff0c;但微调定制这些模型&#xff0c;内存和时间效率都很低。 本文通过向大规模扩散模型中插入小的学习器(称为adapters)&#xff0c;实现有效的参数微调。 特别地&#xff0c;将适配器的设计空间分解为输入位置、输出位置、函数形式的…

探索Python的自动化魔法:AutoIt库揭秘

文章目录 探索Python的自动化魔法&#xff1a;AutoIt库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;AutoIt是什么&#xff1f;第三部分&#xff1a;如何安装AutoIt库&#xff1f;第四部分&#xff1a;AutoIt的五个简单函数第五部分&#xff1a;场景应用第六部分&…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中&#xff0c;Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍&#xff1a; Pending&#xff08;待处理&#xff09;: 调度: Pod被创建后&#xff0c;首先进入“Pending”状态。此时&#xff0c;Kubernetes的调度器…

云计算产业链图谱_产业链全景图_云计算行业市场分析

在产业数字化转型的背景下&#xff0c;云计算作为信息技术的重要组成部分&#xff0c;正逐渐成为各行业数字化、智能化转型的关键支撑。受益于5G、大数据、物联网、人工智能等技术的快速发展&#xff0c;云计算产业规模持续扩大&#xff0c;市场需求不断增长。云计算作为一种新…

C语言 | Leetcode C语言题解之第367题有效的完全平方数

题目&#xff1a; 题解&#xff1a; bool isPerfectSquare(int num) {long long left0;long long rightnum;while(left<right){long long mid(leftright)/2;long long ansmid*mid;if(ans<num){leftmid1;}else if(ans>num){rightmid-1;}else{return true;}}return…

书生模型实战L1---OpenCompass 评测

书生模型实战系列文章目录 第一章 入门岛L0&#xff08;Linux&#xff09; 第二章 入门岛L0&#xff08;python&#xff09; 第三章 入门岛L0&#xff08;Git&#xff09; 第四章 基础岛L1&#xff08;书生全链路开源介绍&#xff09; 第五章 基础岛L1&#xff08;Demo&#x…

打卡学习Python爬虫第五天|使用Xpath爬取豆瓣电影评分

思路&#xff1a;使用Xpath爬取豆瓣即将上映的电影评分&#xff0c;首先获取要爬取页面的url&#xff0c;查看页面源代码是否有我们想要的数据&#xff0c;如果有&#xff0c;直接获取HTML文件后解析HTML内容就能提取出我们想要的数据。如果没有则需要用到浏览器抓包工具&#…

网络初识部分

1.网络 单机时代-局域网时代-广域网时代-移动互联网时代 局域网时代&#xff1a;通过路由器把几个电脑连接起来。 广域网时代&#xff1a;把更多的局域网连接到一起&#xff0c;构成的网络更庞大&#xff0c;可能已经覆盖了一个城市/国家/全世界。 2.什么是路由器&#xff…

洛谷官方精选题单解析(持续更新~)

首页 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/ 真题解析-CCF-GESP编程能力等级认证 https://gesp.ccf.org.cn/101/1010/index.html 我会陆续针对每一道题目发独立博客&#xff0c;剖析解题思路、知识点及代码。 目录 1、【入门1】顺序结构&#xff08;1…

三维模型单体化软件:地理信息与遥感领域的精细化革命

在地理信息与遥感科学日新月异的发展浪潮中&#xff0c;单体化软件作为一股强大的驱动力&#xff0c;正引领着我们迈向空间信息处理与应用的新纪元。本文旨在深度解析单体化软件的核心价值、技术前沿、实践应用及面临的挑战&#xff0c;共同探讨这一技术如何塑造行业的未来。 …

client网络模块的开发和client与server端的部分联动调试

客户端网络模块的开发 我们需要先了解socket通信的流程 socket通信 server端的流程 client端的流程 对于closesocket()函数来说 closesocket()是用来关闭套接字的,将套接字的描述符从内存清除,并不是删除了那个套接字,只是切断了联系,所以我们如果重复调用,不closesocket()…

安卓主板_MTK联发科主板定制开发|PCBA定制开发

MTK联发科安卓主板&#xff0c;采用MT6762八核平台方案&#xff0c;支持谷歌Android 11.0系统&#xff0c;MT6762采用ARM八核A53内核芯片、主频高达2.0GHz&#xff0c;GPU采用ARM PowerVR GE8329650MHZ&#xff0c;支持主流19201080分辨率&#xff0c;支持硬解H.264&#xff0c…

Win10安装ChatTTS-2024-cuda10.1

0x00 前言 ChatTTS是专门为对话场景设计的文本转语音模型&#xff0c;例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。 0x01 准备环境 版本操作系统Win1…

鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗

ninja | 忍者 ninja是一个叫 Evan Martin的谷歌工程师开源的一个自定义的构建系统,最早是用于 chrome的构建,Martin给它取名 ninja(忍者)的原因是因为它strikes quickly(快速出击).这是忍者的特点,可惜Martin不了解中国文化,不然叫小李飞刀更合适些.究竟有多块呢? 用Martin自…

本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

StarRocks 存算分离数据回收原理

前言 StarRocks存算分离表中&#xff0c;垃圾回收是为了删除那些无用的历史版本数据&#xff0c;从而节约存储空间。考虑到对象存储按照存储容量收费&#xff0c;因此&#xff0c;节约存储空间对于降本增效尤为必要。 在系统运行过程中&#xff0c;有以下几种情况可能会需要删…