Stream-Indikator-Ausgabe

NGINX entwickelt sich zu Cloud Native weiter, alles in  OpenNJet 


1. Einleitung

Nachdem NJet das von der Open-Source-Community bereitgestellte STS-Modul (https://github.com/vozlt/nginx-module-sts) geändert und angepasst hat, wird es zur Ausgabe der Indikatorinformationen des Stream-Servers verwendet und unterstützt die Rückgabe von JSON. HTML- und Prometheus-Formate.

2. Konfigurationsanweisungen

Anweisungen zur Konfiguration der Datenebene

server_traffic_status_zone

   
Grammatik server_traffic_status_zone [shared:name:size]
Standardwert shared:stream_server_traffic_status:1m
Konfigurationsort Strom

Beschreibung: Konfigurieren Sie einen gemeinsam genutzten Speicherbereich, der den Betriebsstatus des Stream-Servers speichert.

server_traffic_status

   
Grammatik server_traffic_status<on
Standardwert aus
Konfigurationsort Stream, Server

Beschreibung: Ob Stream-Server-Indikatoren aufgezeichnet werden sollen. Wenn der Befehl server_traffic_status_zone konfiguriert ist, wird die Indikatorerfassung automatisch aktiviert.

server_traffic_status_filter_by_set_key

   
Grammatik server_traffic_status_filter_by_set_key Schlüssel [Name]
Standardwert -
Konfigurationsort Stream, Server

Beschreibung: Gruppieren (Name) und Untergruppen (Schlüssel) der Verkehrsstatistiken von Stream. Sie können Variablen wie $server_addr, $server_port usw. verwenden. Wenn der Parametername nicht angegeben ist, ist der Standardwert streamFilterZones.

Anweisungen zur Konfiguration der Steuerungsebene

stream_server_traffic_status_display

   
Grammatik stream_server_traffic_status_display
Standardwert -
Konfigurationsort Standort

Beschreibung: Mit diesem Befehl werden die Indikatorinformationen des Stream-Servers abgerufen. Das Standardausgabeformat wird durch den Befehl stream_server_traffic_status_display festgelegt.

stream_server_traffic_status_display_format

   
Grammatik stream_server_traffic_status_display_format <json
Standardwert json
Konfigurationsort Standort

Beschreibung: Mit diesem Befehl wird das Standard-Rückgabeformat des Indikators konfiguriert.

3. Beispiel einer Konfigurationsdatei

Das Modul njet.conf njt_stream_stsc_module ist statisch kompiliert und muss nicht separat geladen werden.

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 muss das dynamische Modul njt_stream_stsd_module.so laden

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.Dynamische Konfiguration

NJet kann dynamisch konfigurieren, ob der Stream-Server Indikatoren sammelt.

Um die dynamische Konfigurationsfunktion nutzen zu können, muss das dynamische STS-Konfigurationsmodul in njet.conf geladen werden:

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

Das Schema der dynamischen Konfigurations-API-Nachricht ist wie folgt definiert:

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

Nachrichtenbeispiel:

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

Verwenden Sie GET, um die aktuelle Konfiguration abzufragen

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

Verwenden Sie PUT, um die Konfiguration zu aktualisieren

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 

Bild

Bild

Die NJet  -Anwendungs-Engine erreicht durch Kernel-Rekonstruktion einzigartige Funktionen zum dynamischen Laden von Konfigurationen zur Laufzeit und ist eine neue Generation leistungsstarker Web-Anwendungs-Engines . NJet verfügt über leistungsstarke Datenebenenverarbeitungsfunktionen und plant mehrere Hilfsfunktionen wie Clustering, Hochverfügbarkeit, aktive Zustandsprüfungen und deklarative APIs über das einzigartige Co-Pilot-Service-Framework von NJet, um Funktionserweiterungen zu erleichtern und fällige Verwaltungs-/Kontrollfunktionspaare zu isolieren Aufgrund der Auswirkungen auf die Datenebene ist die Leistung der NJet-Anwendungs-Engine dreimal so hoch wie die der von CNCF empfohlenen Envoy-Anwendungs-Engine. Offizielle Website der Mail-Gruppe   

Linus nahm die Sache selbst in die Hand, um zu verhindern, dass Kernel-Entwickler Tabulatoren durch Leerzeichen ersetzen. Sein Vater ist einer der wenigen Führungskräfte, die Code schreiben können, sein zweiter Sohn ist Direktor der Open-Source-Technologieabteilung und sein jüngster Sohn ist ein Kern Mitwirkender bei Open Source: Es dauerte ein Jahr, 5.000 häufig verwendete mobile Anwendungen zu konvertieren. Java ist die Sprache, die am anfälligsten für Schwachstellen von Drittanbietern ist. Wang Chenglu, der Vater von Hongmeng: Open Source Hongmeng ist die einzige architektonische Innovation im Bereich der Basissoftware in China. Ma Huateng und Zhou Hongyi geben sich die Hand, um „den Groll zu beseitigen.“ Ehemaliger Microsoft-Entwickler: Die Leistung von Windows 11 ist „lächerlich schlecht“. sind sehr herzerwärmend . Meta Llama 3 wird offiziell veröffentlicht
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/6606114/blog/11054470
Empfohlen
Rangfolge