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
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öffentlichtDie 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