Ana Sayfa

PostgreSQL için Dağıtık İzleme: pg_tracing

1 dk okuma

pg_tracing, PostgreSQL veritabanları için geliştirilmiş, sunucu tarafında dağıtık izleme (distributed tracing) span'leri üreten bir eklentidir. Bu eklenti, örneklenmiş sorgular üzerinde çalışarak, veritabanı işlemlerinin detaylı performans verilerini toplar. Üretilen span'lere pg_tracing_consume_spans ve pg_tracing_peek_spans görünümleri aracılığıyla erişilebilirken, pg_tracing_json_spans fonksiyonu span'leri OTLP JSON formatında çıktı olarak sunar. Eklenti ayrıca istatistikleri okumak ve sıfırlamak için pg_tracing_reset ve pg_tracing_info gibi yardımcı fonksiyonlar da sağlar. pg_tracing şu anda PostgreSQL 14, 15 ve 16 sürümlerini desteklemekte olup, erken geliştirme aşamasında olduğu için kararsızlıklar gösterebileceği belirtilmiştir.

pg_tracing, PostgreSQL'in iç fonksiyonları (Planner, ProcessUtility, ExecutorRun), SELECT, INSERT, DELETE gibi SQL ifadeleri, ALTER, SHOW gibi yardımcı ifadeler, yürütme planındaki her bir düğüm (SeqScan, NestedLoop), iç içe geçmiş sorgular, tetikleyiciler ve paralel çalışanlar dahil olmak üzere geniş bir olay yelpazesini izler. İzleme bağlamı (trace context), SQLCommenter veya pg_tracing.trace_context GUC parametresi aracılığıyla yayılabilir. Eklentinin kurulumu, GitHub deposundan klonlanıp derlenerek ve postgresql.conf dosyasında shared_preload_libraries ayarına pg_tracing eklenerek yapılır. Ayrıca, compute_query_id, pg_tracing.max_span, pg_tracing.track gibi parametreler ve OpenTelemetry (OTEL) entegrasyonu için pg_tracing.otel_endpoint gibi ayarlar da yapılandırılabilir.

Bu eklenti, veritabanı performansını derinlemesine anlamak ve dağıtık sistemlerdeki darboğazları tespit etmek için kritik bilgiler sunar. Özellikle karmaşık veritabanı işlemlerinin ve sorgu yürütme planlarının ayrıntılı izlenmesi, geliştiricilere ve veritabanı yöneticilerine performans sorunlarını gidermede önemli avantajlar sağlar. Eklentinin ek paylaşımlı bellek gerektirmesi ve yüklenirken bu belleği tüketmesi, yapılandırma sırasında dikkate alınması gereken bir husustur.

İçgörü

Bu eklenti, PostgreSQL veritabanı işlemlerinin dağıtık sistemlerdeki performansını ve davranışını detaylı bir şekilde izleyerek, karmaşık mimarilerdeki darboğazların tespit edilmesini ve giderilmesini kolaylaştırır.

Kaynak