Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Cloya'da Dot Net uygulamalarının modernizasyonu üzerinde çalışan Turga Özgür tarafından sunulan teknik bir eğitim içeriğidir. İnternet üzerinden yapılan sunumda izleyiciler sorularını ekran üzerinden gönderebilmektedir.
- Video, Prometheus ve time series veritabanları konusunu kapsamlı bir şekilde ele almaktadır. İçerikte Prometheus'un temel metrik türleri (counter, gauge, histogram, summary, quantile), sorgulama dili (PromQL), Grafana entegrasyonu ve Kubernetes ortamında kullanımı adım adım anlatılmaktadır. Eğitmen, Go dilinde örnek uygulamalar üzerinden metrik tanımlama, sorgulama ve görselleştirme süreçlerini pratik örneklerle göstermektedir.
- Sunumda ayrıca Prometheus'un komponentleri (Prometheus server, Push Gateway, metrik exporter'lar, Alert Manager, Grafana) ve bunların nasıl bir arada çalıştığı detaylı olarak açıklanmaktadır. Banka örneği üzerinden metrik oluşturma, Kubernetes ortamında Prometheus operatörü kullanımı, alarm ayarları ve Grafana'da dashboard oluşturma gibi pratik uygulamalar da videoda yer almaktadır.
- Sunum ve Görev Tanıtımı
- Konuşmacı Turga Özgür Cloya'da Dot Net uygulamalarının modernizasyonu, CI/CD ve üretim uygulamalarının optimizasyonu gibi alanlarda çalışmaktadır.
- Bu sunum, Prometheus, Grafana ve kullanılan diğer komponentlerin ne iş yaptıklarını ve ne amaçla kullanıldığını açıklamayı hedeflemektedir.
- Sunum sırasında sorular alt kısımda yazılabilecek ve konuşmacı tarafından cevaplanacaktır.
- 01:52Time Series Database Kavramı
- Prometheus, zamana bağlı olarak gelen verileri saklayan ve sorgulanan bir time series database'dir.
- Time series verileri, zamana göre değişen değerlerdir; örneğin CPU değerleri, request count, response time veya özel olarak atılan business değerleri.
- Time series database'lerin avantajları hızlı çalışması, kolay ölçeklenebilirliği, performanslı olması ve geriye dönük karşılaştırmalar gibi gelişmiş sorguları yapabilmesidir.
- 04:09Prometheus ve Metrik Oluşturma
- Prometheus, kod içerisinden metrik atma ve bu metriklerin nasıl yansıdığına bakmayı örnekle açıklamaktadır.
- Metrik oluşturma örneğinde "payment_count_total" adında bir metrik oluşturulmuş ve "banka tipi" label ile değer atanmıştır.
- Time series verilerinde satır sayısı artmaz, sadece değerler güncellenir; Prometheus bu değerlerin zamana göre değişimini takip edebilir.
- 07:05Prometheus Time Series Monitör Aracı
- Prometheus açık kaynaklı bir time series monitör aracısıdır ve kendi sorgulama dili vardır.
- Prometheus, metrikleri uygulamalardan belirli zaman aralıklarında okumak için tasarlanmıştır, bu sayede sistemler metrik göndermekle meşgul olmaz.
- Asenkron bir şekilde çalışır ve metrikleri çekme yöntemi tercih edilir, ancak Push Gateway kullanarak metrikleri göndermek de mümkündür.
- 07:59Metrik Görüntüleme ve Metrik Tipleri
- Prometheus sorgularını destekleyen birçok monitör paneli kullanılabilir, ancak topluluk tarafından kabul gören Grafana tercih edilmektedir.
- Metrik tipleri arasında Counter, Gauge, Histogram ve Quantile bulunmaktadır.
- Counter, bir sayıyı sadece artı yönünde değiştiren metrik türüdür ve hiç azalmaz.
- Gauge, Counter'dan farklı olarak hem arttırma hem de azaltma işlemi yapabilen bir metrik türüdür.
- Histogram, belirli aralıklar vererek değerleri sınıflandıran bir metrik türüdür.
- Quantile, Histogram'a benzer şekilde çalışır ancak hesaplanmış değerleri doğrudan sunar.
- 09:04Prometheus Alternatifleri ve Kullanım Alanları
- Prometheus'un muadilleri arasında Graphite ve InfluxDB gibi time series database'leri bulunmaktadır.
- Anlık fiyat değişimi, borsa ve hisse senedi gibi çözümlerde Prometheus kullanılabilir, ancak verilerin sürekli kaydedilmesi gerekir.
- Az frekanslı metrikler için Prometheus kullanmak zorluk çıkarabilir, çünkü sorgulamalar zaman aralıklarına göre yapılır.
- 12:11Metrik Oluşturma Örneği
- Metrik isimlendirme standardında, metriklerin sonlarının alt tire total şeklinde bitmesi önerilir.
- Prometheus için hazır exporter'lar mevcuttur (Redis, MS SQL, MySQL, Windows, Linux makineleri için), ancak kendi metriklerimizi de oluşturabiliriz.
- Go ile örnek bir uygulama oluşturulmuş ve new counter vector ile metrik tanımlanmıştır.
- Uygulama, 88 portundan dinleyen ve gelen JSON request'leri işleyen basit bir Go uygulamasıdır.
- 14:47Prometheus ve Counter Metrikleri
- Eğitmen, Prometheus Go dilinde bir alan açarak counter metriklerini tanımlamaya başlıyor.
- Soru ekranından gelen sorulara yanıt veriyor; Grafana üzerinden Prometheus sorgusu çekilebileceği belirtiliyor.
- Uygulama içi hataloglarını Prometheus'da tutmanın mantıklı olmadığı, çünkü label'ların çok değişken olması metrik sayısını öngörülmez şekilde artırdığı açıklanıyor.
- 19:47Counter Metriklerinin Kullanımı
- "Payment with recorded card counter" adlı bir counter metriği tanımlanıyor, kayıtlı kart ile yapılan ödemeleri saydırmak için kullanılıyor.
- Counter metriğinin tanımı için name, help ve label değerleri belirleniyor.
- Request içerisinde kayıtlı kart bilgisi varsa ve banka tipi belirtilmişse, counter metriğinin değeri increment fonksiyonu ile artırılıyor.
- 21:47Counter Metriklerinin Test Edilmesi
- Örnek bir request ile banka tipi "a", ödeme miktarı 200 TL ve kayıtlı kart bilgisi olan bir ödeme yapılıyor.
- Prometheus'da metriklerin listelendiği sayfada, counter metriğinin değeri arttığını görebiliyoruz.
- Birden fazla ödeme yapıldığında, counter metriğinin değeri artmakta, ancak asla azalmıyor.
- 23:15Counter ve Gauge Metrikleri
- Counter metriklerinde değer artabilir ancak azaltılamaz, Gauge metriklerinde ise değer hem artırılabilir hem de azaltılabilmelidir.
- Gauge metrikleri, örneğin o an aktif olan payment request sayısı gibi azalabilir değerler için kullanılır.
- Go dilinde defer anahtar kelimesi ile tanımlanan fonksiyonlar, metot sonlandıktan sonra (başarılı olsa veya hata vermesine rağmen) çalışır ve diğer dillerdeki finally bloğuna benzer.
- 26:50Histogram Metrikleri
- Histogram metrikleri, değerlerin belirli aralıklara göre takibini sağlayan bir metrik türüdür.
- Örneğin ödeme miktarlarını 20 TL, 100 TL, 200 TL gibi aralıklara göre takip edebiliriz.
- Histogram metriklerinde, her aralık için ayrı bir satır oluşturulur ve toplam değerler gösterilir.
- 33:17Summary Metrikleri
- Summary metrikleri, değerleri örnekleyerek histogram olarak tutup hesaplayarak çalışır ve histogram ile benzer mantıkta isimlendirilir.
- Summary metrikleri, Prometheus'ta quantil (percentil) hesaplamaları yapmak için kullanılır.
- Summary metrikleri, en kötü %10 veya %1 gibi belirli percentillerin ortalamasını hesaplayarak sistemdeki sorunları tespit etmeyi sağlar.
- 36:21Quantil ve Metrik Hesaplama
- Quantil, kaçırmamamız gereken azınlık değerlerini gösterir ve hesaplamanın hangi değerleri kazanarak yapılması gerektiğini belirtir.
- Summary, ödemelerin ne kadar sürdüğünü ölçmek için kullanılır ve timer ile zaman tutulur.
- Metrikler çalıştırıldığında quantil değerleri (ortalama, en kötü yüzde on'un ortalaması, en kötü yüzde bir'in ortalaması) oluşur ve ortalama değer bazen yanıltıcı olabilir.
- 39:27Prometheus Query Language (PromQL)
- PromQL, gönderilen metrikleri sorgulamak için temel aritmetik operatörleri, eşitlikler ve regex ifadelerini destekler.
- PromQL'de kullanılabilen fonksiyonlar arasında sum, rate, increase, round, avg ve date fonksiyonları bulunur.
- Dashboard'lar ve alarmlar PromQL ile yazılan sorgular üzerinden kurgulanır.
- 41:17PromQL Örneği
- Son beş dakika içerisinde A Bankası'ndan geçen işlemlerin yüzde kaçı başarılı olduğunu hesaplamak için PromQL sorgusu oluşturulur.
- Sorguda banka tipi A olan ve başarılı (success=1) işlemlerin oranını hesaplayarak, son beş dakika içindeki artış değeri bulunur.
- En kötü yüzde kavramı, istek sürelerinin en uzun süren kesimlerinin ortalamasını hesaplamayı ifade eder.
- 45:24Kubernetes Ortamında Prometheus
- Prometheus, uygulamaların memory'sinde tutulan metrikleri belirli zaman aralıklarıyla alır ve kaydeder.
- Grafana'daki label'lar, metriklerin labellarını sorgulamak için kullanılır ve kod tarafında tanımlanmış olmalıdır.
- Kubernetes ortamında Prometheus, Grafana ve Alertmanager gibi bileşenler çalıştırılarak uygulamaların metrikleri izlenebilir.
- 49:18Prometheus Test Etme ve Sorun Giderme
- Fortuo kullanılarak saniyede bir tane istek atılarak uygulama test ediliyor.
- Metriklerin görünmemesi sorunu nedeniyle uygulama tekrar deploy ediliyor.
- Uygulama tekrar çalıştırıldıktan sonra metrikler doğru şekilde görüntülenmeye başlıyor.
- 54:04Metrik Testi ve Prometheus Yapılandırması
- İki farklı Fortuo instance ile farklı ödeme miktarları (200 TL ve 20 TL) ile test ediliyor.
- Aktif request sayısı ve toplam yapılan ödeme sayısı gibi metrikler sürekli artıyor.
- Prometheus'un metrikleri doğru şekilde topladığı ve Prometheus server'ın komponentleri arasındaki iletişim gösteriliyor.
- 57:17Prometheus ve Kubernetes Ortamı
- Kubernetes cluster'ında her node'un içerisinde node exporter var ve bu node'ların durumlarını Prometheus operatörü iletiyor.
- Payment service gibi kendi servislerin metrikleri de Prometheus operatörü tarafından toplanıyor.
- Node exporter'lar sadece Kubernetes node'ları için değil, Windows veya Linux makine için de kullanılabilir ve bu makinenin RAM, CPU, network gibi metriklerini alabilir.
- 59:14Prometheus ve Grafana Kullanımı
- Prometheus dashboard üzerinden metrikler sorgulanabiliyor ve birkaç tane navigasyon var.
- Alertmanager kullanılarak alarmlar üretiliyor ve web hooklar gibi çıktılar gönderilebiliyor.
- Alarm tanımlamada expression, condition ve for gibi parametreler kullanılarak sorgunun sonucu belirli bir süre boyunca true gelirse alarm üretilmesi sağlanıyor.
- 1:01:29Kaynak Kod ve Metrik Etiketleri
- Tüm konfigürasyon dosyaları ve uygulama ayarları bir repository'de bulunuyor.
- README kısmında lokal bilgisayarda aynı ortamı kurma adımları detaylı olarak anlatılıyor.
- Prometheus operatörü otomatik olarak instance, job, namespace, pod ve service gibi etiketleri ekliyor ve bu etiketler üzerinden sorgulama yapılabilir.
- 1:03:33Prometheus Sorgulama Örneği
- Örnek sorguda "banka tipi A olanları" sorgulamak isteniyor.
- Sorgulama sonucunda "increase" fonksiyonu kullanılarak artış miktarına bakılmaya çalışılıyor.
- İstatistiksel sonuçlar için "istakses" olmadığından anlamlı bir değer elde edilemiyor.
- 1:05:56Prometheus Güvenlik Özellikleri
- Prometheus metric çekerken TLS (HTTPS üzerinden hizmet veren servisler) desteği bulunuyor.
- Authentication konusunda net bir bilgi yok, dökümanda bu konuda bilgi bulunmuyor.
- İçeride çalışan sistemlerle ilgilenen konuşmacı için bu konuda ihtiyaç yaşanmamış.
- 1:07:11Grafik Oluşturma
- Sorgulama sonucunda grafik oluşturuluyor ve bir dakika için toplam kayıtlı kartla ödeme sayısı 150'in üstünde 180'lilerde sabit kalıyor.
- Grafana'da bazı grafikler oluşturulmuş ancak bazıları çalışmıyor.
- Sorunun pod değişkeniyle ilgili olduğu tespit ediliyor.
- 1:09:29Grafana Kullanımı
- Grafana'da anasayfadan dashboard eklenebiliyor veya import edilebiliyor.
- Yeni bir görüntü oluşturulduğunda tek değer göstermek için "single stat", artan azalan değerler için "gaugue" gibi grafik tipleri seçilebiliyor.
- Grafiklerde gösterim şekli, bar veya line ile gösterim, opacity gibi ayarlar yapılabiliyor.
- Panelin sol üst tarafında değişkenler seçilebiliyor ve bunlar panel ayarlarında tanımlanıyor.
- 1:11:45Prometheus Query ve Variable Tanımlama
- Query oluşturmak için label ve tip olarak "query" belirleniyor.
- DataSource olarak Prometheus seçilerek, "upmetri" adında bir metrik tanımlanıyor.
- Variable tanımlarken "session promie" adlı servisin "pod" label değerini alarak, multivalue seçeneği ile birden fazla değer seçilebiliyor.
- 1:14:05Grafik Ayarları ve Metrik Sorgulama
- Panel düzenlemesi yaparak line yerine bar veya point gösterimi seçilebiliyor.
- Sorgulama yaparken "sum by pod" kullanıldığında, sadece pod label'ı kalıyor ve diğer label'lar (service, namespace) gruplanıyor.
- Payment duration metriklerinde quantil hesaplaması yapılarak ortalama değer, %10 ve %90 quantilleri görüntüleniyor.
- 1:18:19Payment Rate ve Alarm Kurulumu
- Payment rate metrikinde bir dakika içindeki ödeme artışları inceleniyor.
- Rule oluşturarak, payment rate 100'in altına düştüğünde alarm gönderme kurulabilir.
- Prometheus'un alarm listesinde, payment duration'ların 20'nin altına inerse alarm gönderme kuralları bulunuyor.
- 1:21:34Prometheus ve Grafana İncelemesi
- Prometheus'un target kısmında kendi uygulamalarımızın monitör edildiği görülebiliyor.
- Servis discovery kısmında Prometheus'un gördüğü tüm elemanların listesi bulunuyor.
- Grafana'da grafiklerde gözetmeme gibi durumlar için hata bildirim sistemi bulunmuyor.