Saída do indicador de fluxo

NGINX evolui para nuvem nativa, tudo em  OpenNJet 


1. Introdução

Depois que o NJet modificou e adaptou o módulo STS (https://github.com/vozlt/nginx-module-sts) fornecido pela comunidade de código aberto, ele é usado para gerar as informações do indicador do Stream Server e suporta o retorno de json, formatos html e prometheus.

2. Instruções de configuração

Instruções de configuração do plano de dados

server_traffic_status_zone

   
gramática server_traffic_status_zone [compartilhado:nome:tamanho]
valor padrão compartilhado:stream_server_traffic_status:1m
Local de configuração fluxo

Descrição: Configure uma área de memória compartilhada que armazena o status de execução do servidor de streaming.

server_traffic_status

   
gramática server_traffic_status<ativado
valor padrão desligado
Local de configuração fluxo, servidor

Descrição: Se deseja registrar indicadores do servidor de fluxo Se o comando server_traffic_status_zone estiver configurado, a coleta de indicadores será habilitada automaticamente.

server_traffic_status_filter_by_set_key

   
gramática chave server_traffic_status_filter_by_set_key [nome]
valor padrão -
Local de configuração fluxo, servidor

Descrição: Agrupe (nome) e subgrupo (chave) as estatísticas de tráfego do Stream. Você pode usar variáveis, como $server_addr, $server_port, etc. Quando o nome do parâmetro não é especificado, o valor padrão é streamFilterZones.

Instruções de configuração do plano de controle

stream_server_traffic_status_display

   
gramática stream_server_traffic_status_display
valor padrão -
Local de configuração localização

Descrição: Este comando é utilizado para obter as informações do indicador do servidor de stream. O formato de saída padrão é definido pelo comando stream_server_traffic_status_display.

stream_server_traffic_status_display_format

   
gramática stream_server_traffic_status_display_format <json
valor padrão json
Local de configuração localização

Descrição: Este comando é utilizado para configurar o formato de retorno padrão do indicador.

3. Exemplo de arquivo de configuração

O módulo njet.conf njt_stream_stsc_module é compilado estaticamente e não precisa ser carregado separadamente.

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 precisa carregar o 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.Configuração dinâmica

O NJet pode configurar dinamicamente se o servidor de stream coleta indicadores.

Para usar a função de configuração dinâmica, o módulo de configuração dinâmica sts precisa ser carregado em njet.conf:

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

O esquema da mensagem da API de configuração dinâmica é definido da seguinte forma:

{
        "$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
                                                }
                                        }
                                }
                        }
                }
        }
}

Exemplo de mensagem:

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

Use GET para consultar a configuração atual

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

Use PUT para atualizar a configuração

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 

imagem

imagem

O mecanismo de aplicativo NJet  atinge recursos exclusivos de carregamento de configuração dinâmica em tempo de execução por meio da reconstrução do kernel e é uma nova geração de mecanismo de aplicativo da Web de alto desempenho . O NJet possui recursos de processamento de plano de dados de alto desempenho e programa múltiplas funções auxiliares, como clustering, alta disponibilidade, verificações de integridade ativas e APIs declarativas por meio da estrutura de serviço copiloto CoPilot exclusiva do NJet para facilitar a expansão de funções e isolar pares de funções de gerenciamento/controle devidos. ao impacto no plano de dados, o desempenho do mecanismo de aplicação NJet excede três vezes o desempenho do mecanismo de aplicação Envoy recomendado pela CNCF. Site oficial do grupo de correio   

Linus resolveu resolver o problema por conta própria para evitar que os desenvolvedores do kernel substituíssem tabulações por espaços. Seu pai é um dos poucos líderes que sabe escrever código, seu segundo filho é o diretor do departamento de tecnologia de código aberto e seu filho mais novo é um núcleo. contribuidor de código aberto Huawei: Demorou 1 ano para converter 5.000 aplicativos móveis comumente usados ​​A migração abrangente para Hongmeng Java é a linguagem mais propensa a vulnerabilidades de terceiros Wang Chenglu, o pai de Hongmeng: Hongmeng de código aberto é a única inovação arquitetônica. no campo de software básico na China. Ma Huateng e Zhou Hongyi apertam as mãos para "remover rancores". Ex-desenvolvedor da Microsoft: o desempenho do Windows 11 é "ridiculamente ruim" " Embora o que Laoxiangji seja de código aberto não seja o código, as razões por trás disso são muito emocionantes. Meta Llama 3 é lançado oficialmente. Google anuncia uma reestruturação em grande escala.
{{o.nome}}
{{m.nome}}

Acho que você gosta

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