Grpc# Amorphie APM Tracking ## Tespitler - 13/9/2024 Uctan uca temel hedefler; * Kullanici islemlerini anlamak. (Baslangic noktasi : **user** -> TCKN) * Request by Request surecini anlamak. (Baslangic noktasi : **X-Request-Id**) * X-Request-Id surec icinde is akisi ise **InstanceId** ve Zeebe **ProcessId**(s) sahibi olacaktir **Login sonrasi kullanici sessionu JTI degeridir.** ### Meeting Notes - [ ] @mehmettosun : Loginde, input edilen tckn header eklensin client side tarafinda. - [ ] @mehmettosun : Androidde device id tekilliginden emin olunmasi. X-Token-Id redact edilmesinin engellenmesi. - [ ] @mehmettosun : Son islemleri, tckn ve device id ile filtreleyerek test edip farkliliklarin kokenini duzeltmek lazim. - [ ] @mehmettosun : amorphie projelerinde Id gruplama - [ ] @mehmettosun : Workflow manager transitionlarda X-Workflow-name headeri gecerek wf ismide gecsin. X-Workflow-Id (Instance-id) X-Customer add also. - [ ] @mehmettosun : **X-Request-Id** deki guid hypensiz eklesin header. - [ ] if trace = wf icin instanceid hypensiz, if trace = bff, direct call icin x-request-id hypensiz - [ ] @mehmettosun : HttpWorker ve SetState zeebe instance bilgileri. Ayrica paketlenmis headerlarda elk arama yapilamadigi icin ayrica eklenmesi. - [ ] @mehmettosun : dapr zeebe command binding. command name ve correlation key icermiyor - [ ] @Aydemir apisix-x2 ve PROD-APISIX-X2 konsolidasyionu ve isim degisikligi ayni zamanda kontrolu - [ ] @Aydemir APISIX node dusmesi takibi. Tum podlar tek tek metric alarak yansitma yapilacak. - [ ] @Aydemir APISIX error loglarinin prod ortamina tasinmasi. anomaly ve alert mekanizmalarinin kurgulanmasi. - [ ] @aydemir Apisix Pluginlerinin calisma durumun takibi, ve her bir calismanin X-Request-ID ile loglandigindan emin olunmasi. - [ ] @mehmettosun Zeebe worker latency takibi. > STRESS TEST > Vadesiz hesap acma ve kapama akislarinin tetiklenmesi ile. > Kullanici basina 20 hesap acip akabinde 20 side kapanacak sekilde. Farkli doviz kodlarinda > JMeter uzerinde long pooling yaparak. > 10 kulllanici. > Her 20 ac kapadan sonra yeniden login. > View ler de cekilerek > - [ ] @Taylan Stress Test, postman collection Cemilden alinacak. ### Amorphie Workflow * [ ] */workflow/instance/cf476fa0-8656-1141-bfab-b5e344d72a19/transition/saving-account-opening-input-approve* linki yapisi */workflow/instance/{instanceid}/transition/saving-account-opening-input-approve* seklinde mi loglansa ? * [x] User - TCKN * [x] X-Request-Id * [ ] Workflow Name (X-Amorphie-Workflow olarak method icinde eklenebilir mi ? ) * HttpWorker Log Detayi. Bu arada BFF ler APISIX uzerinden foraya kadar takip yapabiliyor. Ama HTTP worker kesiliyor ! * [x] User - TCKN * [x] X-Request-Id * [ ] Workflow Name (Workflow ve Instance worker icinde X-Amorphie-xxxxx seklinde sabit headerlara eklenebilir. Hatta state, transition gibi bilgileride gecebiliriz, zenginlesir. ) * [ ] Instance-Id * [x] Zeebe Process Name * [ ] Zeebe Process Id *(http.request.headers.X-Zeebe-Process-Instance-Key [REDACTED] gorunuyor)* * [x] Target URL Information * Zeebe Publish Message - [ ] Grpc call ile atilan zeebe mesasinda, instance processid, workflow bilgileri bulunmuyor. - [ ] Mesaj - [ ] zeebe processid (yani varsa correlationKey) - [ ] process instanceid - [ ] X-Request-Id ### Zeebe * Health Monitoring * * Operation Monitoring * [ ] Simply Zeebe Monitor tarafina bir push atarak variablelari gizleyebilir miyiz. Prod islem akisi gormek icin sadece. Variable donen rest var apide, o her ui tarafina bos donerse sorun basitce cozulebilir. * [ ] Backoffice icerisinde Simply Monitor tarafina process linklerinin ui icine konmasi ### Apisix * Health Monitoring * * Operation Monitoring * Plugin gecisleri APM kaydi olusturmuyor. ### Skywalking/Zipkin Future konusu ------- # [OBSOLUTE] ## Temel Kavramlar ### Trace, Metric, Log Sistemler tarafından işlenen her bir işlem için oluşan telemetri verilerileridir. İşlemler kullanıcı veya diğer sistemler tarafından tetiklenebilirken sistemin kendisi tarafından tetiklenebilir. Sistemler işlemleri için üç temel bilgi yayınlar. #### Trace Bir işlemin (**trace**) sistemler üzerindeki tüm yolculuğunu tanımlar. Bir işlemin hiyerarşik olarak zaman gecirdiği alt iş parçacıkları (**span**) şeklinde takip edilir. Her bir işlem bir tekil anahtar alır. Bu telil anahtar ULID olarak tanımlanır. ##### Span Bir span temel olarak aşağıdaki bilgileri içerir * Yapılan işlemin adı. `/account/bff/get-account-list` veya `load-view/workflow/checking-account-opening` gibi. İşlem isimlerinde instance veya sorgu parametreleri gibi veriler dahil edilmez. * Başlama ve bitiş zamanı. İş parçacığının başladığı ve bittiği an timestamp olarak atanır. Format ISO 8601 formatındadır. * Attributes: key-value seklinde iş parçacığını ayrıştıracak temel verileri içerir. * Events: Span içerisinde anlık oluşan durumlar kayıt altına alınır. * Parent's Span identifier. * Links to zero or more causally-related Spans (via the SpanContext of those related Spans). * SpanContext information required to reference a Span. See below. ### Timing NTP https://gist.github.com/mutin-sa/eea1c396b1e610a2da1e5550d94b0453 ## Transactions İki temel parametre ile correlated tracking hedeflenmektedir. Tüm Methodlar için **X-Request-ID**. Özellikle Http GET servisleri için correlation anahtarıdır. Amoprhie Workflow için Methodlar için **Instance-Id** ## Amoprhie Workflow İş akışları sürecinin detaylı analizi ve hareketleri için **Instance-Id** üzerinden correlasyon kurulur. İş akışı ile ilgili tüm servis başlıklarında **X-Instance-Id** (GUID) eklenerek yapılır. Ayrıca her bir sorgu için istemci tarafında **X-Request-Id** (GUID) eklenecek. ### Client Flutter.Core tarafında http-client paketi her türlü request ve response datasını bir http servisine iletir. İletilicek format; ### APISIX ### Amoprhie ### Zeebe ### http-worker