Monitoring konusunda bir soru sormak istiyorum hem de ilk konuyu açmış olayım.
Monitoring; temel olarak sistemlerimizi izlemek için ihtiyacımız olan şey kısacası “logs” ibaret diye biliyorum. Bu konuda kısıtlı bilgim olduğu için bir ihtiyacım oluştu.
Projemde saniye saniyesine çalışan cronlar var. Bu cronlar x api üzerinden haberleşme yaparak verileri alıyor işliyor ama ben bu çalıştı mı çalışmadı mı bilmiyorum. Belki 10 saniye çalışıp 2 saniye sonra çalışmayacak. Genel olarak bu ve bunun gibi servislerimi-cronlarımı tek bir yerde loglayıp-izlemek istiyorum Fakat bu işin en verimli yolu ne kafamda bunu oturtmak istiyorum kalkıp redis veya mongo sunucusu kurup oraya yazabilirim düz mantık ama bu production ortamda doğru yöntem midir ya da log sunucusu maliyetli olur xxx tool kullanmak daha mı mantıklı bunu da bilmiyorum.
Bu konuda doğru olan nedir hocam ne yapmalıyım? Bugüne kadar hep kendi çapımda uygulamalar ile uğraştım startup projem için en iyisi olsun istiyorum @ozgurozturknet
Teşekkür ederim.
Sadece logs değil aynı zaman metric ve eventleri de izlemeniz gerekir. Bu biraz geniş bir konu. Ama temelde şunu diyeyim. Sistem kaynaklarının durumu nedir “metrics”, uygulamanın kullanım durumu nedir, örneğin saniyede kaç bağlantı isteği geliyor “metric”, uygulamaların oluşturduğu loglar, uygulamada neler oluyor, nasıl cevap veriyor “logs”, ve son olarak eventler, örneğin crontab çalıştı, durdu, hata verdi “events”. Hepsi için değişik araçlar var. Örneğin nagios logları çekmek için kullanılan önemli araçlardan biri. Spesifik olarak sizin işinizi ise https://cronitor.io/ ile halledebilirsiniz. Bir çok yerde cron jobların monitor edilmesi için kullanıldığını gördüm.
Grafana-prometheus kurulumu sağladım fakat her şey eksiksiz olmasına rağmen veriler dashboarda yansımıyor. Prometheus üzerinden veriler aşağıdaki görsellerdeki gibi alınıyor ama işaretlediğim alanlar olmasına rağmen verileri alamıyorum sanırım sorun bundan kaynaklı gibi.
Ekran görüntüsünde gördüğüm kadarıyla sorgunuzda instance ve job ismi (node_exporter) belirtilmemiş. Bu sebeple prometheus veriyi çekememektedir. Öncelikle prometheus için node_exporter’ın çalıştığına emin olunuz. Çünkü node_exporter üzerinden sistem bilgileri çekilmektedir. Eğer ki node_exporter’ı çalıştırmadıysanız aşağıdan indirin ve çalıştırın. Ayrıca node_exporter’ı prometheus sorunsuz bir şekilde çalıştırabilmesi için prometheus.yml dosyasına aşağıda belirtilen şekilde node_exporter ayarlamasını gerçekleştirin.
Örnek prometheus.yml dosyası;
# my global config
global:
scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "node_exporter"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9100"]
Prometheus dosyasının ayarlarını tamamladıktan sonra prometheus servisini yeniden başlatınız.