5.2 AdminREST

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 5. Servis yüzeyleri >

5.2 AdminREST

Yönetim yüzeyi. Anonim erişime kapalıdır (yalnız GET SITE açıktır) ve her istek için kimliği doğrulanmış ve yönetici (SYSADMIN rolünün üyesi ya da SYSDBA) bir oturum ister; aksi hâlde 401 döner. Kimlik Basic auth ile verilir.

UçNe verir / ne yapar
GET SITEKimlik istemez. Yönetim arayüzünün kurulumu: product (ajanda agent); arayüz giriş sayfasını ve menüsünü buna göre kurar.
GET LICENSESYüklü lisanslar.
GET SYSTEMGUIDMakinenin sistem güvenlik numarası — lisans talebinde istenen değer.
GET MANAGEDDATABASESYönetilen veritabanları.
GET SESSIONSAçık oturumlar; her oturumda clientType (web / webadmin / desktop / other), mesaj kuyruğu olan oturumda abone olunan konular (mqTopics) ve kuyrukta bekleyen ileti sayısı (mqMessages), sonda counts.
GET PROCESSESAna süreç ve alt süreçler.
GET THREADSİş parçacıkları, üç bölüm hâlinde. sharedWorkers hizmetin kendisini anlatır: görev zamanlayıcı ve her dinleyici (durum, iş parçacığı kimliği, canlı bağlantı sayısı). processThreads her sürecin iş parçacığı özetidir (süreç kimliği, açıklaması, sonlanmış mı, "N thread(s): Sınıf [açıklama], …" metni ve özetin yazıldığı an); her süreç kendi özetini paylaşılan süreç kaydına yazar, böylece yanıtlayan işçi ötekileri de gösterebilir. localThreads ise yalnızca isteği yanıtlayan sürecin iş parçacıklarıdır ve processId ile etiketlidir — multiProcess işçi modelinde her isteği ayrı bir alt süreç işlediği için bu liste çoğu zaman boştur. Bağlantı başına yaratılan işçiler kendi süreçlerinde yaşadığından burada görünmez; yanıt bunu note alanında söyler.
GET TASKSZamanlanmış görevler.
GET STATUSGenel durum özeti.
GET MONITORDATATek bir ölçüm anının izleme sayıları — aşağıda ayrıntısı.
GET GETLOGGünlüğün sonu. Parametresiz çağrıda son 1 MB, lines/offset verilirse satır bazlı — aşağıda ayrıntısı.
GET FILES?path=<klasör>Sunucudaki bir klasörün girdileri (önce klasörler, sonra dosyalar; ad, yol, boyut, değiştirilme zamanı). path boşsa Windows'ta sürücüler, Linux'ta /. Yönetim arayüzünün sunucu dosya seçicisi bunu kullanır.
GET DOWNLOADFILE?path=<dosya>Sunucudaki dosyayı indirir (örneğin dışa aktarılan seviye paketi).
POST UPLOADFILE?name=<ad>İstek gövdesini sunucunun geçici klasörüne (${TEMP}/NetsimUploads) yazar ve dosyanın sunucu yolunu döner. Gövde sınırı dinleyicinin maxContentSize ayarıdır.
POST LICENSEFILELisans dosyasını yükler.
POST EXECCOMMANDAşağıdaki komutları çalıştırır.
EXECCOMMAND komutuEtkisi
LOADCONFIGYapılandırmayı yeniden okur.
DUMPMEMORYBellek havuzu istatistiklerini döker (ayrıntı düzeyi günlük seviyesine bağlıdır).
DUMPPROCESSSürecin küçük dökümünü (mini dump) alır.
KILLPROCESSparams.processId ile verilen alt süreci sonlandırılmış olarak işaretler.
CLOSESESSIONparams.sessionKey ile verilen istemci oturumunu sonlandırır — yalnız SYSDBA login'i (SYSADMIN üyesi başka bir login 403 alır). Oturum kapandı durumuna alınır ve listeden düşer; WebSocket istemcisi Session terminated kapanış çerçevesi alır. O anda bir işçi süreç o oturumun uzun bir isteğini işliyorsa yanıttaki busyProcessId onu söyler; bağlantı istek bitene kadar açık kalır (KILLPROCESS ile düşürülebilir). Yönetim arayüzünde Bağlı Kullanıcılar sayfasının Zorla sonlandır düğmesi (yalnız SYSDBA ile girildiğinde görünür).
TERMINATE_APPLICATIONparams.sessionKey ile verilen istemciye kapanma isteği gönderir — yalnız SYSDBA login'i. Oturumun kuyruğuna messageClass adminRequest, subject TERMINATE_APPLICATION iletisi konur, params.message (isteğe bağlı) iletinin metnidir. NetsimApp bu notu kullanıcıya gösterir ve 30 saniye sonra kendini kapatır; ajan oturuma dokunmaz, istemci yanıt vermezse oturum açık kalır (o zaman CLOSESESSION). Yönetim arayüzünde Bağlı Kullanıcılar sayfasının Kapanma isteği gönder düğmesi.
DBSETUPYeni bir PostgreSQL / Firebird sunucusuna dağıtım setinden ürün veritabanı kurar (yukarıda “Yeni sunucuya ürün veritabanı kurmak”). params: engine (POSTGRESQL | FIREBIRD), server, port, user, password (deponun süper kullanıcısı), database (PostgreSQL: yeni veritabanının adı; Firebird: hedef .fdb yolu), source (sunucudaki yedek / veritabanı dosyası), isteğe bağlı library, sysdbaPassword (PostgreSQL), checkOnly. Yanıt {"result", "message", "engine", "database", "checkOnly", "steps": [{"step", "status", "detail"}]}; status OK / INFO / WARNING / ERROR / PLANNED, ayrıntılar Accept-Language dilinde. Başarıda 200, hatada 202. Kaydı yapmaz.
RESTARTHizmeti yeniden başlatır. Hizmet olarak koşmuyorsa (örn. -A kipinde) hizmet adı bulunamaz ve 400 döner.
RESCHEDULETASKSGörev zamanlayıcıya görevleri yeniden planlatır.
RELOADENDPOINTSWEBSENDP değiştiğinde /crud/fastapi uç nokta önbelleğini düşürür; sonraki istek tabloyu yeniden okur, hizmet yeniden başlatılmaz. Yanıt kaç CRUD işlemcisinin yenilendiğini söyler. MCP sürecinin karşılığı reload_tools aracıdır.
IMPORTDOCparams.collection koleksiyonunu params.path kaynak havuz dosyasından params.database veritabanının belge havuzuna (ALTER DATABASE … SET DOCUMENTS) alır: yalnız o koleksiyonun satırları silinip yeniden yazılır, hata olursa hiçbir şey değişmez. Koleksiyon adı küçük harf, rakam ve tire içerir. Yanıt konu ve parça sayısını verir.

5.2.1 GETLOG — lines ve offset

Günlük dosyası bir defada değil, sonundan geriye doğru bir pencere hâlinde döner. İki kip vardır ve kipi parametrenin varlığı seçer:

ÇağrıNe döner
GETLOG Bayt kipi: dosyanın son 1 MB'ı; pencerenin başındaki yarım kayıt kırpılır. Paketteki yönetim arayüzü (wwwroot/pages/Logs.html) uç noktayı böyle çağırır ve “indir” düğmesi de bu içeriği kaydeder.
GETLOG?lines=N Satır kipi: dosyanın sonundan N satır. Geçerli aralık 1 – 100.000; aralık dışı bir değer aralığa çekilir.
GETLOG?lines=N&offset=K Sondan K satır atlanır, ardından N satır alınır — yani geçmişe doğru sayfalama. offset tek başına verilirse satır sayısı 1000 öndeğerini alır.

Yanıt her iki kipte de aynı alanları taşır: content (metin), size (dosyanın tamamı, bayt), readSize (dönen bölüm, bayt), startPos (dönen bölümün dosya içindeki başlangıcı, bayt), lines (dönen satır sayısı), offset (uygulanan atlama) ve lineMode (satır kipinde mi). startPos'un sıfırdan büyük olması, daha eski kayıtların bulunduğunu söyler.

Satır kipinde taranan pencere 16 MB ile sınırlıdır: istenen satırlar bu pencerenin içinden seçilir. Sınır bilinçlidir — bu bir yönetim uç noktasıdır ve gigabaytlık bir günlüğü belleğe almamalıdır. Sayısal olmayan bir lines/offset değeri (?lines=abc) yok sayılır ve çağrı bayt kipinde işlenir.

5.2.2 MONITORDATA — izleme sayıları

Tek bir ölçüm anının sayılarını verir; periyodik olarak (saniyeler mertebesinde) çağrılmak üzere ucuz tutulmuştur. Ayrıntılı listeler kendi uçlarında kalır (SESSIONS, PROCESSES, THREADS, TASKS, STATUS) ve bellek havuzlarının nesne dökümü EXECCOMMAND DUMPMEMORY'nin işidir — bu uç onları tekrarlamaz.

Bölümİçerik
currentTime, startTime, uptimeSeconds Ölçüm anı, hizmetin başlama zamanı ve çalışma süresi (saniye).
system Makine adı, işletim sistemi sürümü, mantıksal çekirdek sayısı, fiziksel belleğin toplamı/kullanılabilir/kullanılan miktarı (bayt) ve kullanım yüzdesi (0–100 arası sayı, metin değil). available, işletim sisteminden ölçüm alınabildiğini söyler.
process Usta sürecin, yani hizmetin kendisinin süreç numarası, yerleşik kümesi ve tepe değeri, sanal alanı (bayt) ve CPU süreleri (milisaniye: çekirdek, kullanıcı, toplam). Ölçüm bilerek usta sürece yöneltiliyor: multiProcess modelinde isteği bir --forkNetWorker alt süreci karşılar, dolayısıyla “bu süreç” o istek için doğmuş geçici bir işçi olur.
counts Süreç, oturum ve zamanlanmış görev sayıları. Hepsi paylaşılan bellekten okunur, yani hangi süreç yanıtlarsa yanıtlasın aynı değeri verir. İş parçacığı sayısı bilerek yoktur: iş parçacığı yöneticisi süreç-yereldir ve alt süreçten okunan sayı işçinin kendi parçacıklarını anlatırdı; o bilgi GET THREADS'in işidir.
connectionPool İstemci bağlantı havuzu, bütün süreçler (kayıt paylaşılan bellekte): entries, idle, busy, opening, acquired, reused, opened, discarded, orphaned, refused sayaçları ve byProcess / byDatabase dağılımı.
listeners Her dinleyici için ad, işçi modeli, çalışma durumu, o an işlenen bağlantı sayısı ile maxConnections/maxConnectionsPerClient sınırları, sıra bekleyen bağlantı sayısı, dinlenen IP ve port. Sınıra ne kadar yaklaşıldığını görmek için bakılacak yer burasıdır.
log Günlük dosyasının yolu ve boyutu (bayt) — büyüme hızı bir uyarı eşiğidir. İçerik GETLOG'un işidir.
license Lisansın geçerli olup olmadığı (valid) ve lisansı makinede başka bir ajanın tutup tutmadığı (secondary: bu ajan koltuksuz). Sahip/birim bilgileri STATUS ve LICENSES uçlarındadır.

Bir alt bilgi kaynağı okunamazsa o bölüm eksik ya da sıfır kalır, ama çağrı başarılı döner: bir izleme ucunun tek bir eksik sayı yüzünden hiçbir şey döndürmemesi yanlış olurdu.

Tanınmayan bir uç 400 verir.

5.2.3 SQL/MQL çalıştırma

Yönetim REST'inin SQL çalıştıran bir ucu yoktur. Bir betik çalıştırmak isteyen istemci — paketteki yönetim arayüzü dahil — motorun kendi yüzeyini kullanır: durumsuz POST /ivedi/execute (betik kipi script: true, hatasız betik commit edilir, bir deyim bile düşerse bütün betik geri alınır) ya da bir /ivedi WebSocket oturumunun script komutu (koşan betik POST /ivedi/cancel ile iptal edilebilir). Kimlik, kapı ve sonuç biçimi “IVEDI oturum protokolü (/ivedi)” bölümündedir.

Yönetim arayüzünün SQL sayfası ikinci yolu kullanır: seçilen veritabanında bir oturum açar, betiği tek işlem olarak çalıştırır (hatasızsa COMMIT, bir deyim düşerse ROLLBACK). Satır sınırını aşan sonuçta Devamını getir kalan satırları getirir; bu sürede işlem açık kalır ve COMMIT, satırlar bitince ya da sonraki koşudan önce gönderilir. Sayfa ayrıca yalnız seçili metni çalıştırır (Ctrl+Shift+Enter), son 100 betiği tarayıcıda geçmiş olarak tutar (Ctrl+↑/↓), betiği dosyaya kaydedip yükler (Ctrl+S), SQL ile sonuçları bir oturum dosyasına yazar ve geri yükler, editörde arar / değiştirir (Ctrl+F, Ctrl+H) ve her sonuç kümesini CSV ya da JSON olarak indirir. Geçmiş ve dosyalar tarayıcıda kalır, sunucuya gitmez.

Elle işlem işaretliyken betikten sonra COMMIT / ROLLBACK gönderilmez: işlem açık kalır (bağlantı satırında “işlem açık”), hatalı bir deyimin etkisi olmaz ama öncekiler durur, işlemi COMMIT ve ROLLBACK düğmeleri bitirir. Açık işlem varken otomatik kipe geçilemez; veritabanını değiştirmek ya da bağlantıyı kesmek açık işlemi geri alacağı için onay ister. Bağlantı menüsü oturumu yeniden açar, keser ve veritabanı listesini yeniler.

Hata ayıkla düğmesi PSQL hata ayıklayıcısının panelini açar (ajanda debugMode açık ve login DEBUGGER rolünde ya da SYSDBA; bkz. "IVEDI oturum protokolü" > "Hata ayıklama"). Durma noktaları kutuya APP.P:5, :3 if a = 1 biçiminde yazılır (nesne satırı CREATE metnine göre 1 tabanlı, :SATIR betik), Uygula ile gönderilir; betik koşarken bir durağa gelince durak bilgisi, çağrı yığını ve en içteki çerçevenin değişkenleri görünür, Devam / Üstünden / İçine / Dışına / Sonlandır düğmeleri ve ifade kutusu (Değerlendir) kullanılır. Durak boyunca işlem açık kalır; düğme kapatılınca durma noktaları silinir.

Editörün solundaki nesne paneli seçili veritabanının tablolarını, görünümlerini, prosedürlerini ve fonksiyonlarını gruplar halinde listeler (araç çubuğundaki Nesneler açar / kapatır); arama kutusu ada ve şemaya göre süzer, Sistem işareti motorun kendi nesnelerini de getirir, geçersiz nesneler üstü çizili görünür. Bir öğeye tıklamak ŞEMA.ADı editördeki imlece ekler; sağ tık tablo ve görünümde SELECT deyimi ekle, Verileri göster ve Tablo yapısı, prosedür ve fonksiyonda Kaynağı göster seçeneklerini sunar. Liste veritabanı değişince, hatasız bir DDL koşusundan ve COMMIT düğmesinden sonra kendiliğinden yenilenir; ayrı bir oturumdan okunduğu için açık işleme ve sonuç imleçlerine dokunmaz.

Araçlar menüsü: editördeki (ya da seçili) metni PostgreSQL'e veya Firebird'e çevirir — deyimler çalıştırılmaz, hedefin metni kopyalanabilir bir panelde görünür; istatistikle çalıştırır — her deyimin süresi ve eklenen / güncellenen / silinen satır sayısı ileti olarak gelir (motorda ayrı bir çalıştırma planı yoktur); seçili ya da sorulan tablonun / görünümün yapısını (kolon, tip, uzunluk, boş geçilebilirlik, öndeğer, açıklama) gösterir — şemasız ad katalogdan bulunur; veritabanı bilgisini (oturum ve veritabanı kartı) ve sistem tablolarını listeler.

Bir sonuç kümesi tek bir tablodan geliyor ve o tablonun birincil anahtarının bütün kolonlarını içeriyorsa Düzenle onu tabloda düzenlenebilir yapar: satır değiştirme, ekleme ve silme birikir, Uygula birincil anahtarla UPDATE / INSERT / DELETE deyimlerini gösterip onay ister. Tabloya kaydet sonucu bir tabloya yazar (tablo yoksa sonucun kolonlarıyla kurulur), Araçlar menüsündeki CSV'den tabloya yükle bir CSV dosyasını (ayırıcı ;, , ya da sekme; ilk satır başlık) bir tabloya ekler — başlıklar kolonlara adla eşlenir, tablo yoksa metin kolonlarıyla kurulur. Yazan her işlem deyimlerini önce gösterir; otomatik işlem kipinde hepsi tek işlemdir (biri düşerse hiçbiri kalmaz), elle kipte işlem açık kalır.