Salida del indicador de flujo

NGINX evoluciona hacia la nube nativa, todo en  OpenNJet 


1. Introducción

Después de que NJet haya modificado y adaptado el módulo STS (https://github.com/vozlt/nginx-module-sts) proporcionado por la comunidad de código abierto, se utiliza para generar la información del indicador del Stream Server y admite la devolución de json. Formatos html y prometheus.

2. Instrucciones de configuración

Instrucciones de configuración del plano de datos

zona_estado_tráfico_servidor

   
gramática server_traffic_status_zone [compartido:nombre:tamaño]
valor por defecto compartido:stream_server_traffic_status:1m
Ubicación de configuración arroyo

Descripción: Configure un área de memoria compartida que almacene el estado de ejecución del servidor de transmisión.

estado_tráfico_servidor

   
gramática server_traffic_status<activado
valor por defecto apagado
Ubicación de configuración flujo, servidor

Descripción: si se deben registrar los indicadores del servidor de transmisión. Si el comando server_traffic_status_zone está configurado, la recopilación de indicadores se habilitará automáticamente.

server_traffic_status_filter_by_set_key

   
gramática server_traffic_status_filter_by_set_key clave [nombre]
valor por defecto -
Ubicación de configuración flujo, servidor

Descripción: Agrupe (nombre) y subgrupo (clave) las estadísticas de tráfico de Stream. Puede utilizar variables, como $server_addr, $server_port, etc. Cuando no se especifica el nombre del parámetro, el valor predeterminado es streamFilterZones.

Instrucciones de configuración del plano de control

stream_server_traffic_status_display

   
gramática stream_server_traffic_status_display
valor por defecto -
Ubicación de configuración ubicación

Descripción: este comando se utiliza para obtener la información del indicador del servidor de transmisión. El formato de salida predeterminado lo establece el comando stream_server_traffic_status_display.

stream_server_traffic_status_display_format

   
gramática stream_server_traffic_status_display_format <json
valor por defecto json
Ubicación de configuración ubicación

Descripción: Este comando se utiliza para configurar el formato de retorno predeterminado del indicador.

3. Ejemplo de archivo de configuración

El módulo njet.conf njt_stream_stsc_module se compila estáticamente y no es necesario cargarlo por separado.

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;

events {
    worker_connections  1024;
}
http {
}

stream {
  server_traffic_status_zone shared:aabbcc:2m;
  upstream tcpa {
    server 127.0.0.1:1234; 
  }
  server {
    listen 1234;
    server_traffic_status off;
    server_traffic_status_filter_by_set_key * $server_addr;
    return "aa\n";
   }
  server {
     listen 1235;
     server_traffic_status on;
     proxy_pass tcpa;
   }

}

njet_ctrl.conf necesita cargar el módulo dinámico njt_stream_stsd_module.so

load_module /usr/local/njet/modules/njt_http_sendmsg_module.so;
load_module /usr/local/njet/modules/njt_ctrl_config_api_module.so; 
load_module /usr/local/njet/modules/njt_helper_health_check_module.so;
load_module /usr/local/njet/modules/njt_http_upstream_api_module.so; 
load_module /usr/local/njet/modules/njt_http_location_api_module.so;
load_module /usr/local/njet/modules/njt_doc_module.so;
load_module /usr/local/njet/modules/njt_http_vtsd_module.so;
load_module /usr/local/njet/modules/njt_stream_stsd_module.so;

error_log logs/error_ctrl.log error;

events {
    worker_connections  1024;
}

http {
    include mime.types;
    access_log off;
    server {
        listen       8081;

        location / {
            return 200 "njet control panel\n";
        }
        
        location /api {
            dyn_module_api;  
        }
         
        location /doc {
            doc_api;
        }
        
        location /metrics {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
        location /stream_metrics {
            stream_server_traffic_status_display;
            stream_server_traffic_status_display_format html;
        }
    }
}

4.4.Configuración dinámica

NJet puede configurar dinámicamente si el servidor de transmisión recopila indicadores.

Para utilizar la función de configuración dinámica, el módulo de configuración dinámica sts debe cargarse en njet.conf:

load_module /usr/local/njet/modules/njt_stream_dyn_sts_module.so;

El esquema del mensaje API de configuración dinámica se define de la siguiente manera:

{
        "$id": "dynsts",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "type": "object",
        "required": ["servers"],
        "properties": {
                "servers": {
                        "type": "array",
                        "items": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": ["listens", "server_traffic_status"],
                                "properties": {
                                        "listens": {
                                                "type": "array",
                                                "items": {
                                                        "type": "string",
                                                        "minLength": 1
                                                }
                                        },
                                        "server_traffic_status": {
                                                "type": "boolean"
                                        },
                           "server_traffic_status_filter_by_set_key": {
                                                "type": "array",
                        "items": {
                                                        "type": "string",
                                                        "minLength": 1
                                                }
                                        }
                                }
                        }
                }
        }
}

Ejemplo de mensaje:

{
  "servers": [
    {
      "listens": [
        "0.0.0.0:18082"
      ],
      "server_traffic_status": true,
      "server_traffic_status_filter_by_set_key":
       [
       "* $server_addr"
       ]
    }
  ]
}

Utilice GET para consultar la configuración actual

curl localhost:8081/api/v1/config/stream_dyn_sts

Utilice PUT para actualizar la configuración.

curl -X PUT -d 
'{"servers":[{"listens":["0.0.0.0:1234"],"server_traffic_status":false,"server_traffic_status_filter_by_set_key":["\"*\" \"$server_addr\""]},{"listens":["0.0.0.0:1235"],"server_traffic_status":true,"server_traffic_status_filter_by_set_key":[]}]}'
 localhost:8081/api/v1/config/stream_dyn_sts 

imagen

imagen

El motor de aplicaciones NJet  logra capacidades únicas de carga de configuración dinámica en tiempo de ejecución a través de la reconstrucción del kernel y es una nueva generación de motores de aplicaciones web de alto rendimiento . NJet tiene capacidades de procesamiento de plano de datos de alto rendimiento y programa múltiples funciones auxiliares, como agrupación en clústeres, alta disponibilidad, comprobaciones de estado activas y API declarativas a través del marco de servicio CoPilot exclusivo de NJet para facilitar la expansión de funciones y aislar los pares de funciones de gestión/control. Además del impacto en el plano de datos, el rendimiento del motor de aplicaciones NJet supera tres veces el del motor de aplicaciones Envoy recomendado por CNCF. Sitio web oficial del grupo de correo.   

Linus tomó el asunto en sus propias manos para evitar que los desarrolladores del kernel reemplacen las pestañas con espacios. Su padre es uno de los pocos líderes que puede escribir código, su segundo hijo es el director del departamento de tecnología de código abierto y su hijo menor es un núcleo. Colaborador de código abierto Huawei: tomó 1 año convertir 5000 aplicaciones móviles de uso común Migración completa a Hongmeng Java es el lenguaje más propenso a vulnerabilidades de terceros Wang Chenglu, el padre de Hongmeng: el código abierto Hongmeng es la única innovación arquitectónica. En el campo del software básico en China, Ma Huateng y Zhou Hongyi se dan la mano para "eliminar rencores". Ex desarrollador de Microsoft: el rendimiento de Windows 11 es "ridículamente malo " " Aunque lo que Laoxiangji es de código abierto no es el código, las razones detrás de él. Son muy conmovedores. Meta Llama 3 se lanza oficialmente. Google anuncia una reestructuración a gran escala.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/6606114/blog/11054470
Recomendado
Clasificación