iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用Nginx纯配置实现日志实时上报
  • 402
分享到

如何使用Nginx纯配置实现日志实时上报

2023-06-22 06:06:20 402人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“如何使用Nginx纯配置实现日志实时上报”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Nginx纯配置实现日志实时上报”这篇文章吧。前言Nginx 作为常用的负

这篇文章主要为大家展示了“如何使用Nginx纯配置实现日志实时上报”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Nginx纯配置实现日志实时上报”这篇文章吧。

    前言

    Nginx 作为常用的负载均衡网关. 会产生大量的日志. 但是由于 Nginx 的配置文件是一种声明式的编程范式, 不方便描述流程控制, 因此不能通过简单的指令实现日志的上报.

    通常 Nginx 的日志上报是需要写一个shell脚本或其他语言的脚本来定时解析 Nginx 的 log 文件, 然后进行上报.

    利用 Njs 模块, 可以实现实时的日志上报.

    但是由于 NJS 模块支持的指令的限制, 无法通过单一指令很好的实现日志上报. 通过多个指令的组合可以实现非阻塞性的实时日志上报.

    该方案在 Nginx 中实现, 不依赖node, python 等其他进程

    实现思路

    Nginx 指令繁多, 以下为最近探索出的一种实现方式. 如果有更优雅的实现方法, 欢迎留言交流.

    虽然拥有了强大的 Njs 模块可以写 JS 脚本, 但是 NJS 模块的指令有诸多限制, 并不像 Node 一样可以实现任意的功能.

    如果要实现日志的实时上报, 需要满足以下2个能力:

    1. 每个请求都可以触发

    2. 后台上报, 不阻塞当前请求的处理进程

    常用的 js_set 指令虽然可以在每个请求时都触发, 但是只支持同步的操作. 无法使用 fetch, subrequest 方法.

    js_content 指令中可以使用 fetch 函数. 但只能在 location 中使用. 因此可以利用其他指令将请求转发到 js_content 的路径中, 在该指令中完成日志的上报.

    Http_auth_request_module 模块的 auth_request 指令用于做请求的权限校验, 如 Jwt 校验等. 该指令在每个请求时都会触发, 创建一个子请求, 根据该请求的返回结果决定权限校验的结果.

    因此可以结合这两个模块来实现日志的上报.

    实现步骤

    1. 编译 Nginx

    实现该功能需要 Nginx 支持 ngx_http_js_module 和  ngx_http_auth_request_module 模块.  这2个模块是默认不安装的. 需要自己编译实现

    1. NJS 模块安装可以参考 当JS邂逅Nginx

    2. http_auth_request_module 模块只要在编译时增加参数 --with-http_auth_request_module 即可

    编译

    ./configure --add-module=[NJS 模块路径]/NJS/nginx --with-http_auth_request_module make && make install

    2. 配置文件如下

    http {    js_import  http.js;   # 引入 js 文件       server {        listen 80;            auth_request /proxy_report; # 该指令对于每个请求开始时都会触发, 创建一个子请求转发到 proxy_report 路径上        location / {             index  index.html index.htm;        }                location /proxy_report {            internal; # 限制仅接受内部请求            # 把原请求的 uri 和 method 数据保存在 header 中. 因为auth_request 请求会修改这些数据.                        proxy_set_header X-Original-URI $request_uri;            proxy_set_header X-Original-METHOD $request_method;            # 转发到另外一个 server 上            proxy_pass http://localhost:8080/report;        }    }        server {        listen 8080;        # 上报接口放在另外一个 server 中, 且该 server 中无 auth_request 指令, 避免循环触发请求        location /report {            # 通过 js_content 指令引入一个 js 处理脚本, 完成上报操作            js_content http.report;        }    }}
    // http.js 文件import qs from "querystring";async function report (r) {    let args = {        // 从 header 中取原始的 uri 和 method 等请求数据        uri: r.headersIn['X-Original-URI'],        method: r.headersIn['X-Original-METHOD'],        remoteAddress: r.remoteAddress,        status: r.status,        headersIn: JSON.stringifry(r.headersIn),    }    // 发出异步请求, 不阻塞当前请求的进程, 在后台完成上报    ngx.fetch(`http://[上报服务路径]?${qs.stringify(args)}`, {        method: 'GET',    })    // 返回200的状态码使校验指令成功    r.return(200)}export default { report }

    以上是“如何使用Nginx纯配置实现日志实时上报”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

    --结束END--

    本文标题: 如何使用Nginx纯配置实现日志实时上报

    本文链接: https://www.lsjlt.com/news/303044.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何使用Nginx纯配置实现日志实时上报
      这篇文章主要为大家展示了“如何使用Nginx纯配置实现日志实时上报”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Nginx纯配置实现日志实时上报”这篇文章吧。前言Nginx 作为常用的负...
      99+
      2023-06-22
    • Nginx纯配置实现日志实时上报的思路与方法
      目录前言实现思路实现步骤1. 编译 Nginx2. 配置文件如下总结前言 Nginx 作为常用的负载均衡网关. 会产生大量的日志. 但是由于 Nginx 的配置文件是一种声明式的编程...
      99+
      2024-04-02
    • Springboot如何使用Logback实现日志配置
      这篇文章主要讲解了“Springboot如何使用Logback实现日志配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Springboot如何使用Logback实现日志配置”吧!概述默认情...
      99+
      2023-07-04
    • 如何使用Redis实现实时日志分析
      对于大型的应用开发,日志分析是非常重要的,这对于开发者来说可以帮助了解应用的运行情况,从而更好地改进应用的性能和可靠性。Redis是一个基于内存的数据存储系统,具有高效、易于使用和可扩展等特点。在本文中,我们将介绍如何使用Redis实现实时...
      99+
      2023-11-07
      redis 日志处理 实时分析
    • 在Spring Boot中使用slf4j与logback如何实现配置日志
      这期内容当中小编将会给大家带来有关在Spring Boot中使用slf4j与logback如何实现配置日志,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spring boot主要的目的是:为 Spring...
      99+
      2023-05-31
      springboot slf4j logback
    • 如何实现Spark on Yarn配置日志Web UI
      本篇文章为大家展示了如何实现Spark on Yarn配置日志Web UI,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.进入spark目录和配置文件 [root@sht-sgmhadoopnn-...
      99+
      2023-06-03
    • 如何使用Python和Linux一起实现实时日志监控?
      日志监控是现代软件开发过程中必不可少的一环。通过监控日志,我们可以了解系统的运行情况,找出问题所在,并及时进行修复,从而提高系统的稳定性和可靠性。本文将介绍如何使用Python和Linux一起实现实时日志监控。 一、安装必要的软件 在开始...
      99+
      2023-08-28
      实时 日志 linux
    • Python如何实现实时监控Linux日志?
      随着互联网和数据的快速发展,日志数据越来越重要。日志数据不仅可以用于问题排查和系统优化,还可以用于业务分析和安全检测等方面。在Linux系统中,日志数据是非常重要的,因为它可以记录系统的运行状况、应用程序的运行状态以及用户的操作行为等等。...
      99+
      2023-08-28
      实时 日志 linux
    • Nginx如何配置ssl实现https
      这篇文章主要介绍了Nginx如何配置ssl实现https,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、安装 Nginx ssl 模块1.检查检查是否已安装 ssl 模块:...
      99+
      2023-06-29
    • 如何使用 Python 处理实时 Apache 日志?
      随着互联网的发展,网络日志越来越成为了人们了解网站使用情况的重要途径。而 Apache 是使用最广泛的 Web 服务器之一,其日志记录功能也非常强大。本文将介绍如何使用 Python 处理实时 Apache 日志,以便更好地了解网站的使用情...
      99+
      2023-08-25
      实时 apache bash
    • 如何使用Python实时监控Linux日志?
      当我们在管理Linux系统时,日志文件是一个非常重要的工具。它们可以帮助我们了解系统的运行状况,检测错误和问题,并提供有用的信息来改进和优化系统。但是,手动监控日志文件是一项耗时的任务,并且可能错过重要信息。在本文中,我们将介绍如何使用Py...
      99+
      2023-08-28
      实时 日志 linux
    • Springboot使用Logback实现日志配置与异常记录
      目录概述logback配置详解logback配置异常情况概述 默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果...
      99+
      2022-11-21
      Springboot Logback 日志配置 Springboot Logback异常记录 Springboot Logback
    • nginx如何实现虚拟机配置
      小编给大家分享一下nginx如何实现虚拟机配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 什么是虚拟主机:虚拟主机是一种特殊的软硬件技术,它可以将网...
      99+
      2023-06-04
    • PHP错误日志如何配置和使用
      小编给大家分享一下PHP错误日志如何配置和使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于 PHP 开发者来说,一旦某个项目投入使用,应该立即将配置文件 p...
      99+
      2023-06-25
    • 如何使用 Python 和 Bash 实时分析 Apache 日志?
      Apache 是使用最广泛的 Web 服务器软件之一,它的日志文件记录了每个请求的详细信息,包括请求的时间、请求的 URL、请求的状态码、请求的来源等等。这些信息可以帮助我们分析网站的流量、用户行为以及网站的性能等等。但是,日志文件往往非...
      99+
      2023-08-25
      实时 apache bash
    • 如何使用python+Flask实现日志在web网页实时更新显示
      一、日志输出到文件使用模块:logging可以生成自定义等级日志,可以输出日志到指定路径日志等级:debug(调试日志) < info(重要信息日志) < warning(警告日志) < error(异常日志) < ...
      99+
      2023-05-17
      Python web Flask
    • Python如何实时获取任务请求对应的Nginx日志
      这篇文章主要介绍“Python如何实时获取任务请求对应的Nginx日志”,在日常操作中,相信很多人在Python如何实时获取任务请求对应的Nginx日志问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pytho...
      99+
      2023-06-20
    • 如何使用 Python 实现实时自然语言处理来分析日志?
      在当今信息爆炸的时代,日志数据是任何企业的核心资源之一。通过对日志数据的分析,可以帮助企业了解其系统的健康状况、用户行为以及市场趋势,从而制定更好的业务策略和决策。然而,由于日志数据量大、结构复杂,传统的分析方法已经难以胜任这项任务。因此...
      99+
      2023-09-22
      自然语言处理 日志 实时
    • Nginx主机域名配置如何实现
      本篇内容主要讲解“Nginx主机域名配置如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx主机域名配置如何实现”吧!一、配置多个端口访问不同文件相同域名,不同端口,不同文件#两个不...
      99+
      2023-07-05
    • 如何使用配置文件优雅地配置 Logger,同时支持日志轮转
      php小编子墨将为大家分享如何使用配置文件来优雅地配置Logger,并实现日志轮转的方法。Logger是一个常用的日志记录工具,它可以帮助我们记录应用程序的运行状态,便于排查问题和追踪...
      99+
      2024-02-10
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作