当前位置: 首页 > news >正文

OpenNJet动态API设置accessLog开关,颠覆传统运维工作模式

在这里插入图片描述


OpenNJet

OpenNJet 应用引擎是高性能、轻量级的WEB应用与代理软件。作为云原生服务网格的数据平面,NJet具备动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。通过CoPliot副驾驶服务框架,在隔离控制面和数据面的情况下实现了高可扩展性。NJet应用引擎助力企业实现云原生技术的平滑升级并大幅降低IT运营成本。

在这里插入图片描述

OpenNJet 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目!

独特优势

高性能:NJet性能是CNCF推荐Envoy的三倍。

功能多:内置HTTP3、故障注入、遥测、配置动态加载、服务发现等功能

强安全:集成Web应用防火墙、原生支持国密/ RSA加密解密算法

可扩展:强大的插件框架能力支持第三方应用开发

可编程:支持LUA、Python可编程控制脚本

易管理:提供完善的API接口,内置多主集群和高可用性能力

快速开始

我们提供了几种快速使用的方法:

  • 二进制安装
  • 发行版安装
  • 源码安装
  • docker镜像启动
镜像构建

如果大家想制作OpenNJet镜像,可使用如下方法:

下载njet_main源码,执行如下命令:

  cd njet_main
  //导入环境变量
  export NJET_RIEPOSITORY="tmlake/njet"
  export NJET_TAG="latest"
  //构建镜像
  docker build --build-arg NJet_VERSION=$NJET_TAG --build-arg GIT_COMMIT=$(git rev-parse HEAD) --network host --target ubuntu-njet -f ./build/docker/Dockerfile_njet -t $NJET_RIEPOSITORY:$NJET_TAG ./

通过 Swagger 的进行动态配置:

通过 swagger 的 url,http://njetaddr:8081/doc/swagger/ 进入 swagger 页面,可以看到会提供一个可视化的操作界面,里面包括很多动态的设置选项,这里我们以动态access log配置接口为主来进行操作。

在这里插入图片描述

1. 查看当前允许的动态模块:

使用一个GET请求,来进行查询本机支持哪些动态模块的修改,可以看到查出了4种。

curl -X 'GET' \
  'http://121.41.236.243:8081/api/v1/config/' \
  -H 'accept: application/json'

在这里插入图片描述


2. 查看当前服务http_log日志动态设置参数:

通过一个Get请求可以查看当前服务http_log日志动态设置参数,可以看到本机是有一条location为根目录的/,但是没有做任何的设置,这里我们可以来进行设置。

curl -X 'GET' \
  'http://121.41.236.243:8081/api/v1/config/http_log' \
  -H 'accept: application/json'

在这里插入图片描述

为了对比效果,我们再添加2个访问路径来演示操作情况:

在这里插入图片描述

以下是配置文件中增加2条访问路由,分别为njetTest1和njetTest2。

在这里插入图片描述

完整的conf配置文件:

worker_processes auto;

cluster_name njet;
node_name node1;

error_log logs/error.log error;

helper ctrl /usr/local/njet/modules/njt_helper_ctrl_module.so /usr/local/njet/conf/njet_ctrl.conf;
helper broker /usr/local/njet/modules/njt_helper_broker_module.so;

load_module /usr/local/njet/modules/njt_http_split_clients_2_module.so;  
load_module /usr/local/njet/modules/njt_agent_dynlog_module.so;  
load_module /usr/local/njet/modules/njt_http_dyn_bwlist_module.so; 
load_module /usr/local/njet/modules/njt_dyn_ssl_module.so;
load_module /usr/local/njet/modules/njt_http_vtsc_module.so;
load_module /usr/local/njet/modules/njt_http_location_module.so;
#load_module /usr/local/njet/modules/njt_http_lua_module.so;
#load_module /usr/local/njet/modules/njt_http_modsecurity_module.so;
#load_module /usr/local/njet/modules/njt_http_dyn_modsecurity_module.so;


events {
    worker_connections  1024;
}


http {
    include mime.types;
    access_log off;
    vhost_traffic_status_zone;
    #lua_package_path "$prefix/lualib/lib/?.lua;/usr/local/njet/modules/?.lua;$prefix/apps/?.lua;;";
    #lua_package_cpath "$prefix/lualib/clib/?.so;;";
    server {
        #modsecurity on;       
        #modsecurity_rules_file /usr/local/njet/conf/modsec/main.conf;

        listen       8080;
        location / {
           root html;
        }
	
	location /njetTest1 {
	   return 200 Test1ok\r\n;
	}

	location /njetTest2 {
	   return 200 Test2ok\r\n;
	}
    }
}

3. 动态请求设置http_log日志信息:

我们通过一个PUT请求来将2条路径分别设置一个是写入日志,另一个暂时先不写入日志。

在这里插入图片描述

curl -X 'PUT' \
  'http://121.41.236.243:8081/api/v1/config/http_log' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "servers": [
    {
      "listens": [
        "0.0.0.0:8080"
      ],
      "serverNames": [
        ""
      ],
      "locations": [
        {
          "location": "/njetTest1",
          "accessLogOn": true,
          "accessLogs": [
            {
              "path": "./logs/njetTest10319.log",
              "formatName": "test"
            }
          ]
        },
        {
          "location": "/njetTest2",
          "accessLogOn": false,
          "accessLogs": [
            {
              "path": "./logs/njetTest20319.log",
              "formatName": "test"
            }
          ]
        }
      ]
    }
  ],
  "accessLogFormats": [
    {
      "name": "test",
      "format": "$remote_addr - $remote_user [$time_local] \\\"$request\\\" $status $body_bytes_sent \\\"$http_referer\\\" \\\"$http_user_agent\\\"",
      "escape": "default"
    }
  ]
}'

查看当前目录是没有任何日志信息的:

在这里插入图片描述
通过设置后,我们可以看到本地有一个空文件,通过请求Test1与Test2来查到,因为Test2没有开启日志,所以这里只有Test1写入日志成功了。

在这里插入图片描述

接着我们再次请求接口,将Test2的接口日志同时也开启来。

在这里插入图片描述

curl -X 'PUT' \
  'http://121.41.236.243:8081/api/v1/config/http_log' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "servers": [
    {
      "listens": [
        "0.0.0.0:8080"
      ],
      "serverNames": [
        ""
      ],
      "locations": [
        {
          "location": "/njetTest1",
          "accessLogOn": true,
          "accessLogs": [
            {
              "path": "./logs/njetTest10319.log",
              "formatName": "test"
            }
          ]
        },
        {
          "location": "/njetTest2",
          "accessLogOn": true,
          "accessLogs": [
            {
              "path": "./logs/njetTest20319.log",
              "formatName": "test"
            }
          ]
        }
      ]
    }
  ],
  "accessLogFormats": [
    {
      "name": "test",
      "format": "$remote_addr - $remote_user [$time_local] \\\"$request\\\" $status $body_bytes_sent \\\"$http_referer\\\" \\\"$http_user_agent\\\"",
      "escape": "default"
    }
  ]
}'

可以看到Test2也同时有记录了日志,感觉通过API接口来进行动态的管理,非常的方便,不用再重复的去操作Conf文件。

在这里插入图片描述

相关文章:

  • “四预”驱动数字孪生水利:让智慧治水守护山河安澜
  • SIEMENS中集车辆PLM项目建设方案(96页PPT)(文末有下载方式)
  • excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果输出到json文件
  • LCCI ESG 中英联合认证国际分析师适合的岗位
  • AUTOSAR_DoIP_Detailed
  • 计算机操作系统和进程
  • 基于java的ssm+JSP+MYSQL的高校四六级报名管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • Windows 11技巧:使用Powershell定义命令别名
  • 2025 年 AI 代码编辑器深度评测:Cursor Pro订阅与解锁自定义 AI 的无限潜能,实战案例全解析
  • 现代复古像素风品牌海报游戏排版设计装饰英文字体 Psygen — Modern Pixel Font
  • 再探C语言(1)
  • 如何利用iOS应用内事件提升订阅类应用表现?
  • Electron打包文件生成.exe文件打开即可使用
  • Deflate和Gzip压缩在HTTP响应中的作用与实现
  • H3C网络设备配置基础(HCL基础实操)1
  • #网页内容http协议自动被转成https协议#
  • Python实战(1)-GUI文本编辑器
  • Linux vim mode | raw / cooked
  • (C语言)将整数转化为二进制(转化二进制教学)
  • 本地部署github上资源可能出现问题总结
  • 新华保险一季度净赚58.82亿增19%,保费收入增28%
  • 何立峰出席驻沪中央金融机构支持上海建设国际金融中心座谈会并讲话
  • 我国首部《人工智能气象应用服务办法》今天发布
  • 俄罗斯延长非法滞留外国人限期离境时间至9月
  • 北京朝阳涉住宅组团地块126亿元成交
  • 日月谭天丨赖清德强推“脱中入北”是把台湾带向死路