Last9

resmi

Gerçek zamanlı üretim bağlamını—loglar, metrikler ve izler—yerel ortamınıza sorunsuz bir şekilde taşıyarak kodu daha hızlı otomatik düzeltin.

Last9 MCP ile neler yapabilirsiniz?

  • Üretim olaylarını araştırın — Asistanınızdan bir hizmete ait günlükleri, izleri, metrikleri, istisnaları ve tetiklenen uyarıları getirmesini isteyin; böylece neyin bozulduğunu teşhis edebilir.
  • Değişiklikleri etkileriyle ilişkilendirin — Dağıtımları ve yapılandırma değişikliklerini kontrol edin, ardından bir değişikliğin gerilemeye yol açıp açmadığını görmek için hizmeti ve çağıranlarını değişiklik öncesi ve sonrası karşılaştırın.
  • Prometheus metriklerini sorgulayın — Veri kaynağınızdaki herhangi bir metriği incelemek için PromQL aralık veya anlık sorguları çalıştırın ve etiket değerlerini listeleyin.
  • Veritabanı performansını inceleyin — Veritabanlarını keşfedin, yavaş sorgu yürütmelerini bulun ve OTel span’lerinden sorgu kalıplarını ve sunucu tarafı metriklerini gözden geçirin.
  • İzleri ve profilleri analiz edin — Kimliğe göre bir iz zaman çizelgesini alın, kohortlar arasındaki öznitelik sapmalarını sıralayın veya bir hizmet için alev grafiğini ve en çok çalışan işlevleri getirin.
  • Uyarıları ve panoları yönetin — Uyarı kapsamını ve düzenini gözden geçirin, uyarı kuralları oluşturun veya yamalayın ve özel panoları listeleyin, doğrulayın ya da düzenleyin.

Dokümantasyon

Last9 MCP Server

last9 mcp demo

Yapay zekâ aracınız üretimde neyin bozulduğunu bilmiyor. Bu, sorunu çözer.

Last9 MCP Server, Claude, Cursor, Windsurf ve MCP destekleyen diğer tüm yapay zekâ asistanlarını doğrudan üretim gözlemlenebilirlik verilerinize bağlar: günlükler, metrikler, izler, istisnalar, veritabanı sorguları, uyarılar ve dağıtımlar. Aracı tahmin yürütmeyi bırakır ve gerçek sinyalleri okumaya başlar.


30 saniyede başlayın (Hosted)

Yüklenecek ikili dosya yok. Yönetilecek token yok. Tek bir URL, tarayıcınızda OAuth, hepsi bu.

Last9 URL’nizde kuruluşunuzun kısa adını bulun: app.last9.io/<org_slug>/...

Claude Code

claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp

/mcp yazın, last9’ı seçin ve kimlik doğrulaması yapın. Hepsi bu.

Cursor

Settings > MCP > Add New MCP Server:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Connect’e tıklayın ve OAuth işlemini tamamlayın.

VS Code

v1.99+ gerekir. Komut Paleti’ni açın → MCP: Add Server, URL’yi yapıştırın ve kimlik doğrulaması yapın.

Ya da doğrudan settings.json içine ekleyin:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

Settings > Cascade > Open MCP Marketplace > gear icon (mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude Web/Desktop

Settings > Connectors > Add custom connector. Adını last9 koyun, URL’yi yapıştırın ve kimlik doğrulaması yapın.

Claude kuruluşunuzda yönetici erişimi gerekir.


Self-Hosted (STDIO)

MCP istemciniz HTTP aktarımını desteklemiyorsa veya sunucuyu yerel olarak çalıştırmanız gerekiyorsa bunu kullanın.

Yükleme

Homebrew:

brew install last9/tap/last9-mcp

NPM:

Node.js 22.23.4+, 24.22.1+ veya 26.12.1+ gerekir: önceki sürümler, yükleyici ikili dosyayı indirirken güvenliği ihlal edilmiş eMudhra ara sertifikalarından TLS sertifikalarını kabul eder.

npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest

İkili dosya sürümleri (Windows / manuel):

GitHub Releases sayfasından indirin:

PlatformArşiv
Windows (x64)last9-mcp-server_Windows_x86_64.zip
Windows (ARM64)last9-mcp-server_Windows_arm64.zip
Linux (x64)last9-mcp-server_Linux_x86_64.tar.gz
Linux (ARM64)last9-mcp-server_Linux_arm64.tar.gz
macOS (x64)last9-mcp-server_Darwin_x86_64.tar.gz
macOS (ARM64)last9-mcp-server_Darwin_arm64.tar.gz

Refresh Token Alma

Token’ları yalnızca yöneticiler oluşturabilir.

  1. API Access sayfasına gidin
  2. Write izinleriyle Generate Token’a tıklayın
  3. Token’ı kopyalayın

İstemci Yapılandırması

Homebrew:

{
  "mcpServers": {
    "last9": {
      "command": "/opt/homebrew/bin/last9-mcp",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

NPM:

{
  "mcpServers": {
    "last9": {
      "command": "npx",
      "args": ["-y", "@last9/mcp-server@latest"],
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

Nereye yapıştırılır:

İstemciKonum
Claude Web/DesktopSettings > Developer > Edit Config (claude_desktop_config.json)
CursorSettings > Cursor Settings > MCP > Add New Global MCP Server
WindsurfSettings > Cascade > MCP Marketplace > gear icon (mcp_config.json)
VS Codesettings.json içinde { "mcp": { "servers": { ... } } } olarak sarın — ayrıntılar
VS Code STDIO yapılandırması
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

NPM için: "command": "npx" kullanın ve "args": ["-y", "@last9/mcp-server@latest"] ekleyin.

Windows

GitHub Releases sayfasından indirdikten sonra arşivi çıkarın ve tam yolu belirtin:

{
  "mcpServers": {
    "last9": {
      "command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

Windows’ta NPM yöntemi daha kolaydır; yol yönetimi gerekmez.

Ortam Değişkenleri

DeğişkenVarsayılanAçıklama
LAST9_REFRESH_TOKEN(gerekli)API Access sayfasından alınan refresh token
LAST9_DATASOURCEkuruluş varsayılanıVeri kaynağı/küme adı — birden fazla Levitate kümeniz olduğunda kullanışlıdır
LAST9_FAKE_NOW_ISO(ayarlanmamış)Yalnızca eval/replay işlemleri içindir; üretimde asla ayarlamayın. lookback_minutes gibi göreli aralıklar çözümlenirken geçerli zamanın yerine geçen RFC3339 anı (ör. 2026-01-02T15:04:05Z); böylece çalıştırmalar tekrarlanabilir olur. Geçersiz bir değer başlangıç hatasına yol açar. Zaman aşımları, önbellekler ve token süresinin dolması gerçek zamanı kullanmaya devam eder
LAST9_API_HOSTapp.last9.ioAPI ana bilgisayarını geçersiz kılar
LAST9_TOOLSETStüm araçlarSunulacak araç kümelerini virgülle ayırarak belirtin (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Diğer adı: LAST9_MCP_TOOLSETS
LAST9_MCP_READ_ONLYfalseYalnızca salt okunur araçları sunmak için true ayarlayın; bkz. Salt okunur mod. Boole olmayan bir değer başlangıç hatasına yol açar. Diğer adı: LAST9_READ_ONLY
LAST9_MCP_ALLOW_WRITE_TOOLS—Salt okunur modda sunulmaya devam edecek yazma araçlarını virgülle ayırarak belirtin. Diğer adı: LAST9_ALLOW_WRITE_TOOLS
LAST9_MAX_GET_LOGS_ENTRIES5000Parçalı get_logs istekleri için en fazla girdi sayısı
LAST9_USE_LOG_SEARCH_APIfalseget_logs ve get_service_logs isteklerini istemci tarafında parçalamak yerine sunucu tarafında tek bir arama çağrısıyla yanıtlamak için true ayarlayın. Her çağrı 90 saniye sürer, ardından aralığı daraltma önerisi döndürür; bu süre içinde 502 veya 503 hatası bir kez yeniden denenir
LAST9_DEBUG_CHUNKINGfalseget_logs, get_service_logs, get_traces için parça planlama ayrıntılarını günlüğe kaydetmek üzere true ayarlayın
LAST9_DISABLE_TELEMETRYtrueDahili OTel izlemeyi etkinleştirmek için false ayarlayın
OTEL_SDK_DISABLED—Standart OTel ortam değişkeni. LAST9_DISABLE_TELEMETRY değerini geçersiz kılar
OTEL_EXPORTER_OTLP_ENDPOINT—OTLP toplayıcı uç noktası (yalnızca telemetri etkin olduğunda)
OTEL_EXPORTER_OTLP_HEADERS—OTLP kimlik doğrulama başlıkları (yalnızca telemetri etkin olduğunda)

Araç aşaması zamanlaması

Dahili telemetri etkin olduğunda araç aralıkları last9.phase.<phase>.duration_ms (gerçek geçen milisaniye) ve last9.phase.<phase>.failed (aşamanın hata döndürüp döndürmediği) alanlarını içerir. Yapılandırılmış günlükçü hata ayıklama kayıtlarını kabul ettiğinde aynı alanlar, tool ve phase ile birlikte tool phase completed hata ayıklama günlükleri olarak da yayımlanır. Bu zamanlamalar girdileri, sorgu metnini, kimlik bilgilerini veya hata gövdelerini eklemez.

AraçAşamalar
get_log_patternssample: örneği getirip çözümleme; mine: örüntü madenciliği; deep_link: isteğe bağlı dizini çözümleme ve bağlantıyı oluşturma
get_logsfetch: yeniden denemeler ve isteğe bağlı sayı tutarlılığı kontrolleri dâhil sonuçları getirme, çözümleme ve birleştirme; count_sanity: iç içe geçmiş isteğe bağlı kontrol; post_process: yönlendirme, özet ve JSON biçimlendirme; deep_link: dizini çözümleme ve bağlantıyı oluşturma
get_service_profilerequest: paylaşılan API istemcisi üzerinden isteği hazırlama ve gönderme, ardından kısa biçimlendirmeden önce yanıtın tamamını okuma

Başarısız getirme işlemleri dâhil, yalnızca yürütülen aşamalar kaydedilir. Hataları bastıran isteğe bağlı yardımcılar bu davranışı sürdürür; failed: false, isteğe bağlı bir bağlantının veya sayı kontrolünün kullanılabilir olduğunu doğrulamaz. İç içe geçmiş count_sanity süresi zaten fetch içinde yer alır; iki kez eklemeyin. Getirme süresi istemci çalışmalarını da içerir, dolayısıyla yalnızca arka uç yürütmesinin ölçümü değildir. Örnekleme veya önbelleğe alma ayarlarını değiştirmeden önce bu aşamaları eşdeğer zaman aralıkları ve arama yolları üzerinde karşılaştırın.

Gecikme araştırması için aynı hizmeti, veri kaynağını, dizini, zaman aralığını ve sınırları temel ve aday derlemelerde yeniden oynatın. Derleme SHA’sını, araç toplamını, aşama sürelerini, last9.logs.search_path değerini, varsa yeniden deneme özniteliklerini ve kapsam işaretlerini kaydedin. Yavaş çağrıların yanı sıra tipik çağrıları da karşılaştırın. Yavaş bir getirme veya profil isteği, incelenmesi gereken bir ağ/API aşamasını gösterir; gecikmenin kuyruğunu arka uca bağlamadan önce arka uç yürütmesine ilişkin kendi korelasyonlu kanıtınız gerekir. Bu tanılamalar tek başına gecikmede iyileşme olduğunu kanıtlamaz.

Salt okunur mod

--read-only (veya LAST9_MCP_READ_ONLY=true), yalnızca readOnlyHint: true açıklamasıyla işaretlenmiş araçları sunar. Böylece hiçbir araç uyarı kuralları, bildirim kanalları, panolar veya bırakma kuralları oluşturamaz, değiştiremez ya da silemez; uyarıları onaylayamaz veya yeniden atayamaz ya da grupları sessize alamaz. Açıklaması olmayan bir araç yazma aracı sayılır ve gizlenir.

Birkaç yazma aracını açık tutmak için bunları --allow-write-tools (veya LAST9_MCP_ALLOW_WRITE_TOOLS) ile listeleyin:

last9-mcp --read-only --allow-write-tools=acknowledge_alert,mute_alert_group
  • İzin verilen bir ad yazma aracı değilse (yazım hatasıysa veya bir okuma aracının adıysa) sunucu başlatılmaz; hata, geçerli yazma araçlarını listeler.
  • --read-only olmadan --allow-write-tools kullanılması başlangıç hatasına yol açar; çünkü tüm yazma araçları zaten sunuluyordur.
  • Salt okunur mod, --toolsets ile birlikte çalışır: bir araç yalnızca her iki koşulu da karşılıyorsa sunulur. --toolsets=alerts --read-only --allow-write-tools=mute_alert_group, uyarı okuma araçlarını ve mute_alert_group aracını sunar; seçilen araç kümelerinin dışındaki izinli bir yazma aracı gizli kalır.
  • --http modu ve dump-tools aynı işaretleri ve ortam değişkenlerini dikkate alır: go run . dump-tools --read-only, sunulan salt okunur arayüzü ve sunucunun instructions içinde sunduğu talimatları yazdırır.
  • Okuma araçlarının açıklamaları, şemaları ve sonuçları ile sunucu talimatları, gizli bir yazma aracının adını hiçbir zaman içermez. İzin verilen bir yazma aracı yine de gizli kardeş araçlarından söz edebilir (create_alert, patch_alert aracının etkinleştirdiği devre dışı bir kural oluşturur); bu nedenle bu tür araç çiftlerine birlikte izin verin.

Yapabilecekleri

Genel Bakış

  • get_workspace_overview — İstek bir hizmet veya araç belirtmiyorsa önerilen ilk çağrıdır (belirtiyorsa doğrudan ilgili araca gider): ortamlar, son bir saatte hangi sinyallerin (günlükler, izler, metrikler) görüldüğü, hizmet ve uyarı grubu sayıları, tetiklenen uyarılar ve geçerli zaman; tümü tek ve düşük maliyetli bir çağrıda. Bu saat içinde görülmeyen bir sinyalin daha eski verileri yine de bulunabilir, dolayısıyla sorgulanabilir olmaya devam eder. Başarısız bir alt çağrı, ilgili alanı null olarak bırakır ve bir errors[] girdisi ekler. Her araç kümesinde sunulur
  • get_current_time — Geçerli zamanın yanı sıra herhangi bir IANA saat diliminde veya yaygın kısaltmada last 2h, yesterday ya da since yesterday 9am IST için mutlak sınırlar. Her araç kümesinde sunulur

Hizmet Durumu

  • get_service_summary — Sıralanmış filo (service, env) satırları: aralık içindeki request_count, throughput_rpm, HTTP 4xx/5xx sayıları ve gRPC hata sayıları
  • get_service_environments — Hizmetleriniz için kullanılabilir ortamlar. Önce bunu çalıştırın; diğer APM araçları buradan alınan env değerine ihtiyaç duyar
  • get_service_performance_details — Ayrıntılı döküm: aktarım hızı, hata oranı, p50/p90/p95/avg/max, apdex, kullanılabilirlik (varsayılan olarak özetlenir; include_series ile tam zaman serisi alınır)
  • get_service_operations_summary — HTTP uç noktaları, DB çağrıları, mesajlaşma ve HTTP istemcilerine göre gruplandırılmış işlemler
  • get_service_dependency_graph — Yukarı akış/aşağı akış/altyapı için aktarım hızı, gecikme ve hata oranlarını içeren bağımlılık haritası
  • get_apm_service_deviations — Geçerli zaman aralığını eşit süreli bir temel aralıkla karşılaştırır: gerilemeler/iyileşmeler, Apdex mutabakatı ve nihai sonuç (filo veya tek hizmet)
  • get_exceptions — Hizmet ve span filtreleriyle sunucu tarafı istisnalar

Veritabanı Gözlemlenebilirliği

Doğrudan veritabanı performansınıza odaklanan, OpenTelemetry iz span’lerinden ve izlerin bulunmadığı durumlarda CloudWatch gibi altyapı metriklerinden türetilen dört araç. Zaten OTel kullanıyorsanız ek enstrümantasyon gerekmez.

  • get_databases — Altyapınızdaki tüm veritabanlarını keşfedin: DB türü, ana makine, aktarım hızı (sorgu/dakika), p95 gecikme süresi, hata oranı ve bağımlı hizmet sayısı. Ayrıca CloudWatch gibi altyapı metriklerinden veritabanlarını keşfeder; iz enstrümantasyonu gerekmez — bu satırlarda iz metrikleri yerine etkinlik değeri bulunur
  • get_database_slow_queries — Süreye göre sıralanmış, tam izlere ulaşmak için iz kimliklerini içeren, gerçekten en yavaş sorgu yürütmeleri
  • get_database_queries — Sorgu kalıpları ve toplamları: bir sorgunun çalışma sıklığı, ortalama/p95 süresi, hata oranı
  • get_database_server_metrics — DB ana makinesinin kendisinden alınan sunucu tarafı metrikler (CPU, bağlantılar, arabellek isabet oranları — DB sisteminize bağlıdır)

PostgreSQL, MySQL, MongoDB, Redis, Aerospike ve db_system özniteliğine sahip OTel izleri üreten diğer her şeyi destekler — ayrıca CloudWatch gibi altyapı metriklerinden keşfedilen ve satırlarında iz metrikleri yerine etkinlik değeri bulunan veritabanlarını da destekler.

Prometheus / PromQL

  • prometheus_range_query — Herhangi bir metrik üzerinde PromQL aralık sorguları
  • prometheus_instant_query — Anlık sorgular; avg_over_time, sum_over_time gibi toplama işlevlerini kullanın
  • prometheus_label_values — Belirli bir serinin etiket değerleri
  • prometheus_labels — Bir seri için kullanılabilir tüm etiketler

LAST9_DATASOURCE ayarını yaparak veya her çağrıda datasource kullanarak bunları varsayılandan farklı bir veri kaynağına/kümeye yönlendirin. datasource belirtilmezse varsayılan kullanılır; eşleştiricinin güvenli bulduğu benzersiz ve yakın bir eşleşme (ör. büyük/küçük harf farkı) en yakın eşleşmeyi kullanır. Eksik, fazladan veya yeri değiştirilmiş bir harfin otomatik olarak çözümleneceği garanti edilmez: düzenleme bir bölgeyi veya ortam kodunu etkileyebilecekse tek bir aday bile onay gerektirebilir. Daha gevşek veya belirsiz eşleşmeler adayları döndürür ve sorgu çalıştırmaz (hata değildir); bilinmeyen adlar hata döndürür. Adı tam olarak belirtmediğiniz durumlarda ek bir içerik bloğu kullanılan veri kaynağını belirtir. get_metric_status, get_service_profile ve get_apm_service_deviations, datasource değerini aynı şekilde çözümler.

Günlükler

  • get_logs — Tam JSON işlem hattı günlük sorguları (toplamalar, filtreler, alan çıkarma)
  • get_service_logs — Bir hizmetin önem derecesine ve gövde içeriğine göre filtrelenebilen günlük satırları; response_mode değeri raw olmadıkça 20 satır üzerinden özetlenir
  • get_log_patterns — Bir hizmetin belirli bir zaman aralığındaki günlük satırları; sayı, ilk/son görülme zamanı, önem derecesi dağılımı ve örnekle birlikte ileti şablonlarına göre kümelenir
  • get_emerging_log_patterns — Temel zaman aralığına kıyasla yeni, artmış, azalmış veya kaybolmuş günlük şablonları; her iki aralığın sayılarıyla birlikte
  • get_log_attributes — Bir zaman aralığı için günlük şemasındaki özniteliklerin genel kataloğu
  • get_log_attributes_for_pipeline — Devam eden bir işlem hattında gerçekten bulunan günlük alanları (kapsamlı keşif); her biri tam filter_field değeriyle
  • get_drop_rules — Last9 Control Plane üzerinden günlük bırakma kuralları
  • add_drop_rule — Kaynağında günlük hacmini azaltmak için yeni bir bırakma kuralı oluşturun
  • get_remapping_rules — Last9 Control Plane üzerinden yeniden eşleme kuralları (logs_extract, logs_map, traces_map)
  • add_remapping_rule — Alım sırasında günlük ve iz özniteliklerini çıkaran veya eşleyen bir yeniden eşleme kuralı oluşturun

İzler

  • get_traces — Geniş kapsamlı aramalar ve toplamalar için JSON işlem hattı iz sorguları
  • get_service_traces — Tam iz kimliğine veya hizmet adına göre izler. İz kimliğiniz varsa bunu kullanın — daha hızlıdır
  • get_trace_attributes — İz şemasındaki özniteliklerin genel kataloğu
  • get_trace_attributes_for_pipeline — Devam eden bir işlem hattında gerçekten bulunan öznitelikler (kapsamlı keşif); her biri tam filter_field değeriyle
  • get_trace_attribute_values — İsteğe bağlı olarak bir işlem hattıyla sınırlandırılmış, bir iz özniteliğinin farklı değerleri
  • get_trace_attribute_deviations — Sınırları belirlenmiş iki span grubunda farklılık gösteren öznitelik değerlerini sıralar (yavaş ve hızlı, hatalı ve hatasız ya da iki zaman aralığı). Korelasyon, neden-sonuç ilişkisi değildir
  • get_trace_waterfall — Aralık birleşimi öz süresi, en yavaş span'ler ve grafik uyarılarıyla birlikte tek bir tam izi üst/alt öğe şelalesi olarak gösterir

Değişiklik Etkinlikleri ve Uyarılar

  • get_change_events — Dağıtımlar, yapılandırma değişiklikleri, geri almalar. Olayları değişenlerle ilişkilendirin
  • analyze_change_impact — Bir değişiklik bir şeyi bozdu mu? Bir hizmeti ve doğrudan çağıranlarını değişiklik öncesi ve sonrası karşılaştırır: temel sinyaller, APM ve iz özniteliği sapmaları, yeni tetiklenen uyarılar ve bir sonuç (regression likely / no significant change / insufficient data)
  • get_alert_groups — Meta veri etiketleri, ekip, katman ve kural sayılarıyla yapılandırılmış Compass uyarı grupları — sıfır kuralı olan ve tetiklenmeyen gruplar da dahil
  • get_alert_operations_summary — Bir zaman aralığındaki nöbet sağlığı: oluşturulan ve onaylanan uyarılar, birikmiş işler, teslimatlar ve include_rules ile en gürültülü, sürekli tetiklenen ve yönlendirilmeyen kurallar. Her sayım kendi status değerini taşır (available / partial / unavailable)
  • get_alert_coverage — Uyarı oluşturmadığınız durumlar: kapsanmayan temel sinyaller, tamamen devre dışı bırakılmış veya yönlendirilmemiş uyarı grupları ve çok uzun süre sessize alınmış kurallar; her biri için önerilen bir düzeltme aracı bulunur. Salt okunur.
  • get_alert_config — Uyarı kuralı yapılandırmaları — ada, önem derecesine, türe ve etiketlere göre aranabilir
  • get_entity_kpis — Bir uyarı grubundaki her KPI (kimlik, ad, PromQL, birim); henüz hiçbir kuralın kullanmadığı KPI'lar da dahil — kimlikler için create_alert ve validate_alert_expression gerekir
  • create_kpi — Mevcut KPI'lardan hiçbiri uygun olmadığında bir uyarı grubunda KPI (PromQL + birim) oluşturun. Bir kez oluşturun ve döndürülen kimliği saklayın
  • get_alerts — Bir zaman aralığında şu anda tetiklenen uyarılar
  • get_alert_rule_state — Bir zaman aralığında her uyarı kuralının geçmiş tetiklenme durumu (1/0); rule_id ile gruplandırılır. Uyarı grubuna, kural adına, etiket filtrelerine ve duruma göre filtrelenebilir.
  • get_alert_hygiene — 7 veya 30 gün içindeki gürültülü, sürekli tetiklenen, eski ve yönlendirilmeyen uyarı kuralları; sıralanmış, sonucun dayandığı sayılar ve önerilen düzeltmeyle birlikte. Salt okunur.
  • get_notification_channels — Yapılandırılmış bildirim kanalları (Slack, PagerDuty, e-posta vb.). scope=channels kanal listesini (ekleme için kimlikler) verir; varsayılan attached ise uyarı grubu başına eklemeleri listeler
  • recommend_alert_config — Uyarı kuralı oluşturmadan önce salt okunur tasarım rehberi (yaşam döngüsü, doğrulama kapıları, müdahale edenler için bağlam)
  • validate_alert_expression — Hiçbir şeyi kaydetmeden bir uyarı ifadesini uyarı grubunun KPI'larına göre deneme çalıştırmasıyla sınayın
  • describe_alert_chart — Salt okunur: bir Discover grafiğindeki uyarı verilebilir sinyaller (anahtar, birim) (discover-service, discover-exceptions)
  • create_alert — Mevcut bir uyarı grubunda bir uyarı kuralı oluşturun (statik veya adaptive_std_cmp aracılığıyla uyarlamalı); her zaman devre dışı bir taslak olarak oluşturulur. Bir kez oluşturun; update_alert / patch_alert ile iyileştirin
  • create_alert_from_chart — Tek çağrıda bir Discover grafiğinden statik eşik uyarı kuralı oluşturun. create_alert gibi, kural devre dışı bir taslak olarak oluşturulur
  • update_alert — Bir kuralın değerlendirme yapılandırmasını tamamen değiştirir (yeni bir kural kimliği döndürebilir)
  • patch_alert — Bir kuralda kısmi değişiklik: etkinleştir/duraklat, mute_until, müdahale eden properties, haftalık recurring_mute_schedule (veya clear_recurring_mute_schedule)
  • delete_alert — Bir uyarı kuralını kalıcı olarak silin
  • mute_alert_group — Bir uyarı grubundaki her kuralı bir son tarihe kadar sessize alın (veya sessizden çıkarın)
  • acknowledge_alert — Tetiklenen bir uyarının sahipliğini alın veya bırakın
  • reassign_alert — Zaten onaylanmış bir uyarıyı başka bir kullanıcıya devredin
  • create_notification_channel — Slack, PagerDuty, Opsgenie, e-posta veya genel bir webhook kanalı oluşturun
  • attach_notification_channel — Mevcut bir kanalı bir uyarı grubuna breach, threat veya her ikisi için yönlendirin
  • detach_notification_channel — Bir kanal ile uyarı grubu arasındaki tek bir ilişkilendirmeyi kaldırın
  • delete_notification_channel — İlişkilendirmesi olmayan bir kanalı kalıcı olarak silin

Uyarı yazma araçları (create_kpi, create_alert, update_alert, patch_alert, delete_alert, create_alert_from_chart, mute_alert_group, acknowledge_alert, reassign_alert, create_notification_channel, attach_notification_channel, detach_notification_channel, delete_notification_channel) yazma kapsamına sahip bir belirteç gerektirir; delete_alert, detach_notification_channel ve delete_notification_channel ise bunun yerine silme kapsamı gerektirir. Bunlar yalnızca alerts araç kümesinde sunulur.

Bu araçların oluşturduğu kurallar, kanallar ve ilişkilendirmeler; MCP istemcisinin adı ve sürümüyle birlikte created_via: last9-mcp olarak işaretlenir (kurallarda _l9_created_via_ ve _l9_created_via_client_ ek açıklamaları bulunur; patch_alert ve update_alert bunları korur ve çağıranlar ayarlayamaz). get_entity_alert_rules ve get_notification_channels işareti gösterir; delete_alert, detach_notification_channel ve delete_notification_channel ise kullanıcı bir kaynağı belirtmediği sürece aracıların yalnızca işaretli kaynakları temizlemesini söyler.

Özel Panolar

  • list_dashboards — Ada göre filtrelenmiş ve 32 KB altında sayfalanmış özel panolar: kimlikler, adlar, son güncelleme zamanları, yazarlar ve kilit durumu
  • get_dashboard — Paneller ve sorgular dahil, kimliğe göre tam pano tanımı
  • preview_dashboard — Kaydedilmemiş bir pano veya yama için salt okunur önizleme: çözümlenmiş sorgular, panel başına sınırlandırılmış sonuçlar ve net panel farkı; hiçbir zaman kaydetmez
  • validate_dashboard — Kaydedilmiş bir pano kimliği veya satır içi bir dashboard_definition için ≤24 saatlik bir zaman aralığında salt okunur lint + yürütme + sınıflandırma. Panoları hiçbir zaman oluşturmaz veya güncellemez
  • create_dashboard — Yeni bir özel panoyu bir kez oluşturun (paneller, sorgular, meta veriler). Kimlik döndürüldükten sonra panelleri patch_dashboard ile düzenleyin.
  • update_dashboard — Kimliğe göre mevcut bir panonun büyük bölümünü yeniden yapılandırın (tam değiştirme; salt okunur sistem panoları hata döndürür). Tek tek panelleri düzenlemek için patch_dashboard kullanın
  • patch_dashboard — Kimliğe göre mevcut bir panoda hedefli düzenlemeler yapın (panel ekleme/güncelleme/kaldırma/taşıma, başlık ayarlama, değişken ayarlama); panonun tamamını değil, kısa bir fark döndürür
  • delete_dashboard — Kimliğe göre özel bir panoyu silin
  • set_dashboard_lock — Kimliğe göre özel bir panoyu kilitleyin veya kilidini açın (yalnızca yazar veya kuruluş yöneticisi); kilitli bir pano güncelleme, yama ve silme işlemlerini reddeder
  • list_dashboard_snapshots — Bir pano için belirli bir andaki dondurulmuş anlık görüntüler (yalnızca meta veriler)
  • get_dashboard_snapshot — RCA / paylaşılabilir görünümler için panel verilerini içeren tam dondurulmuş anlık görüntü
  • delete_dashboard_snapshot — Kimliğe göre dondurulmuş bir anlık görüntüyü silin

Pano oluşturma, beceri yüklemeden MCP prompts/list ve prompts/get aracılığıyla kullanılabilir. Üç istem de bağımsız değişken almaz:

  • create_dashboard_guide — Keşif, düzen ve panel seçimi; onaydan önce adayın tamamını doğrulayın ve her panelin sorgusunu çalıştırın, bir kez oluşturun, hedefli düzenlemeler için yama uygulayın, ardından tekrar okuyun.
  • dashboard_examples — Hizmet RED'i, uç nokta gecikmesi, durum sınıfları, ana makine sağlığı, günlük sayıları ve iz panellerini bağımlı değişkenlerle kapsayan eksiksiz bir örnek.
  • query_guide — Sayaç/gösterge/histogram ve türetilmiş iz metriği anlamları, anlık ve aralık sorguları, hız pencereleri, yüzde sınırları ve logjson/tracejson kuralları.

Aynı içerik last9://reference/create_dashboard_guide, last9://reference/dashboard_examples ve last9://reference/query_guide adreslerinde okunabilir. İstemler ve kaynaklar her araç kümesinde keşfedilebilir olmaya devam eder; iş akışını yürütmek için ilgili araçlar gerekir (karma sinyalli pano oluşturma için, list_datasources işlevini de gören --toolsets=dashboards,investigate kullanın). Salt okunur oturumlar hazırlık ve doğrulama yapabilir ancak kaydedemez. Bir adımı izlemeden önce araçların kullanılabilirliğini kontrol edin.

Panel denetimleri şu anda validate_dashboard ile birlikte prometheus_range_query, prometheus_instant_query, get_logs ve get_traces kullanıyor. Doğrulayıcının desteklenmeyen sorgu türleri ve basitleştirilmiş varsayılanları, görüntüleme eşitliğini kanıtlamaz. Ayrı sorgu denetimi adımı, #475 tamamlandıktan sonra query_panel kullanmaya geçecek.

Sürekli Profil Oluşturma

Kuruluş için sürekli profil oluşturmanın etkinleştirilmiş olması gerekir. Önce get_profile_services ile hizmetleri keşfedin, ardından bir alev grafiği veya sıralanmış işlevleri alın.

  • get_profile_services — Zaman aralığında profil verisi bulunan hizmetler (sorgulamadan önce dizin oluşturur)
  • get_flamegraph — Tek bir hizmet için iç içe alev grafiği ağacı (cpu varsayılan; ayrıca alloc, wall)
  • get_top_functions — Tek bir hizmette en yoğun işlevlerin öz örnek sıralaması
  • get_profile_summary — Tek bir hizmetin profilinin kısa, doğal dilli önceliklendirme analizi

Grafana Panoları

Kuruluşun Grafana örneğine (Last9'ın Grafana proxy'si üzerinden) yönelik salt okunur araçlar. Kimlik bilgisi alanları modele hiçbir zaman döndürülmez. LAST9_TOOLSETS=grafana ile etkinleştirin (veya tüm araçlar için araç kümelerini ayarlamayın).

  • grafana_search_dashboards — Başlık alt dizesine göre panoları ara (sayfalandırılmış; sınıra ulaşıldığında truncated: true)
  • grafana_get_dashboard — UID'ye göre pano özeti (paneller, değişkenler, PromQL hedefleri); ham Grafana JSON'u için full_json=true
  • grafana_list_folders — Klasör ağacı
  • grafana_list_folder_dashboards — Tek bir klasördeki panolar (sayfalandırılmış)
  • grafana_list_datasources — Kimlik bilgileri olmadan veri kaynağı envanteri

Bulanık Ad Çözümleme

  • did_you_mean — Aracı bir varlık adından emin olmadığında, kataloğunuzdaki en yakın eşleşmeleri döndürür (hizmetler, ortamlar, ana makineler, veritabanları, K8s dağıtımları/ad alanları, işler). Benzerlik puanlarıyla en fazla 3 öneri sunar. Ad araması boş sonuç verdiğinde sunucu, çoğu araçtan önce bunu otomatik olarak çağırır.

Hizmet Profili

  • get_service_profile — Sorgulamadan önce bir hizmetin telemetrisinin gerçekte nasıl göründüğünü gösterir: hangi sinyallerin bulunduğunu, dili ve çalışma zamanını, dağıtım ortamlarını, günlüklerinin yapısını ve uygulanabildiği durumlarda önerilen alım düzeltmesini. Bir hizmette iz yoksa aracının iz araçlarını atlamasını; SeverityText boş olduğunda hiçbir sonuç bulamadan bu alana göre filtrelemek yerine günlük gövdesinden önem derecesini ayrıştırmasını sağlar.

Nasıl Çalışır

Her yanıtta derin bağlantılar. Her araç, tam olarak o sorgu ve zaman aralığı için Last9 panosuna doğrudan giden bir URL olan deep_link alanını döndürür. Aracı bağlantıyı size iletir; tıklarsınız ve doğrudan ilgili yere ulaşırsınız.

Araç kümeleri. Varsayılan olarak sunucu tüm araçları sunar. Yalnızca inceleme (günlükler/izler/metrikler/profiller) gerektiren otomasyon ana makineleri, istemci tarafında toplu devre dışı bırakma yapmadan tools/list boyutunu küçük tutmak için LAST9_TOOLSETS=investigate ayarını yapabilir (veya --toolsets=investigate iletebilir). Adlandırılmış paketler: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Bilinmeyen adlar hemen hata verir. get_current_time ve get_workspace_overview her araç kümesinde sunulur. HTTP modunda bir istek, X-Last9-Toolsets başlığıyla kapsamı daha da daraltabilir (İstek başına araç kümeleri bölümüne bakın). alerts paketi ayrıca salt okunur prometheus_range_query ve get_dashboard araçlarını da sunar; bunları author-alert istemi çağırır. Yalnızca metrics paketi, list_datasources veya did_you_mean araçlarını içermez — bu keşif yardımcılarına ihtiyacınız olduğunda investigate kullanın (veya araç kümelerini birleştirin).

Araç başvurusu kaynakları. Uzun logjson/tracejson/service-logs/metrics kılavuzları, her zaman açık araç açıklaması metni yerine MCP kaynaklarıdır (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation, last9://reference/alerting). Uyarı kılavuzu; uyarı ifadesi dilbilgisini, statik ve uyarlanabilir alanları, birimleri, validate_alert_expression aracının neleri denetlediğini ve gecikme / hata oranı / doygunluk kuralı şablonlarını kapsar. Kritik sorgu kuralları araç açıklamasında kalır; böylece resources/read aracını hiç çağırmayan aracılar da doğru sorgu oluşturma yönergelerini alır. Kuruluşa özgü alanları get_log_attributes / get_log_attributes_for_pipeline (ve iz eşdeğerleri) ile keşfedin; bunlar açıklamalara eklenmez.

Parçalı büyük sonuçlar. get_logs ve get_traces, büyük sonuç kümelerini kesmek yerine parçalara ayırarak işler. Günlükler için varsayılan sınır 5000 girdidir; LAST9_MAX_GET_LOGS_ENTRIES ile yapılandırılabilir.


Geliştirme

HTTP modu, curl ile test, kaynaktan derleme

HTTP Modunda Çalıştırma

export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server

Sunucu http://localhost:8080/mcp adresinde başlar.

curl ile Test Etme

Streamable HTTP işleyicisi durumsuz modda çalışır; bu nedenle her istek bağımsız olarak sunulur. initialize el sıkışması ve Mcp-Session-Id başlığı isteğe bağlıdır — bunları gönderen istemciler de çalışır (başlık kabul edilir ve yok sayılır); istemciler doğrudan tools/list / tools/call isteklerine de geçebilir. Her araç bağımsız bir istek/yanıt sorgusudur; sunucu sunucudan istemciye bildirim göndermez, bu nedenle GET /mcp (SSE akışı) 405 döndürür.

# List tools — a session handshake is optional in stateless mode
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

# Call a tool
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "get_service_logs",
        "arguments": {
          "service_name": "your-service-name",
          "lookback_minutes": 30,
          "limit": 10
        }
      }
    }'

İstek başına araç kümeleri

HTTP modunda bir istek, X-Last9-Toolsets başlığıyla veya başlık ayarlayamayan istemciler için toolsets sorgu parametresiyle araç yüzeyini daraltabilir (/mcp?toolsets=logs,traces). Her ikisi de gönderildiğinde boş olmayan başlık önceliklidir. Değer, --toolsets ile aynı virgülle ayrılmış adları alır. İstek, başlangıçtaki --toolsets kümesiyle kesişimi görür: kapsamı daraltabilir, asla genişletemez; all veya boş bir değer başlangıç kümesini korur. Bilinmeyen bir ad, adı belirten 400 döndürür. tools/list, tools/call ve initialize yönergeleri de etkin kümeyi izler; get_current_time ve get_workspace_overview ise her kümede kalır.

curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -H "X-Last9-Toolsets: logs,alerts" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

Her farklı etkin küme, ilk isteğinde oluşturulan (onlarca milisaniye süren) ve kapanana kadar tutulan kendi sunucusu tarafından sunulur; başlangıç kümesini yeniden belirten bir istek, başlangıç sunucusunu yeniden kullanır. Tahliye yoktur: yalnızca adlandırılmış araç kümeleri kabul edildiğinden önbellek, bu kümelerin her birleşimi için en fazla bir sunucu tutar (bugün 135; toplamda yaklaşık 75 MB canlı yığın; testlerde tam dolu önbellek yaklaşık 230 MB yerleşik belleğe ulaştı).

Kaynaktan Derleme

git clone https://github.com/last9/last9-mcp-server.git
cd last9-mcp-server
go build -o last9-mcp-server
LAST9_HTTP=true ./last9-mcp-server

LAST9_HTTP=true yerel geliştirme içindir. Gerçek kullanımda barındırılan HTTP uç noktası daha kolaydır.


Araç Başvurusu

Tüm parametreler, zaman girişi standartları ve ayrıntılar

Zaman Girişi

  • Mutlak zamanlar (start_time_iso/end_time_iso veya time_iso), lookback_minutes değerine önceliklidir.
  • Göreli aralıklar için lookback_minutes kullanın.
  • Mutlak aralıklar için RFC3339/ISO8601 kullanın — 2026-02-09T15:04:05Z.
  • Eski YYYY-MM-DD HH:MM:SS yalnızca geriye dönük uyumluluk için kabul edilir.
  • since yesterday 9am IST gibi ifadeleri get_current_time ile RFC3339 sınırlarına dönüştürün.

get_workspace_overview

Parametre yoktur. Son 60 dakikayı eşzamanlı olarak yoklar; her alt çağrı kısa bir zaman aşımıyla çalışır ve current_time, lookback_minutes, environments, telemetry (logs/traces/metrics boole değerleri), service_count (her ortamda, get_service_summary sıralamasına göre farklı hizmetler), alert_group_count, firing_alert_count ve errors ([{field, error}]) döndürür. Alt çağrısı başarısız olan bir alan null (bilinmiyor) olur; hiçbir zaman 0 veya false olmaz. Yoklamalar --toolsets ile daraltılmaz: araç kümeleri hangi araçların sunulacağını filtreler, API belirteci ise sunucunun neleri okuyabileceğini belirler.

get_current_time

  • range (dize, isteğe bağlı): last 2h, past 30 minutes, last 7d (s, m, h, d = 24h, w = 7d; en fazla 366d); today; yesterday; since <point>; <point> to <point>. Bir zaman noktası RFC3339 biçiminde olabilir veya today / yesterday / bir hafta günü (monday, mon: bugün dâhil en son gerçekleştiği tarih) / isteğe bağlı 9am, 9:30pm veya 14:30 içeren YYYY-MM-DD olabilir. Sondaki bir saat dilimi her iki sınır için de timezone değerini geçersiz kılar; başka bir yerde belirtilen saat dilimi hatadır. Yalnızca now için boş bırakın.
  • timezone (dize, isteğe bağlı): IANA adı veya kısaltması (IST = Asia/Kolkata, PST/PDT, EST/EDT, UTC, GMT). Varsayılan UTC'dir. Bilinmeyen saat dilimleri ve belirsiz CST hata verir (America/Chicago veya Asia/Shanghai iletin).

now değerini (ve range ile birlikte start/end değerlerini) {iso, epoch_seconds, local} olarak döndürür; local yalnızca UTC dışı bir saat diliminde görünür.

get_exceptions

  • limit (tamsayı, isteğe bağlı): En fazla istisna sayısı. Varsayılan: 20.
  • lookback_minutes (tamsayı, isteğe bağlı): Varsayılan: 60.
  • start_time_iso / end_time_iso (dize, isteğe bağlı): Mutlak zaman aralığı.
  • service_name (dize, isteğe bağlı): Hizmete göre filtrele.
  • span_name (dize, isteğe bağlı): Span adına göre filtrele.
  • env (dize, isteğe bağlı): Ortama göre filtrele.

get_service_summary

  • start_time_iso / end_time_iso (dize, isteğe bağlı)
  • env (dize, isteğe bağlı): PromQL regex'i. Varsayılan .*. Tam eşleşme için sabitleyiciler gerekir (ör. ^prod$).
  • sort_by (dize, isteğe bağlı): request_count (varsayılan), throughput_rpm, http_4xx_count, http_5xx_count veya grpc_error_count.
  • limit (tamsayı, isteğe bağlı): Sıralanmış satırların en fazla sayısı. Boş bırakılırsa veya 0 ise 10; 100'ün üzerindeki değerler 100'e sabitlenir.

get_service_environments

  • start_time_iso / end_time_iso (dize, isteğe bağlı)

Diğer tüm APM araçları bir env değeri gerektirir. Bu boş dönerse "" kullanın.

get_service_performance_details

Varsayılan olarak seri başına bir özet döndürür: points, missing_points (trafik olmayan kullanılabilirlik aralıkları istatistiklerden çıkarılır), min, p50, p90, p99 (en yakın sıra), max, mean, last, baseline_mean (zaman aralığının değil, geçerli noktaların ilk yarısının ortalaması), delta_pct (geçerli noktaların ikinci yarısının temel çizgiye göre durumu; temel çizgi 0 ise bulunmaz) ve en fazla 3 change_points (timestamp, before_mean, after_mean); metrik başına ve her yanıt süresi yüzdeliği için en fazla 4 seri (ortalama değeri en yüksek olan önce gelir; series_omitted geri kalanların sayısını belirtir). points: 0 içeren bir seri istatistik taşımaz; baseline_mean/delta_pct için en az 6 nokta gerekir (her yarıda 3). full_series, ham noktaların include_series aracılığıyla kullanılabildiğini belirtir.

  • service_name (dize, zorunlu)
  • lookback_minutes (tamsayı, isteğe bağlı): Varsayılan: 60.
  • start_time_iso / end_time_iso (dize, isteğe bağlı)
  • env (dize, isteğe bağlı): Varsayılan prod.
  • top_n (tamsayı, isteğe bağlı): En çok işlem/en çok hata listesi başına en fazla girdi sayısı. Varsayılan: 5; include_series=true ile 10. En fazla 100.
  • include_series (boole, isteğe bağlı): Özet yerine her serinin tüm noktalarını döndürür. Varsayılan: false.

get_service_operations_summary

  • service_name (dize, zorunlu)
  • lookback_minutes (tamsayı, isteğe bağlı): Varsayılan: 60.
  • start_time_iso / end_time_iso (dize, isteğe bağlı)
  • env (dize, isteğe bağlı): Varsayılan prod.

get_service_dependency_graph

  • service_name (dize, isteğe bağlı)
  • lookback_minutes (tamsayı, isteğe bağlı): Varsayılan: 60.
  • start_time_iso / end_time_iso (dize, isteğe bağlı)
  • env (dize, isteğe bağlı): Varsayılan prod.

get_apm_service_deviations

  • service_name (string, optional): Fleet kapsamı için atlayın; tek bir hizmet ve onun işlem korelasyonları için sağlayın.
  • lookback_minutes (integer, optional): Geçerli pencere. Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional): Açıkça belirtilen geçerli pencere.
  • baseline_start_time_iso / baseline_end_time_iso (string, optional): Açıkça belirtilen temel pencere. Varsayılan olarak hemen önceki, eşit süreli pencere kullanılır.
  • datasource (string, optional): Varsayılan için atlayın; yaklaşık adlar Prometheus araçlarında olduğu gibi çözümlenir. Yanıtta kullanılan varsayılan veya en yakın eşleşme belirtilir; belirsiz adlar sorgu yapılmadan adayları döndürür.
  • env (string, optional): Varsayılan olarak prod kullanılır.
  • max_services / max_operations (integer, optional): Varsayılan 10, her biri için en fazla 10.

get_databases

  • env (string, optional): Ortama göre filtreleyin. Normal ifade kabul eder. Varsayılan: tümü.
  • lookback_minutes (integer, optional): Varsayılan: 60. Pencere 7 günü aşamaz.
  • start_time_iso / end_time_iso (string, optional)

get_database_slow_queries

  • db_system (string, optional): ör. postgresql, mysql, mongodb, redis.
  • host (string, optional): Veritabanı ana bilgisayarı (net_peer_name).
  • service_name (string, optional): Çağıran hizmetin adı.
  • env (string, optional)
  • min_duration_ms (float, optional): Sorgu süresi için minimum değer (ms).
  • lookback_minutes (integer, optional): Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional)
  • limit (integer, optional): Varsayılan: 20.

get_database_queries

  • db_system (string, optional)
  • host (string, optional)
  • service_name (string, optional)
  • env (string, optional)
  • lookback_minutes (integer, optional): Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional)
  • limit (integer, optional): Varsayılan: 20.

get_database_server_metrics

  • db_system (string, required): ör. postgresql, mysql, mongodb, redis, aerospike.
  • host (string, optional)
  • lookback_minutes (integer, optional): Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional)

prometheus_range_query

  • query (string, required): PromQL sorgusu.
  • start_time_iso / end_time_iso (string, optional): Varsayılan olarak son 60 dakika kullanılır.
  • lookback_minutes (float, optional): Varsayılan: 60.

prometheus_instant_query

  • query (string, required)
  • time_iso (string, optional): Varsayılan olarak şimdi kullanılır.
  • lookback_minutes (float, optional)

prometheus_label_values

  • match_query (string, optional): PromQL filtresi.
  • label (string, required): Etiket adı.
  • lookback_minutes (float, optional): Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional)

Pencere belirtilmediğinde ve match_query tek bir metriği (metric{...} veya {__name__="metric"}) adlandırdığında, boş bir 60 dakikalık sonuç 4 gün üzerinden bir kez daha denenir; ikinci metin bloğu sonucun hangi pencereyi kapsadığını belirtir.

prometheus_labels

  • match_query (string, optional): PromQL filtresi.
  • lookback_minutes (float, optional): Varsayılan: 60.
  • start_time_iso / end_time_iso (string, optional)

Boş tek metrik aramasını, prometheus_label_values gibi 4 gün üzerinden yeniden dener.

get_logs

  • logjson_query (array, required): JSON işlem hattı sorgusu.
  • lookback_minutes (integer, optional): Varsayılan: 5.
  • start_time_iso / end_time_iso (string, optional)
  • limit (integer, optional): Sunucu varsayılanı: 5000.
  • index (string, optional): physical_index:<name> veya rehydration_index:<block_name>.
  • response_mode (string, optional): summary (varsayılan; ayrıca null için) veya raw. Ham satır sonucu 20 satırı aşarsa, summary şu şekilde döner: lines_summarized, severity_counts (en çok altı etiket, geri kalanı other_severities içinde), first_timestamp/last_timestamp, sorgu penceresi boyunca 10 bölmeli bir histogram (döndürülen satırlar üzerinden; sonuç sınır nedeniyle kesildiyse truncated: true ile birlikte) ve en üstteki patterns (template, count, en fazla iki samples); geri kalanı other içinde toplanır ve toplam uzunluk en fazla 4000 karakter olur. Sığmayan üst düzey meta veriler atılır ve dropped_fields içinde belirtilir. raw satırları döndürür. Toplu sonuçlar hiçbir zaman özetlenmez.

Günlüklere dayalı hizmet envanteri için önce physical_index_service_count sorgulayın:

sum by (name, service_name, env) (physical_index_service_count{destination="logs"})

service_name değerini ServiceName olarak, varsa env değerini ortam olarak ve name değerini fiziksel dizin adı olarak kullanın. name="default" ise index değerini atlayın; kullanıcı tarafından seçilen varsayılan olmayan bir fiziksel dizin için index: "physical_index:<name>" değerini iletin. Arka uç açık fiziksel dizin filtrelemesini reddederse index olmadan yeniden deneyin ve bu arka uçta açık fiziksel dizin filtrelemesinin kullanılamadığını bildirin.

get_service_logs

  • service_name (string, required)
  • lookback_minutes (integer, optional): Varsayılan: 60.
  • limit (integer, optional): Varsayılan: 100; response_mode: "raw" ile 20.
  • env (string, optional)
  • severity_filters (array, optional): ör. ["error", "warn"]. OR mantığı.
  • body_filters (array, optional): ör. ["timeout", "failed"]. OR mantığı.
  • start_time_iso / end_time_iso (string, optional)
  • index (string, optional)
  • response_mode (string, optional): summary (varsayılan; ayrıca null için) veya raw. 20 satırı aşarsa logs, get_logs ile aynı summary ile değiştirilir; diğer alanlar korunur. raw girdileri döndürür.

Birden fazla filtre türü AND mantığıyla birleştirilir. Her dizi kendi içinde OR mantığını kullanır. Önce geniş kapsamlı toplu sayımlar için get_logs kullanın; get_service_logs değerini yalnızca hizmet/ortam/dizin kapsamını daralttıktan ve küçük bir örnek kümesi belirledikten sonra kullanın.

get_log_patterns

  • service_name (string, required)
  • env (string, optional)
  • start_time_iso / end_time_iso (string, optional)
  • lookback_minutes (integer, optional): Varsayılan: 60.
  • severity_filters / body_filters (array, optional): get_service_logs içindeki gibi OR mantığı. severity_filters değerini yalnızca get_service_profile, severity_set all bildirdiğinde ayarlayın; none veya partial ile gövdedeki önem derecesi bu değer olan satırlar elenir.
  • index (string, optional)
  • sample_size (integer, optional): Pencereden örneklenen satırlar, en yeniden eskiye. Varsayılan: 1000, en fazla: 5000.
  • top_n (integer, optional): Sayıma göre döndürülen şablonlar. Varsayılan: 20, en fazla: 100. Geri kalanı other içinde toplanır.

Kümeleme, örneklenen satırlar üzerinde MCP sunucusunda çalışır; bu nedenle sayımlar, first_seen ve last_seen örnek içindedir. window.sample_limit_reached, örneğin eşleşen satırları kaçırabileceği durumları belirtir (örnek sample_size satır içeriyorsa ve API bununla eşit olan kesin bir total_matching_lines bildirmiyorsa ya da arama logs_truncated ise); bu durumda örnek yalnızca pencerenin en yeni satırlarını içerir. Her template ve sample 500 karakterde kesilir ve sonuna … eklenir; böylece kümelenmeyen bir gövde (örneğin message alanı olmayan JSON) yanıtı dolduramaz. Başarısız parçalar içeren arama araç hatasıdır; kesilmiş veya sınıra ulaşmış aramalar yine de kalıpları döndürür ve sample_limit_reached ile işaretlenir. Boş bir patterns listesi, yalnızca sample_limit_reached false olduğunda hiçbir şeyin eşleşmediği anlamına gelir; true olduğunda arama erken durmuştur ve eşleşen satırları kaçırmış olabilir.

get_emerging_log_patterns

Her get_log_patterns parametresini alır (zaman aralığı geçerli penceredir), ayrıca:

  • baseline_start_time_iso / baseline_end_time_iso (string, optional): İkisini de ayarlayın veya hiçbirini ayarlamayın. Varsayılan: geçerli pencereden hemen önceki, eşit uzunluktaki pencere.
  • min_count (integer, optional): Değişen bir kalıbın daha sık görüldüğü pencerede ihtiyaç duyduğu satır sayısı: new/increased için geçerli pencere, decreased/disappeared için temel pencere. Varsayılan: 3 (daha küçükse sample_size), en fazla: sample_size.
  • change_factor (number, optional): Her iki pencerede de görülen bir kalıbın ulaşması gereken (increased) veya tersine düşmesi gereken (decreased) 1'den büyük sıklık oranı. Varsayılan: 2.

Her iki eşik de karşılanmalıdır; bu nedenle sıklığı change_factor kadar değişmeyen yüksek hacimli bir şablon hiçbir zaman raporlanmaz. Yalnızca değişen şablonları (new, increased, decreased, disappeared) ve bunların current ile baseline sayılarını döndürür; unchanged_patterns, her iki pencerede de bulunan ancak değişimi change_factor değerinden az olan şablonları sayar; below_min_count_patterns ise min_count satırdan az olduğu için elenen değişiklikleri sayar. Her iki örnek de eşleşen tüm satırları içerdiğinde sıklıklar dakika başına karşılaştırılır; sınırlandırılmış bir örnekte kesin total_matching_lines üzerinden dakika başına tahmin edilir; diğer durumlarda örnek payları olarak karşılaştırılır. Bu durumda increased/decreased, hızdan ziyade bileşimi tanımlar (comparison_basis). Boş bir patterns listesi, her iki eşiği de aşan bir değişiklik olmadığı anlamına gelir; günlüklerin değişmediği anlamına gelmez: daha seyrek değişiklikler below_min_count_patterns içinde sayılır ve sample_limit_reached içeren bir pencere, tüm pencereleri değil örnekleri karşılaştırır.

get_log_attributes

  • lookback_minutes (integer, optional): Varsayılan: 15.
  • start_time_iso / end_time_iso (string, optional)
  • region (string, optional)
  • index (string, optional)

get_log_attributes_for_pipeline

  • pipeline (array, required): Keşif kapsamını belirleyen önceki filtre aşamaları, ör. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (integer, optional): Varsayılan: 15.
  • start_time_iso / end_time_iso (string, optional)
  • region (string, optional)
  • index (string, optional)

get_drop_rules

Parametre yok. GET /otel_settings/drop?region=... aracılığıyla düşürme kurallarını listeler.

add_drop_rule

  • name (string, required)
  • filters (array, required): Her filtre: key, value, operator (equals/not_equals), conjunction (and).
  • Filtre anahtarları attributes["key_name"] veya resource.attributes["key_name"] kullanmalıdır (Last9 API tarafından zorunlu tutulur).
  • Kuralı POST /otel_settings/drop?region=...&cluster_id=... aracılığıyla oluşturur.

get_remapping_rules

  • rule_type (string, required): logs_extract, logs_map veya traces_map.
  • region (string, optional): Varsayılan: yapılandırılmış veri kaynağı bölgesi.
  • Kuralları GET /otel_settings/remapping/{rule_type}?region=... aracılığıyla listeler.

add_remapping_rule

Her çağrıda bir kural oluşturur; eşleme kuralları için her target_attribute başına bir çağrı gerekir.

  • rule_type (string, zorunlu): logs_extract, logs_map veya traces_map.
  • name (string, zorunlu)
  • remap_keys (array, zorunlu): Kaynak alanları. logs_extract ile json: body alan adları; pattern ile: adlandırılmış yakalama grubu içeren tam olarak bir regex. Eşleme kuralları: öznitelik yolları, ilk boş olmayan değer kazanır.
  • target_attribute (string, zorunlu): logs_extract: log_attributes veya resource_attributes. logs_map: service, severity veya resource_deployment.environment. traces_map: service.
  • extract_type (string, yalnızca logs_extract için, orada zorunlu): json veya pattern.
  • action (string, yalnızca logs_extract için): upsert (varsayılan) veya insert.
  • prefix (string, yalnızca logs_extract için)
  • preconditions (array, yalnızca logs_extract için): En fazla bir {key, value, operator}; operator, equals (varsayılan), not_equals veya like (regex) değeridir.
  • region (string, isteğe bağlı): Varsayılan: yapılandırılmış veri kaynağı bölgesi.
  • Kuralı POST /otel_settings/remapping/{rule_type}?region=... aracılığıyla oluşturur. Yeniden denenmez; zaman aşımından sonra get_remapping_rules ile kontrol edin.

get_traces

Geniş kapsamlı aramalar ve toplulaştırmalar için kullanın. Tam iz kimliği araması için get_service_traces kullanın.

  • tracejson_query (array, zorunlu)
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 60.
  • limit (integer, isteğe bağlı): Varsayılan: 5000.

get_service_traces

trace_id veya service_name değerlerinden tam olarak biri zorunludur.

  • trace_id (string, isteğe bağlı): Varsayılan geriye bakış süresi: 72 saat.
  • service_name (string, isteğe bağlı): Varsayılan geriye bakış süresi: 60 min.
  • lookback_minutes (integer, isteğe bağlı)
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • limit (integer, isteğe bağlı): Varsayılan: 10.
  • env (string, isteğe bağlı)

get_trace_attributes

  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 15.
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • region (string, isteğe bağlı)

get_trace_attributes_for_pipeline

  • pipeline (array, zorunlu): Keşif kapsamını belirleyen önceki filtre aşamaları; ör. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 15.
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • region (string, isteğe bağlı)

get_trace_attribute_values

  • tag_name (string, zorunlu): get_trace_attributes içinden öznitelik adı (ör. resource_department veya attributes['http.method']).
  • pipeline (array, isteğe bağlı): Değerlerin kapsamını belirleyen önceki filtre aşamaları; genel değerler için atlayın.
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 15.
  • start_time_iso / end_time_iso (string, isteğe bağlı): Geçmiş RFC3339 sınırları; lookback_minutes değerine önceliklidir.
  • region (string, isteğe bağlı)

get_trace_attribute_deviations

  • comparison_mode (string, zorunlu): latency, errors veya time.
  • service_name (string, zorunlu)
  • environment (string, zorunlu): Tam deployment.environment değeri.
  • operation (string, isteğe bağlı)
  • filters (array, isteğe bağlı): İz JSON filtre koşulları.
  • candidate_attributes (array, isteğe bağlı): En fazla 8; sınırlandırılmış keşif için atlayın.
  • latency_threshold_ms (number, isteğe bağlı): latency modu için zorunlu; diğer modlarda reddedilir.
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 15. En fazla: 15.
  • baseline_start_time_iso / baseline_end_time_iso (string, isteğe bağlı): time modu için zorunlu; çakışmamalı ve hedef pencereyle aynı süreye sahip olmalıdır.
  • minimum_cohort_size (integer, isteğe bağlı): Varsayılan: 100. En az: 20.
  • minimum_value_support (integer, isteğe bağlı): Varsayılan: 20. En az: 10.
  • limit (integer, isteğe bağlı): Varsayılan: 10. En fazla: 10.

Eşlik eden arka uç özelliğinin etkinleştirilmesi gerekir.

get_trace_waterfall

  • trace_id (string, zorunlu)
  • environment (string, isteğe bağlı)
  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 4320 (72 saat).
  • selected_span_id (string, isteğe bağlı): Yalnızca bu span için öznitelikleri, olayları ve bağlantıları döndürür.
  • max_spans (integer, isteğe bağlı): Varsayılan: 500. En fazla: 1000; kuruluşun redaksiyon politikası bu sınırı daha da düşürebilir.

İz hizmetinin investigation-evidence/v1 zarfını değiştirmeden döndürür; waterfall, data altında yer alır. Hizmet waterfall'ı oluşturur ve arka uçtan çıkmadan önce değerleri kuruluş başına uygulanan bir politikaya göre redakte eder (kimlik bilgileri, sorgu sabitleri, URL'ler, e-postalar, IP'ler, kullanıcı tanımlayıcıları): sanitizer uygulanan politikayı, evidence.sanitization ise redakte edilen veya kesilen öğelerin sayısını belirtir. Gerekli bir şey redakte edilmişse, bunu aşmanın yollarını aramak yerine bir kuruluş yöneticisinden politikayı ayarlamasını isteyin. Araç; sanitizer bloğu olmayan, sanitizer.version değeri trace-evidence-sanitizer/v1 dışında olan, yinelenen JSON anahtarı içeren veya 512 KiB'tan büyük bir gövdeyi reddeder (daha düşük bir sınır için max_spans). Eşlik eden arka uç özelliğinin etkinleştirilmesi gerekir.

get_change_events

  • start_time_iso / end_time_iso (string, isteğe bağlı)
  • lookback_minutes (integer, isteğe bağlı): Varsayılan: 60.
  • service_name (string, isteğe bağlı)
  • env (string, isteğe bağlı)
  • event_name (string, isteğe bağlı): available_event_names değerini almak için önce bunu belirtmeden çağırın.

analyze_change_impact

change_event veya service + timestamp değerlerinden tam olarak birini iletin.

  • change_event (object, isteğe bağlı): get_change_events change_events[] içindeki bir öğe, değiştirilmeden kullanılır. metric.service, metric.deployment_environment ve en erken values[].timestamp değerini kullanır.
  • service (string, isteğe bağlı): change_event atlandığında timestamp ile birlikte zorunludur.
  • timestamp (string, isteğe bağlı): RFC3339 veya unix saniyesi; aşağı yuvarlanarak dakikaya getirilir.
  • env (string, isteğe bağlı): Tam ortam. Varsayılan: olayın ortamı, yoksa tümü.
  • baseline_minutes (integer, isteğe bağlı): Varsayılan: 60. 30..120 aralığına sabitlenir.
  • after_minutes (integer, isteğe bağlı): Varsayılan: baseline_minutes. 30..120 aralığına sabitlenir ve şimdiyle sınırlandırılır.

Aşağıdakilerden herhangi biri gerçekleştiğinde regression likely: hizmette veya en yüksek 10 çağıranından birinde hata oranı en az 1 yüzde puanı artarsa, p95 en az %40 artarsa ya da verim (rpm) en az %50 düşerse; çağıranlar iki pencerenin toplamındaki verime göre sıralanır (değişiklik öncesinde en az 100 istek ve verim dışındaki ölçümler için değişiklik sonrasında da en az 100 istek gerekir; p95 yalnızca latency_env isteklerini sayar); bunlar için bir uyarı değişiklikten sonra tetiklenmeye başlar ve değişiklik sonrası pencerenin sonunda hâlâ tetikleniyorsa (uyarı grubu adı veya bir service, service_name ya da service.name etiketiyle büyük/küçük harf duyarsız eşleştirilir; yoksa açıklama kullanılır, ancak özet gibi serbest metin asla kullanılmaz; env varsa, başka bir ortamla etiketlenmiş uyarılar büyük/küçük harf duyarsız biçimde elenir ve etiketsiz olanlar env_match: unlabelled olarak işaretlenir); ya da get_apm_service_deviations kaynaklı bir gerileme varsa. Değişiklik sonrası pencere 5 dakikadan kısaysa (gelecekteki bir değişiklik de buna dahildir), hizmette yeterli istek yoksa veya altın sinyaller, doğrudan çağıran araması, uyarılar ya da get_apm_service_deviations başarısız olduysa (tamamen veya deviations.apm.unavailable içinde listelenen sorgulardan herhangi birinde) insufficient data: eksik kanıt hiçbir zaman no significant change sonucunu vermez ve yine de bir gerileme bulunursa başarısız olan şey belirtilir. no significant change geçerli bir yanıttır, başarısızlık değildir. İz özniteliği sapmaları yalnızca env ayarlanmışsa çalıştırılır ve her iki tarafta da en fazla 15 dakikayı kapsar; bir sonucu açıklar ancak sonucu belirlemez. Bu nedenle bunların atlanması veya alınamaması sonucu değiştirmez. Her liste 10 öğe tutar ve kaç öğenin çıkarıldığını bildirir; başarısız bir üst akış çağrısı yalnızca kendi bölümünde bir error bırakır. Altın sinyal gecikmesi, her iki pencerede de tek bir ortamdan alınır ve bu ortam latency_env içinde belirtilir: env yoksa en yoğun ortam kullanılır. Altın sinyal hata oranı 5xx ve gRPC hatalarını sayar; deviations.apm ayrıca hata durumlu span'leri ve 429'ları da sayar. Çağıranın sinyalleri kendi sunucu span'leridir; bu nedenle yalnızca istemci tarafında olan çağıranlar 0 rpm gösterir.

regressions, regression likely arkasındaki her tetikleyici için bir giriş listeler; sıralama reason sırasını izler ve diğer sonuçlar için [] değeridir. Her girişte service, role (changed veya dependent), env, metric (tam olarak error_rate_pct, latency_p95_ms, throughput_rpm, alert, apm_deviation değerlerinden biri) ve ölçüm biriminde baseline/after bulunur (%, ms, rpm veya APM sinyalinin kendi değeri; alert için null). Bir alert öğesi, rule_id ve state değerlerini ekler; bunlar, örneği listeleyen değişiklik sonrası pencerenin en yeni uyarı izleme dilimindeki durumudur ve her zaman firing olur: değişiklikten sonra başlayıp değişiklik sonrası pencerenin sonuna kadar çözülen bir uyarı gerileme değildir, bu nedenle bilet oluşturmaz; alerts.started içinde kendi state değeriyle kalır ve reason bunu sayar. env, ölçümün yapıldığı ortamdır: istenen env; yoksa hata oranı ve verim tüm ortamları toplar (env: ""), p95 ise en yoğun ortamı kullanır (latency_env); bir uyarı kendi ortam etiketini, APM sapması ise kendi ortamını kullanır. Her gerileme hizmet genelindedir; bu nedenle hiçbiri bir uç nokta belirtmez.

get_alert_groups

Changeboard / etiket kapsamı denetimleri için yapılandırılmış Compass uyarı grubu envanteri. Sıfır kuralı olan grupları ve tetiklenmeyen grupları da içerir. PromQL döndürmez.

  • alert_group_name / alert_group_type / data_source_name (string, isteğe bağlı): Büyük/küçük harfe duyarsız alt dize eşleşmesi.
  • team / tier (string, isteğe bağlı): Yapılandırılmış meta verilerde tam, büyük/küçük harfe duyarsız eşleşme.
  • label_key + label_value (string, isteğe bağlı): Birlikte ayarlanmalıdır. Tek bir metadata.labels çiftiyle tam, büyük/küçük harfe duyarsız eşleşme — hem anahtar hem değer.

id, name, type, entity_class, team, tier, metadata.labels ve kural sayılarını içeren kompakt JSON {"count":N,"groups":[...]} döndürür. Boş team / labels, ayarlanmamış anlamına gelir.

get_alert_operations_summary

  • start_time_iso / end_time_iso (string, zorunlu): En fazla 31 günlük RFC3339 penceresi.
  • timezone (string, isteğe bağlı): Gün sınırları için IANA adı. Varsayılan: UTC.
  • severities / services (array, isteğe bağlı): Özeti daraltır.
  • include_rules (boolean, isteğe bağlı): Kural başına hijyen bilgilerini de döndürür (fire_count değerine göre ilk 20, sık sık tetiklenen ve yönlendirilmemiş kurallar; API kural listesini sınırladıysa truncated ile birlikte). Varsayılan: false.

alerts_raised, acknowledged, unacknowledged, current_backlog, delivered, notification_outcomes, top_rules, needs_attention ve coverage içeren JSON döndürür. Her ölçüm {status, count?, reason?} değeridir; partial sayısı pencerenin yalnızca bir bölümünü kapsar ve alt sınır değildir.

get_alert_coverage

Bir hizmet, ortam, tek bir uyarı grubu veya kapsam belirtilmediğinde tüm kuruluş için “Neler için uyarı oluşturmuyorum?” sorusunu yanıtlar. Salt okunurdur: hiçbir şeyi oluşturmaz, değiştirmez veya sessize almaz. investigate araç kümesinde de sunulur.

  • service (string, isteğe bağlı): Hizmet adı.
  • environment (string, isteğe bağlı): Dağıtım ortamı (örneğin prod).
  • entity_id (string, isteğe bağlı): get_alert_groups tarafından döndürülen uyarı grubu (varlık) UUID'si.
  • muted_days (integer, isteğe bağlı): 1 ile 3650 arasında tam gün sayısı. Varsayılan: 7; 0, varsayılan anlamına gelir. Bu süreden daha uzun süre sessize alınmış bir kural, muted_too_long boşluğudur. Değerler kırpılır; boş dizeler yok sayılır. Boşluk türleri: uncovered_signal (latency, error_rate, throughput veya saturation üzerinde etkin kural yok; bunu kapsayacak devre dışı bir kuralın adını belirtir), all_rules_disabled (kurallarının tümü devre dışı olan bir uyarı grubu), no_notification_channel (uyarı grubunda hiçbir kanalın yönlendirmediği önem derecesine sahip bir kural), muted_too_long (süresiz olarak veya muted_days süresinden uzun süre sessize alınmış; muted_since kuralın son güncellemesidir ve süresiz sessize alma durumunda mute_until atlanır).

Kompakt JSON {scope, generated_at, complete, summary, counts, groups} döndürür. groups, mevcut her tür için bir {kind, count, gaps, omitted} girdisi içerir ve tür başına en fazla 10 boşluk listeler (omitted geri kalanını sayar; bunları görmek için kapsamı daraltın); her boşlukta suggested_tool (create_alert, create_alert_from_chart, attach_notification_channel veya patch_alert) ve yalnızca aracın kabul ettiği girdileri içeren suggested_args bulunur (patch_alert: entity_id, id ve is_disabled=false veya mute_until=0; attach_notification_channel: alert_group_id ve bir breach/threat severity; create_alert: entity_id; create_alert_from_chart: service_name); boşluğun kendi entity_id, rule_id ve signal değerleri bunların yanında listelenir. Önerilen aracı yalnızca oturumda kullanılabiliyorsa ve kullanıcı onay verirse çağırın. complete yalnızca API hiçbir boşluk listelemediğinde, tüm sayımlar 0 olduğunda ve kapsamla en az bir uyarı grubu eşleştiğinde true olur (tam service_name / env etiketleri, get_alert_groups listesine göre denetlenir); hiçbir şeyle eşleşmeyen bir kapsam, başarısız bir arama veya listelenmiş boşluk olmadan dönen sayımlar tamamlanmış sayılmaz ve summary nedenini belirtir.

get_alert_config

  • search_term (string, isteğe bağlı): Ad, grup, veri kaynağı ve etiketlerde serbest metin araması.
  • rule_name (string, isteğe bağlı)
  • severity (string, isteğe bağlı)
  • rule_type (string, isteğe bağlı): static veya anomaly.
  • alert_group_name / alert_group_type / data_source_name (string, isteğe bağlı)
  • tags (array, isteğe bağlı): Tümü eşleşmelidir (AND mantığı).

Her kural Recent Evaluations listeler: her biri bir dakikalık 5 örnek, en yeniden eskiye doğru; her örnek, sona erdiği UTC dakikasıyla etiketlenir. İzleyici en son dakikayı geç doldurduğundan en yeni örnek çağrıdan 1–2 dakika önce sona erer. firing; ok = izleyici kuralın tetiklenmediğini bildirdi (normal, çözümlenmiş, beklemede veya boş durum; is_firing=0 olarak get_alert_rule_state içinde); unknown = kural için izleyici satırı yok (henüz değerlendirilmedi veya o dakikadaki arama başarısız oldu; yanıtın üst kısmında belirtilir) ya da durumu firing, normal, resolved, pending veya empty olmayan bir satır var (ör. no_data, silenced). Devre dışı kurallar none gösterir. Eşleşen etkin kural sayısı 25'i aşarsa tümü için geçmiş atlanır ve yanıt bunu belirtir.

get_entity_kpis

Salt okunur; alerts ve investigate araç kümelerinde bulunur. Henüz hiçbir uyarı kuralının kullanmadığı KPI'lar da dahil olmak üzere tek bir uyarı grubundaki tüm KPI'ları listeler. Döndürülen kimlikleri expression_args / indicators_used içinde kullanın; asla kendiniz bir kimlik uydurmayın.

  • entity_id (string, zorunlu): Uyarı grubu/varlık UUID'si; get_alert_groups veya get_alert_config üzerinden alınır.

Ada göre sıralanmış JSON {"entity_id","count","kpis":[{"id","name","description","query","unit"}]} döndürür. unit bir görüntüleme etiketidir: eşikler ham sorgu değeriyle karşılaştırılır. Uygun KPI yoksa create_kpi ile bir tane oluşturun. Boş bir grubun sonucu, yalnızca oturum bunu sunuyorsa create_kpi adını verir; --read-only ile ( --allow-write-tools=create_kpi olmadığı sürece) veya investigate araç kümesinde bunun yerine KPI oluşturmak için yazılabilir bir alerts oturumu gerektiğini belirtir.

create_kpi

Mevcut bir uyarı grubunda KPI oluşturur; yalnızca alerts araç kümesinde kullanılabilir. Yalnızca get_entity_kpis içinde ihtiyacınız olan sorguya sahip bir KPI yoksa kullanın. Önce sorgunun veri döndürdüğünü prometheus_range_query ile kontrol edin: API yalnızca ayrıştırılamayan sorguları reddeder ve mevcut olmayan bir metriğe yönelik geçerli sorguyu kaydeder.

  • entity_id (string, zorunlu): Uyarı grubu/varlık UUID'si.
  • name (string, zorunlu): Uyarı grubu içinde benzersiz olmalıdır; aynı adla ikinci bir oluşturma isteği çakışma olarak reddedilir.
  • query (string, zorunlu): PromQL. Bir pano panelinde uyarı oluşturmak için panelin PromQL ifadesini get_dashboard üzerinden alın.
  • unit (string, zorunlu): Sorgunun ham değerinin birimi; ör. seconds, ms, percent, ratio, count, req/s. Bu yalnızca bir etikettir ve hiçbir dönüşüm yapmaz; dolayısıyla eşikler ham değerle karşılaştırılır.
  • description (string, isteğe bağlı)
  • data_source_id (string, isteğe bağlı): Varsayılan olarak uyarı grubunun veri kaynağını kullanır.

Hiçbir MCP aracı KPI silmez veya düzenlemez (Last9 kullanıcı arayüzünü kullanın); bu nedenle oluşturmadan önce adı, sorguyu ve birimi onaylayın. Bir kez oluşturun ve döndürülen kimliği expression_args / indicators_used için saklayın; ad çakışmasında mevcut KPI'nın kimliğini get_entity_kpis üzerinden yeniden kullanın. Zaman aşımı veya bağlantı hatasında oluşturma işlemi uygulanmış da uygulanmamış da olabilir: yeniden denemeden önce ada göre get_entity_kpis ile kontrol edin. {"id","name","query","unit"} döndürür.

get_alerts

  • time_iso (string, isteğe bağlı): RFC3339 biçiminde değerlendirme zamanı.
  • window (integer, isteğe bağlı): Saniye cinsinden geriye dönük aralık. Varsayılan: 900. Aralık: 60–86400.
  • lookback_minutes (integer, isteğe bağlı): Aralık: 1–1440.

get_alert_rule_state

  • start_time (integer veya string, zorunlu): Aralığın başlangıcı (dahil): Unix epoch saniyesi (1718000000) veya RFC3339 (2024-06-10T06:13:20Z). Epoch milisaniye, mikrosaniye ve nanosaniye değerleri saniyeye dönüştürülür; 2000-01-01 öncesindeki değerler reddedilir.
  • end_time (integer veya string, zorunlu): Aralığın sonu (dahil), aynı biçimlerde.
  • step (integer, zorunlu): Örnekler arasındaki saniye cinsinden çözünürlük. Örnek sayısı ((end_time - start_time) / step + 1) en fazla 100 ile sınırlıdır. Her örnek, zaman damgasında sona eren min(step, 3600) saniyelik aralığı kapsayan tek bir üst akış çağrısıdır; örnekler 5'erli gruplar halinde alınır ve 60 saniyeden uzun sürmeleri durumunda araç yeniden deneme yönergesi içeren bir hata döndürür.
  • alert_group_id (string, isteğe bağlı): Uyarı grubu kimliğine göre filtrele.
  • rule_name (string, isteğe bağlı): Kural adına göre regex filtresi.
  • alert_group_name (string, isteğe bağlı): Uyarı grubu adına göre regex filtresi.
  • label_filters (string, isteğe bağlı): Virgülle ayrılmış key=value etiket filtreleri.
  • state (string, isteğe bağlı): Duruma göre filtrele (ör. firing).

rule_id -> [{timestamp, is_firing}] değerlerinden oluşan bir JSON eşlemesi döndürür. Bir kuralın üst akış yanıtında bulunmadığı zaman damgası is_firing=0 olarak bildirilir — bu, "tetikleniyor olarak gözlemlenmedi" anlamına gelir; durumun normal olduğunun doğrulandığı anlamına gelmez.

get_alert_hygiene

Etkin uyarı kurallarının salt okunur denetimi. Hiçbir şeyi değiştirmez: önerilen her düzeltme bir tekliftir ve yalnızca kullanıcı açıkça onayladıktan sonra, sunuluyorsa update_alert (ayar yapma), patch_alert (is_disabled), delete_alert veya attach_notification_channel üzerinden uygulanır.

  • window (string, isteğe bağlı): 7d veya 30d. Varsayılan: 7d.
  • limit (integer, isteğe bağlı): En kötü durumdakiler önce gelecek şekilde döndürülecek işaretli kural sayısı üst sınırı. Varsayılan: 20. Aralık: 1–100.

Pencere şimdi sona erer. Kategoriler (bir kural birden fazla kategoriye girebilir): noisy (< 20% acked; with an unavailable ack_rate it is judged on fire rate alone and the reason says so; mute time is not reported), flapping (> ile günde ≥ 5 tetiklenme, günde 4 dalgalanma), stale (pencereden önce son kez tetiklenmiş ve pencere içinde tetiklenme zamanı yok ya da yaşam döngüsü coverage tamamlanmış ve API listesi kesilmemişken pencere içinde olayı olmayan etkin, yapılandırılmış bir kural), unrouted (pencere içindeki hiçbir tetiklenme bir kanala ulaşmamış ve uyarı grubuna şu anda bağlı kanal yok; ekler okunamıyorsa kural bunun yerine unavailable.routed altında sayılır). Her istatistik {status, count|value, reason} veya null değerindedir: kullanılamayan bir değer hiçbir zaman sıfır olarak yorumlanmaz ve yalnızca o değere ihtiyaç duyan denetimi atlar; unavailable, eksik her değer için etkin kuralların sayısını verir (fire_count, flap_count, ack_rate, routed, uyarı kuralları listesinde bulunmayan kurallar için rule_config — bu kuralların düzeltmelerinde güncel değer bulunmaz — ve sessizliğini geçmişin kanıtlayamadığı, olayı olmayan yapılandırılmış kurallar için activity; bunlar değerlendirilmez). coverage, uyarı geçmişinin pencerenin ne kadarını kapsadığını belirtir; oranlar en az bir gün olmak üzere kapsanan süre üzerinden hesaplanır. upstream_truncated, API yalnızca en gürültülü 200 kuralı döndürdüğünde true olur; bu nedenle daha sessiz kurallar değerlendirilmemiştir. Her kuralın uyarı kuralları listesindeki yapılandırmasından oluşturulan düzeltmeler: bad_minutes değerini yükseltin (count_true(result) >= N içindeki N) veya eval_window süresini uzatın (en fazla 60 dakika); gürültülü statik eşikler için eşiği condition (expr > 100) içinde değiştirin veya ifadeyi adaptive_std_cmp(metric, sensitivity, window) olarak değiştirin; bir bildirim kanalı ekleyin; eski kuralları devre dışı bırakın veya silin.

32 KB hedef boyutuna göre ayarlanmış kompakt JSON {window, from, to, coverage, upstream_truncated, rules_evaluated, flagged_rules, truncated, omitted_for_size, unavailable, rules} döndürür: işaretli kurallar limit sınırını veya bu hedefi aştığında truncated true olur ve boyut nedeniyle limit sınırından çıkarılan kuralların sayısını omitted_for_size verir (en kötü durumdaki kural her zaman tutulur; bu nedenle 32 KB'den büyük tek bir kural tek başına döndürülür ve hedefi aşar); her kuralda findings (category, reason, suggested_fix, isteğe bağlı alternative_fix) ve ham stats bulunur.

get_notification_channels

  • scope (string, isteğe bağlı): attached (varsayılan), uyarı grubu eki başına bir satır döndürür; id, detach_notification_channel tarafından alınan ek kimliğidir. channels, kuruluşun kanallarını döndürür (id, name, type, send_resolved, created_via); id, attach_notification_channel tarafından alınan kanal kimliğidir. Hedefler, üstbilgiler ve sertifikalar hiçbir zaman döndürülmez.

Yapılandırılmış bildirim kanallarını (Slack, PagerDuty, e-posta, web kancaları vb.) TSV tablosu olarak döndürür. Ek satırlarında (service_fqid ayarlanmış) global false ve services - gösterilir; services yalnızca eski hizmet bağlamalarını listeler. Ek satırlarında send_resolved, teslimat sırasında kullanılan değeri değil, satırda saklanan varsayılanı gösterir; çözüm bildirimleri kanalın kendi send_resolved (scope=channels) ayarını izler. Her iki kapsam da created_via içerir (MCP aracısının oluşturduğu satırlar için last9-mcp, aksi halde -).

recommend_alert_config

Salt okunur. Yaşam döngüsü yönergelerini, doğrulama kapılarını ve müdahale bağlamı gereksinimlerini döndürür; tek başına kanıt değildir, bu nedenle eşikleri telemetri araçlarıyla temellendirin.

  • signal (string, zorunlu): Birim ve boyutları içeren metrik veya kullanıcı etkisi sinyali.
  • objective (string, zorunlu): Algılanacak belirti veya kullanıcı etkisi.
  • rule_type (string, isteğe bağlı): static (varsayılan) veya anomaly.
  • severity (string, isteğe bağlı): breach (varsayılan) veya threat.
  • environment (string, isteğe bağlı): Ortam ve trafik profili.

validate_alert_expression

Bir ifadeyi kaydetmeden deneme amaçlı çalıştırır. create_alert / update_alert öncesinde kullanın.

  • entity_id (string, zorunlu): Uyarı grubu/varlık UUID'si.
  • expression (string, zorunlu): KPI'ların tam adlarıyla belirtilen göstergeler üzerinde aritmetik ifade; ör. errors / requests. En fazla 3 gösterge. Boşluk, nokta veya tire içeren adları olduğu gibi yazın (Test Alert / errors); create_alert bunları tam olarak bu şekilde kaydeder.
  • indicators_used (object, zorunlu, boş olamaz): Gösterge adından entity_id tarafından sahip olunan KPI UUID'sine eşleme; grubun KPI kimliklerini ve adlarını get_entity_kpis ile listeleyin. Her KPI'nın tam adını kullanın: bu deneme çalıştırması herhangi bir adı kabul eder, ancak create_alert ve update_alert, bağlı KPI'nın adı olmayan expression_args anahtarlarını reddeder. Yalnızca aritmetik ifade denetlenir (bir adaptive_std_cmp(...) sarmalayıcısını değil, iç metrik ifadesini iletin); condition / alert_condition denetlenmez. En az bir zaman serisi denetimi yalnızca birden fazla gösterge kullanıldığında çalışır.

{"valid":true} veya {"valid":false,"reason":"..."} döndürür; geçersiz bir ifade normal bir sonuçtur, araç hatası değildir.

describe_alert_chart

Salt okunurdur. Kapsam dahilindeki bir Discover grafiğindeki uyarı verilebilir sinyalleri (key, unit, eval_query, query_kind) listeler. Viewer rolündeki belirteçler reddedilir.

  • surface (string, zorunlu): discover-service veya discover-exceptions; özel panolar dahil diğer tüm yüzeyler API çağrılmadan önce reddedilir (bunun yerine KPI ile create_alert kullanın).
  • chart_key (string, zorunlu): ör. apdex, error_rate, response_time, exception_count.
  • service_name (string, zorunlu)
  • env (string, isteğe bağlı)
  • attributes (object, isteğe bağlı): Bu aracın bildirdiği anahtar adlarını kullanarak ek kimlik boyutları.

create_alert

Mevcut bir uyarı grubunda, her zaman devre dışı bir kural oluşturur (is_disabled=false iletilse bile taslak olarak). Önce recommend_alert_config çağrısını yapın, ardından yalnızca kullanıcı onayladıktan sonra patch_alert is_disabled=false ile etkinleştirin. Bir kez oluşturun ve döndürülen kural kimliğini saklayın. Uyarı grubunun zaten kullandığı bir rule_name (büyük/küçük harfe duyarsız) varsa, hiçbir şey oluşturmadan reddedilir ve mevcut kuralın kimliği belirtilir.

  • entity_id (string, zorunlu): Uyarı grubu/varlık UUID'si.
  • alert_rule (object, zorunlu): primary_indicator ve expression_args dahil, varlığın gerçek KPI'larına bağlı eksiksiz, türü belirtilmiş kural gövdesi. Her expression_args anahtarı, bağlandığı KPI'nın tam adı olmalıdır (x gibi bir yer tutucu değil); primary_indicator ve expression bu adları kullanır. Statik kurallar için condition, alert_condition ve eval_window (0–60 dakika) gerekir. Uyarlamalı kurallarda expression = adaptive_std_cmp(<primary_indicator>, sensitivity, window) kullanılır; bu durumda üç alan isteğe bağlıdır (varsayılanlar: expr > 0, count_true(result) >= 1, 1). algorithm ayarlanamaz. Yanıtlayıcı bağlamı properties içine eklenir (açıklama, runbook, ek açıklamalar, query_mode).

Bildirim yönlendirmesi kuralda değil, uyarı grubunda yapılandırılır.

create_alert_from_chart

describe_alert_chart ile açıklanan bir grafikten statik eşik kuralı oluşturur. create_alert gibi, kural devre dışı bir taslak olarak oluşturulur ve tetiklenmez; yalnızca kullanıcı onayladıktan sonra patch_alert is_disabled=false ile etkinleştirin. Grafik API'si kuralları etkin olarak oluşturduğundan, araç oluşturma işleminden hemen sonra kuralı devre dışı bırakır; bu işlem başarısız olursa sonuç, canlı olabilecek kuralın kimliğini belirten bir hatadır.

  • surface / chart_key / service_name / signal_key / name (string, zorunlu)
  • env (string, isteğe bağlı)
  • attributes (object, isteğe bağlı)
  • threshold (number, isteğe bağlı): Sinyalin biriminde; 0 veya daha büyük olmalıdır. Apdex gibi puan birimli sinyaller için açık bir değer gerekir.
  • threshold_operator (string, isteğe bağlı): > (varsayılan), <, >=, <=, ==, !=.
  • eval_window (integer, isteğe bağlı): Dakika, 1–60. Varsayılan: 5.
  • bad_minutes (integer, isteğe bağlı): 1–eval_window. Varsayılan: 3.
  • severity (string, isteğe bağlı): breach veya threat.
  • description (string, isteğe bağlı)
  • group_id (string, isteğe bağlı): Normalde belirtilmez.

update_alert

Bir kuralın değerlendirme yapılandırmasını tamamen değiştirir. Önce get_alert_config veya get_entity_alert_rules ile kuralı alın. Kural mevcut değilse veya başka bir uyarı grubuna aitse hiçbir şeyi değiştirmeden reddedilir. Kuralı geçici olarak silebilir ve yeniden oluşturabilir; bu nedenle sonrasında döndürülen yeni kimliği kullanın.

  • entity_id (string, zorunlu)
  • id (string, zorunlu): Uyarı kuralı UUID'si.
  • alert_rule (object, zorunlu): create_alert ile aynı yapıda eksiksiz yapılandırma.

patch_alert

Kural kimliğini koruyan kısmi değişiklik. En az bir değişiklik gerekir. Kural mevcut değilse veya başka bir uyarı grubuna aitse hiçbir şeyi değiştirmeden reddedilir.

  • entity_id (string, zorunlu)
  • id (string, zorunlu): Uyarı kuralı UUID'si.
  • is_disabled (boolean, isteğe bağlı): false etkinleştirir, true duraklatır.
  • mute_until (integer, isteğe bağlı): Unix epoch son tarihi; 0 sessizliği kaldırır.
  • properties (object, isteğe bağlı): description, runbook, annotations, query_mode. Gönderilen her alan, saklanan alanın yerini alır; gönderilmeyen veya boş bırakılan alanlar saklanan değerini korur. annotations haritanın tamamını değiştirir; korumak için tüm anahtarları gönderin; {} haritayı temizler.
  • recurring_mute_schedule (object, isteğe bağlı): Haftalık zamanlamayı değiştirir: enabled (varsayılan false), timezone (IANA adı, zorunlu) ve windows (weekdays içinden 1–20 adet, sun..sat biçiminde; start_time / end_time ise 24 saatlik HH:MM biçiminde). Bitiş saati başlangıç saatine eşit veya daha erkense zamanlama ertesi gün sona erer. Korumak için tüm zaman aralıklarını gönderin.
  • clear_recurring_mute_schedule (boolean, isteğe bağlı): Zamanlamayı tamamen kaldırır; recurring_mute_schedule ile birlikte kullanılamaz. Saklanan zaman aralıklarını koruyan enabled=false'den farklıdır.

Viewer rolündeki kullanıcılar yalnızca mute_until değerini değiştirebilir. Grup veya varlık sessize alınmışken kural düzeyindeki sessize alma değişiklikleri reddedilir. Değişiklikleri, mute_until, recurring_mute_schedule ve properties değerlerini gösteren get_entity_alert_rules ile tekrar okuyun.

delete_alert

Bir kuralı kalıcı olarak siler. Önce get_alert_config ile doğrulayın ve kullanıcıdan açık onay alın. Kural mevcut değilse veya başka bir uyarı grubuna aitse hiçbir şeyi silmeden reddedilir.

  • entity_id (string, zorunlu)
  • id (string, zorunlu): Uyarı kuralı UUID'si.

mute_alert_group

Bir gruptaki mevcut ve gelecekteki tüm kuralları sessize alır; tek bir kuralı sessize almak için mute_until ile patch_alert kullanın. Düzenleyici erişimi gerekir.

  • entity_id (string, zorunlu): Uyarı grubu/varlık UUID'si.
  • until (integer, zorunlu): Sessizliğin sona ereceği Unix epoch saniyesi. 0 sessizliği kaldırır; -1 gibi negatif bir değer süresiz sessize alır.

acknowledge_alert

Tetiklenen bir uyarının sorumluluğunu üstlenir veya bırakır. Uyarıyı çözmez ya da sessize almaz. Zaten sahip olduğunuz bir uyarıyı onaylamak güvenli bir etkisiz işlemdir. ack, son bir saat içinde get_alerts tarafından tam olarak bu uyarı (üç kimliğin tümü) listelenmedikçe hiçbir kayıt oluşturmadan reddedilir.

  • alert_group_id / rule_id / rule_type (string, zorunlu): get_alerts içindeki uyarıdan kopyalayın.
  • action (string, isteğe bağlı): ack (varsayılan) veya unack. Onayı yalnızca sahip veya kuruluş yöneticisi kaldırabilir.
  • mute_until (integer, isteğe bağlı): Yalnızca ack. mute_alert_group veya patch_alert ile zaten uyguladığınız sessize alma işlemini kaydeder; hiçbir şeyi sessize almaz.

reassign_alert

Zaten bir sahibi olan uyarıyı başka bir kullanıcıya devreder; sahibi yoksa önce uyarıyı onaylayın. Uyarının sahibi olmadığı için devir gerçekleşmezse, son bir saat içinde get_alerts tarafından bu uyarının listelenip listelenmediğini belirtir. Last9 yeni sahibine bildirim göndermez.

  • alert_group_id / rule_id / rule_type (string, zorunlu): get_alerts içindeki uyarıdan kopyalayın.
  • owner_email (string, isteğe bağlı): Tercih edilen seçenek; etkin kuruluş kullanıcıları arasında büyük/küçük harfe duyarsız eşleştirilir.
  • owner_user_id (string, isteğe bağlı): owner_email veya owner_user_id seçeneklerinden tam olarak birini belirtin.

create_notification_channel

Bir kanal oluşturur; attach_notification_channel ile ilişkilendirilene kadar hiçbir yere yönlendirme yapmaz. Bir kez oluşturun ve kimliğini saklayın; güncelleme aracı yoktur. Yalnızca id, name, type ve send_resolved değerlerini döndürür.

  • name (string, zorunlu): Tür başına benzersiz olmalıdır; iki nokta üst üste içeremez.
  • type (string, zorunlu): slack, pagerduty, opsgenie, email veya generic_webhook.
  • destination (string, zorunlu): Slack Incoming Webhook URL'si (veya slack_app_mode ile kanal kimliği), PagerDuty yönlendirme anahtarı, Opsgenie API anahtarı, yalnızca kuruluşun alan adıyla sınırlı olmayan, virgülle ayrılmış iş e-posta adresleri (API, Gmail gibi kişisel sağlayıcı adreslerini reddeder; kişisel bir hesapla oturum açmış bir kuruluş yalnızca yöneticisinin adresini kabul eder) veya bir HTTPS webhook URL'si.
  • slack_app_mode (boolean, isteğe bağlı): Yalnızca Slack için. Varsayılan: false.
  • mention_handles (string, isteğe bağlı): Virgülle ayrılmış; ör. user|U123ABC|name, special|here, special|channel.
  • webhook_headers (object, isteğe bağlı): Yalnızca generic_webhook.
  • webhook_ca_certificate (string, isteğe bağlı): Yalnızca generic_webhook; en fazla 64 KiB boyutunda tek bir PEM CA sertifikası.
  • send_resolved (boolean, isteğe bağlı): Varsayılan: true.

attach_notification_channel

Mevcut bir kanalı tek bir uyarı grubuna yönlendirir. Yinelenen çağrılarda aynı sonucu verir. Ekler, kanalın teslimat ayarlarını (başlıklar, sertifika, bahsetmeler) ekleme anında kopyalar; kanal ayarları daha sonra değişirse yeniden ekleyin.

  • channel_id (integer, zorunlu): Bir kanal kimliği (scope=channels ile get_notification_channels), ek kimliği değil.
  • alert_group_id (string, zorunlu): get_alert_groups içinden.
  • severity (string, zorunlu): breach, threat veya both. both iki ek oluşturur; ikincisi başarısız olursa ilki ekli kalır ve hata, yeniden denenmesi gereken önem derecesini belirtir.

detach_notification_channel

Bir eki kaldırır. Silme kapsamlı bir belirteç gerekir; yazma kapsamlı bir belirteçle ek kaldırılamaz.

  • attachment_id (integer, zorunlu): scope=attached ile get_notification_channels içinden alınan id. Kanal kimlikleri reddedilir.
  • alert_group_id (string, isteğe bağlı): Ek farklı bir gruba aitse işlem reddedilir.

delete_notification_channel

Eki olmayan bir kanalı kalıcı olarak siler; önce eklerini kaldırın. Silme kapsamlı bir belirteç gerekir. Kanalları yeniden listeleyerek silme işlemini doğrular.

  • channel_id (integer, zorunlu): scope=channels ile get_notification_channels içinden alınan id. Ek kimlikleri reddedilir.

did_you_mean

  • query (string, zorunlu): Aranacak ad — kısmi, yanlış yazılmış veya kısaltılmış olabilir.
  • type (string, isteğe bağlı): Varlık türüne göre sınırlandırın: service, environment, host, database, k8s_deployment, k8s_namespace, job.

Benzerlik puanlarıyla en yakın 3 eşleşmeye kadar sonuç döndürür. Varlık adının belirsiz olduğu tüm araç çağrılarından önce bunu kullanın. Önceki bir çağrı boş sonuç döndürdüyse yeniden denemeden önce bunu kullanın.

get_service_profile

  • service_name (string, zorunlu): Telemetri profili çıkarılacak hizmet.
  • datasource (string, isteğe bağlı): Veri kaynağı adı. Varsayılan için belirtmeyin; yaklaşık bir ad, Prometheus araçlarındaki gibi çözümlenir.

Kısa bir inceleme özeti ve ardından ham JSON olarak tam profili döndürür: sinyal varlığı (logs/traces/metrics değerlerinden present, absent veya unknown olarak), dil ve çalışma zamanı, dağıtım ortamları, günlük signal_shape (log_format, severity_set, level_field, trace_context_in_logs) ve uygulanabildiği durumlarda önerilen bir alım düzeltmesi. Arka uç freshness bildirdiğinde özet, freshness.logs.last_seen ve freshness.traces.last_seen değerlerini içeren bir last seen satırı (RFC3339 veya null olduğunda none) ve freshness.traces_stale değeri true olduğunda bir traces stale uyarısı ekler: günlükler devam ederken span'ler durmuş; bu nedenle eksik kurulum yerine freshness.traces.last_seen çevresindeki bir gerileme araştırılmalıdır. Üst kaynaktan türetilir ve yaklaşık 15 dakikalık TTL ile önbelleğe alınır.

Araç seçiminin hizmetin gerçek telemetrisine uyması için hizmet kapsamındaki herhangi bir incelemeden önce bunu çağırın — traces değeri absent ise iz araçlarını atlayın; severity_set değeri none veya partial olduğunda ise severity_filters kullanmak yerine günlük gövdesindeki level_field değerinden önem derecesini ayrıştırın. metrics her zaman unknown değerindedir ve v1'de dependencies doldurulmaz. logs ve traces değerlerinin ikisi de absent olduğunda, hizmetin izlenmediği sonucuna varmadan önce adı did_you_mean ile doğrulayın.

list_dashboards

  • name (string, isteğe bağlı): Pano adında büyük/küçük harfe duyarsız alt dize. Listeyi daraltır ve total.
  • limit (integer, isteğe bağlı): Sayfa başına pano sayısı, 1–200. Varsayılan: 100.
  • cursor (string, isteğe bağlı): Önceki sayfanın next_cursor değeri; bununla birlikte aynı name değerini gönderin.

En son güncellenenler önce gelecek şekilde {"dashboards": [{"id", "name", "updated_at", "created_by", "locked"}], "total", "next_cursor"} döndürür. Boş olduğunda created_by atlanır; API readonly bildirmediğinde locked atlanır. updated_at, dize olarak Unix epoch saniyeleridir. 32 KB sınırının altında kalmak için sayfa erken sona erebilir; son sayfada next_cursor bulunmaz.

get_dashboard

  • id (string, zorunlu): Pano UUID'si.
  • region (string, isteğe bağlı): Panel sorgularının doldurulacağı bölge. Varsayılan olarak yapılandırılmış veri kaynağı bölgesi kullanılır.

Sonuç, üst düzey locked (false, API bunu sağlamadığında) ve created_by (yazarın kullanıcı kimliği) alanlarını ekler.

Bir panelde uyarı oluşturmak için last9://reference/alerting bölümüne bakın.

validate_dashboard

Salt okunur. Panoları hiçbir zaman oluşturmaz veya güncellemez. dashboard_id ya da dashboard_definition değerlerinden tam olarak birini kabul eder.

  • dashboard_id (string, isteğe bağlı): Doğrulanacak kayıtlı pano UUID'si.
  • dashboard_definition (object, isteğe bağlı): Satır içi, kaydedilmemiş pano gövdesi (gerçek bir deneme çalıştırması). {dashboard, metadata} oluşturma zarfı, içindeki dashboard nesnesine açılır.
  • start_time_iso / end_time_iso (string, isteğe bağlı): Doğrulama aralığı (RFC3339). ≤ 24 saat olmalıdır.
  • region (string, isteğe bağlı): Panel sorgularının yürütüleceği bölge.

dashboard_validation/v1 döndürür: panel başına lint + yürütme sınıflandırması (data / no_data / invalid / error). İlk gün boş sonuçlar, tanılama probları olmadan valid_no_data olarak sınıflandırılır. Panel içermeyen bir pano, error: "no_panels" ile birlikte success: false döndürür. Diğer biçimlerdeki panel alanları (Grafana gridPos, title, type ve sorgu gerektiren panellerde targets) ile yanlış türdeki alanlar her panel için shape_problems içinde listelenir, summary.panels_invalid_shape sayısına dahil edilir ve overall değerini fail yapar.

preview_dashboard

Salt okunur, istemci tarafı önizleme. Ya dashboard (oluşturma isteğindeki kaydedilmemiş pano nesnesi) ya da id ile birlikte ops ( patch_dashboard ile aynı sıralı işlemler) değerlerini gönderin. Zorunlu start_time_iso ve end_time_iso, en fazla 24 saatlik bir aralığı kapsayan RFC3339 zaman damgalarıdır. İsteğe bağlı variables, skaler geçersiz kılma değerlerini içerir; aksi durumda pano değerleri ve yerleşik varsayılanlar uygulanır.

{
  "id": "dashboard-id",
  "ops": [{"op": "update_panel", "panel_id": "panel-id", "fields": {"name": "Request latency"}}],
  "start_time_iso": "2026-10-01T08:00:00Z",
  "end_time_iso": "2026-10-01T09:00:00Z"
}

saved: false, tanım/sorgu validation özeti (oluşturma şeması uyuşmazlığı için definition_error dahil) ve ok / empty / error durumunu, çözümlenmiş sorguları ve hedef tanılamalarını içeren panels döndürür. PromQL ve LogJSON yürütülür; desteklenmeyen sorgu türleri ve çözümlenmemiş değişkenler paneli hatalı duruma getirir. Geçerli sorgu içermeyen paneller ok; geçersiz panel tanımları ise error olur. Yama diff, net panels_added, panels_changed (taşımalar dahil) ve panels_removed değişikliklerini, ayrıca sıralı işlem değişikliklerini içerir. Panelleri kimlikler ve sıfır tabanlı dizinler tanımlar; kaldırılan dizinler özgün panoya aittir. Kaydedilen panellerin kimlikleri boş olmamalı ve birbirinden farklı olmalıdır.

Sınırlar: 50 panel, 100 sorgu, 100 işlem, hem girdi hem de aday pano için 65536 JSON baytı ve 60 saniyelik yürütme süresi. 65536 JSON baytını aşan çözümlenmiş sorgular yürütme öncesinde reddedilir. Kanıt, hedef başına en fazla üç örnek ve 1024 JSON baytı tutar; örnekler atlandığında truncated: true eklenir. 262144 baytı aşan JSON raporu, girdiyi azaltmaya yönelik yönergelerle birlikte başarısız olur.

Hiçbir pano oluşturulmaz veya güncellenmez. Bu işlem, adayı oluşturma şemasına ve mevcut doğrulayıcıyı kullanarak sorgulara göre denetler; arka ucun kabulünü veya görüntülemeyi garanti etmez. Arka uç tarafından atanan kimlikler, varsayılanlar, atılan alanlar veya eşzamanlı düzenlemeler kaydedilen sonucu değiştirebilir. Önizleme, yazma işlemiyle aynı yerel yama işlemlerini ve panel sürümü varsayılanlarını kullanır.

create_dashboard

Yalnızca yeni pano oluşturmak için kullanılır. Bu çağrı dashboard.id döndürdükten sonra panelleri patch_dashboard ile düzenleyin (veya yapıyı update_dashboard ile yeniden düzenleyin) — panel eklemek, kırpmak ya da düzeltmek için yeniden oluşturmayın.

  • dashboard (object, zorunlu): name ve panels[] içeren pano tanımı. Her panel için name, version, layout (x, y, w, h), visualization.type ve queries[] gerekir.
  • metadata (object, isteğe bağlı): Pano meta verileri — _category ve _type alanları (ör. {"_category":"custom","_type":"metrics"}).

update_dashboard

Bir panonun büyük bölümünü yeniden yapılandırmak için kullanın; tek tek paneller eklemek, düzenlemek, kaldırmak veya taşımak için patch_dashboard kullanın. Kimliğe göre tam değiştirme (oluşturmayla aynı gövde): her panel yeniden gönderilmelidir.

  • id (string, zorunlu): Güncellenecek pano UUID'si.
  • dashboard (object, zorunlu): Tam değiştirme pano gövdesi (oluşturmayla aynı biçim).
  • metadata (object, isteğe bağlı): Değiştirilecek meta veriler. Salt okunur sistem panoları kurtarılabilir bir araç hatası döndürür.

patch_dashboard

Küçük iyileştirmeler için bunu update_dashboard yerine tercih edin: değişmeyen paneller yeniden gönderilmez. Panoyu okur, ops işlemlerini sırayla uygular ve geri yazar; bu nedenle okuma ile yazma arasında başka bir yerde yapılan düzenlemenin üzerine yazılır. {dashboard_id, changes[]} döndürür; panonun zaten karşıladığı işlemler sonuçtan çıkarılır ve hiçbir işlem değişiklik yapmıyorsa hiçbir şey yazılmaz. Fark, yazma işleminden sonra yeniden okunan pano ile karşılaştırılarak denetlenir: panel fields saklanan değerleri gösterir, not_stored API'nin attığı anahtarları listeler ve not_removed bir null olmasına rağmen API'nin koruduğu anahtarları listeler. 200 karakteri aşan fark değerleri, JSON türleri korunarak yerinde kısaltılır.

  • id (string, zorunlu): Yama uygulanacak pano UUID'si.
  • ops (array, zorunlu): Sırayla uygulanan işlemler; herhangi biri geçersizse hiçbir şey yazılmaz ve hata, geçersiz işlemi ops[i] olarak belirtir.
    • add_panel: panel (tam panel nesnesi; version varsayılan olarak 1 olur), isteğe bağlı index (0 tabanlı ekleme konumu, varsayılan olarak sona eklenir).
    • update_panel: panel_id, fields (değiştirilecek üst düzey panel anahtarları; null bir anahtarı kaldırır; id değiştirilemez).
    • remove_panel: panel_id.
    • move_panel: panel_id, index (taşıma sonrası 0 tabanlı konum).
    • set_title: title (pano adı).
    • set_variable: variable; aynı target değerine sahip değişkeni değiştirir, yoksa sona ekler.

delete_dashboard

  • id (string, zorunlu): Silinecek pano UUID'si. Salt okunur sistem panoları silinemez.

set_dashboard_lock

  • id (string, zorunlu): Pano UUID'si.
  • locked (boolean, zorunlu): true panoyu kilitler, false kilidini açar.

Yazma aracı; yalnızca kullanıcı açıkça istediğinde çağırın. Panoyu yalnızca yazarı veya kuruluş yöneticisi kilitleyebilir ya da kilidini açabilir; yerleşik panolar her zaman salt okunurdur. Ortaya çıkan durumla birlikte {"id", "locked"} döndürür. Pano kilitliyken update_dashboard, patch_dashboard ve delete_dashboard hiçbir yazma isteği göndermez ve yazarın adını belirten, kilidin açılmasını veya panonun create_dashboard ile kopyalanmasını öneren dashboard is locked ile başlayan kurtarılabilir bir araç hatası döndürür.

list_dashboard_snapshots

  • dashboard_id (string, zorunlu): Anlık görüntüleri listelenecek pano UUID'si.

Yalnızca meta verileri döndürür (id, name, expires_at vb.). Dondurulmuş panel verileri için get_dashboard_snapshot kullanın.

get_dashboard_snapshot

  • id (string, zorunlu): Anlık görüntü UUID'si.

dashboard_definition, panel_data, time_range ve variables dahil olmak üzere dondurulmuş anlık görüntünün tamamını döndürür.

delete_dashboard_snapshot

  • id (string, zorunlu): Silinecek anlık görüntü UUID'si.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (isteğe bağlı): Zaman aralığı; geriye dönük süreyi veya açık ISO sınırlarını tercih edin (varsayılan 60m).
  • region (string, isteğe bağlı): Bölge geçersiz kılma değeri.

Belirtilen zaman aralığında profil verisi bulunan hizmetleri döndürür. get_flamegraph / get_top_functions / get_profile_summary öncesinde çağırın.

get_flamegraph

  • service (string, zorunlu): get_profile_services içinden hizmet adı.
  • profile_type (string, isteğe bağlı): cpu (varsayılan), alloc veya wall. Zaman aralıklarını karşılaştırırken bir tür sabitleyin.
  • env / cluster / namespace / runtime (string, isteğe bağlı): Kapsam filtreleri.
  • limit (number, isteğe bağlı): En fazla toplu yığın satırı sayısı (varsayılan 1000, en fazla 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (isteğe bağlı).

İç içe bir alev grafiği ağacı döndürür (name / value / self / children). truncated: true, API satır sınırına ulaşıldığı anlamına gelir.

get_top_functions

get_flamegraph ile aynı filtreler. En sıcak işlevlerin öz örnek sıralamasını döndürür. Sonuç kesilmiş olabilir; truncated değerini kontrol edin.

get_profile_summary

get_flamegraph ile aynı filtreler. Hizmet profili için kısa, doğal dilli bir önceliklendirme özeti döndürür.

grafana_search_dashboards

  • query (string, isteğe bağlı): Başlık alt dizesi. Boş bırakıldığında geniş kapsamlı listeleme yapar (5.000 satır sınırına tabidir).

uid, title, uri, url, type ve tags içeren {"dashboards":[…], "truncated":bool} döndürür. grafana_get_dashboard ile birlikte uid kullanın.

grafana_get_dashboard

  • uid (string, zorunlu): Grafana pano uid'si.
  • full_json (boolean, isteğe bağlı): true olduğunda, filtrelenmiş özet yerine ham Grafana JSON'u döndürür.

Varsayılan özet: sürüm, etiketler, şablon değişkenleri ve her panelin türü/veri kaynağı/gridPos/promQL hedefleri. Bilinmeyen eklenti panel türleri unsupportedPanelTypes içinde görünür.

grafana_list_folders

Parametre yok. Klasör ağacını döndürür.

grafana_list_folder_dashboards

  • folder_uid (string, required): Grafana klasörünün uid değeri.

Bu klasördeki panolar için {"dashboards":[…], "truncated":bool} döndürür (sayfalama ile en fazla 5.000).

grafana_list_datasources

Parametre yok. Veri kaynaklarının güvenli bir görünümünü döndürür (kimlik bilgisi alanları yoktur).


Test

Uygulama testlerini çalıştırmadan test goroutine analiz aracını çalıştırın:

make lint-test

Bu, Go'nun testinggoroutine analiz aracını tüm paketlerde, *_test.go dosyaları da dahil olmak üzere çalıştırır ve sonucu güvenli olmayan ve güvenli fixture'larla karşılaştırır. Her iki CI test iş akışı da go vet -testinggoroutine ./... komutunu ayrı bir adım olarak çalıştırır; böylece önbelleğe alınmış paket test sonuçları lint denetiminin atlanmasına yol açamaz.

Kök paket de analiz aracını test olarak çalıştırır. Bu denetimi önbelleğe almadan tüm test paketini çalıştırmak için go test -count=1 ./... kullanın: Go'nun test önbelleği, analiz aracı alt sürecinin okuduğu dahili paket kaynak dosyalarını izlemez. Düz bir go test ./..., bu dosyalar değiştikten sonra kök testin başarılı sonucunu yeniden kullanabilir.

testing.T veya testing.B üzerinde Fatal, Fatalf ve FailNow işlemleri üst test goroutine'inde çalışmalıdır. Worker'lar, üst testin doğrulayabilmesi için hataları geri göndermelidir:

errs := make(chan error, 1)
go func() { errs <- doWork() }()
if err := <-errs; err != nil {
    t.Fatal(err)
}

Analiz aracı, go func closure'larındaki doğrudan çağrıları yakalar; rastgele yardımcı çağrıların arkasına gizlenmiş doğrulamaları denetleyen genel bir yordamlar arası kontrol değildir. Entegrasyon testleri yalnızca TEST_REFRESH_TOKEN ayarlanmışsa çalışır.


MseeP.ai Security Assessment Badge