Last9
resmiGerç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?
-
Hizmet sağlığını incele —
get_service_summaryile istek sayıları, iş hacmi ve hata oranlarının sıralı bir filo özetini isteyin. -
Ham hizmet günlüklerini çek — Belirli bir hizmet için
get_service_logskullanarak önem düzeyine veya içerik metnine göre filtrelenmiş günlük satırlarını alın. -
Veritabanı performansını izle —
get_databasesve ilgili araçlarla veritabanlarını, yavaş sorguları ve sorgu desenlerini keşfedin. -
PromQL sorguları çalıştırın —
prometheus_range_queryveyaprometheus_instant_queryile herhangi bir metrik üzerinde aralık veya anlık sorgular yürütün. -
Değişiklikleri olaylarla ilişkilendirin —
get_change_eventsile üretim davranışını neyin değiştirdiğini anlamak için dağıtım ve yapılandırma değişikliği olaylarını getirin. -
Özel panoları yönetin —
list_dashboardsvecreate_dashboardile panoları programatik olarak listeleyin, oluşturun, güncelleyin veya doğrulayın.
Dokümantasyon
Last9 MCP Sunucusu

Yapay zeka ajanınız üretimde neyin bozuk olduğunu bilmiyor. Bu, bunu düzeltir.
Last9 MCP Sunucusu, Claude, Cursor, Windsurf ve MCP destekli diğer tüm yapay zeka asistanlarını doğrudan üretim gözlemlenebilirlik verilerinize bağlar — loglar, metrikler, izler, istisnalar, veritabanı sorguları, uyarılar ve dağıtımlar. Ajan tahmin etmeyi bırakır ve gerçek sinyali okumaya başlar.
30 Saniyede Başlayın (Barındırılan)
Kurulacak ikili dosya yok. Yönetilecek belirteç yok. Tek URL, tarayıcınızda OAuth, bitti.
Last9 URL'nizde kuruluş slug'ınızı 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'u seçin, kimlik doğrulayın. Bu kadar.
Cursor
Ayarlar > MCP > Yeni MCP Sunucusu Ekle:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Bağlan'a tıklayın, OAuth'u tamamlayın.
VS Code
v1.99+ gerektirir. Komut Paleti'ni açın → MCP: Sunucu Ekle, URL'yi yapıştırın, kimlik doğrulayın.
Veya doğrudan settings.json içinde:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Ayarlar > Cascade > MCP Pazar Yeri'ni Aç > dişli simgesi (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Masaüstü
Ayarlar > Bağlayıcılar > Özel bağlayıcı ekle. last9 olarak adlandırın, URL'yi yapıştırın, kimlik doğrulayın.
Claude organizasyonunuz için yönetici erişimi gerektirir.
Kendi Kendine Barındırılan (STDIO)
MCP istemciniz HTTP taşımasını desteklemediğinde veya sunucunun yerel olarak çalışmasına ihtiyaç duyduğunuzda bunu kullanın.
Kurulum
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
İkili sürümler (Windows / manuel):
GitHub Sürümleri adresinden indirin:
| Platform | Arş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 |
Yenileme Belirteci Alın
Yalnızca yöneticiler belirteç oluşturabilir.
- API Erişimi bölümüne gidin
- Yazma izinleriyle Belirteç Oluştur'a tıklayın
- 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>"
}
}
}
}
Bunu nereye yapıştırmalı:
| İstemci | Konum |
|---|---|
| Claude Web/Masaüstü | Ayarlar > Geliştirici > Yapılandırmayı Düzenle (claude_desktop_config.json) |
| Cursor | Ayarlar > Cursor Ayarları > MCP > Yeni Global MCP Sunucusu Ekle |
| Windsurf | Ayarlar > Cascade > MCP Pazar Yeri > dişli simgesi (mcp_config.json) |
| VS Code | settings.json içinde { "mcp": { "servers": { ... } } } ile 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 Sürümleri adresinden indirdikten sonra çıkarın ve tam yola işaret edin:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
NPM yolu Windows'ta daha kolaydır — yol yönetimi gerekmez.
Ortam Değişkenleri
| Değişken | Varsayılan | Açıklama |
|---|---|---|
LAST9_REFRESH_TOKEN | (zorunlu) | API Erişimi bölümünden yenileme belirteci |
LAST9_DATASOURCE | kuruluş varsayılanı | Veri kaynağı/küme adı — birden fazla Levitate kümeniz olduğunda kullanışlıdır |
LAST9_API_HOST | app.last9.io | API ana bilgisayarını geçersiz kıl |
LAST9_TOOLSETS | tüm araçlar | Virgülle ayrılmış araç setleri (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Takma ad: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Parçalı get_logs istekleri için maksimum giriş |
LAST9_USE_LOG_SEARCH_API | false | get_logs ve get_service_logs yanıtlamak için true ayarlayın, istemci tarafı parçalama yerine tek sunucu tarafı arama çağrısıyla |
LAST9_DEBUG_CHUNKING | false | get_logs, get_service_logs, get_traces için parça planlama ayrıntılarını günlüğe kaydetmek için true ayarlayın |
LAST9_DISABLE_TELEMETRY | true | Dahili 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 etkinleştirildiğinde) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP kimlik doğrulama başlıkları (yalnızca telemetri etkinleştirildiğinde) |
Neler Yapabilir
Hizmet Sağlığı
get_service_summary— Sıralanmış filo(service, env)satırları: aralık istek sayısı, iş hacmi_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ı buradanenvgerektirirget_service_performance_details— Tam döküm: iş hacmi, hata oranı, p50/p90/p95/ort/maks, apdex, kullanılabilirlikget_service_operations_summary— HTTP uç noktaları, DB çağrıları, mesajlaşma, HTTP istemcileri tarafından gruplandırılmış işlemlerget_service_dependency_graph— Yukarı/akış aşağı/altyapı için iş hacmi, gecikme ve hata oranlarıyla bağımlılık haritasıget_apm_service_deviations— Geçerli pencereyi eşit süreli bir taban çizgisiyle karşılaştırın: gerilemeler/iyileştirmeler, Apdex mutabakatı ve terminal sonucu (filo veya tek hizmet)get_exceptions— Hizmet ve yayılma filtreleriyle sunucu tarafı istisnalar
Veritabanı Gözlemlenebilirliği
Doğrudan veritabanı performansınıza giden, OpenTelemetry iz yayılımlarından ve izlerin olmadığı yerlerde CloudWatch gibi altyapı metriklerinden türetilen dört araç. Zaten OTel kullanıyorsanız ekstra enstrümantasyon gerekmez.
get_databases— Altyapınızdaki tüm veritabanlarını keşfedin: DB türü, ana bilgisayar, iş hacmi (sorgu/dk), p95 gecikmesi, hata oranı, bağımlı hizmet sayısı. Ayrıca iz enstrümantasyonu gerektirmeden CloudWatch gibi altyapı metriklerinden veritabanlarını keşfeder — bu satırlar iz metrikleri yerine etkinlik değeri taşırget_database_slow_queries— Süreye göre sıralanmış gerçek en yavaş sorgu yürütmeleri, tam izlere inmek için iz kimlikleriyleget_database_queries— Sorgu desenleri ve toplamalar: bir sorgunun ne sıklıkta çalıştığı, ortalama/p95 süresi, hata oranıget_database_server_metrics— DB ana bilgisayarından 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 olan diğer her şeyi destekler — ayrıca satırları iz metrikleri yerine etkinlik değeri taşıyan CloudWatch gibi altyapı metriklerinden keşfedilen veritabanları.
Prometheus / PromQL
prometheus_range_query— Herhangi bir metrik üzerinde PromQL aralık sorgularıprometheus_instant_query— Anlık sorgular;avg_over_time,sum_over_timegibi özet işlevlerini kullanınprometheus_label_values— Belirli bir seri için etiket değerleriprometheus_labels— Bir seri için kullanılabilir tüm etiketler
LAST9_DATASOURCE ayarlayarak bunları varsayılandan farklı bir veri kaynağına/kümeye yönlendirin.
Loglar
get_logs— Tam JSON ardışık düzen log sorguları (toplamalar, filtreler, alan çıkarma)get_service_logs— Bir hizmet için ham log satırları, önem düzeyine ve gövde içeriğine göre filtrelenebilirget_log_attributes— Bir zaman penceresi için log şemasındaki özniteliklerin genel kataloğuget_log_attributes_for_pipeline— Devam eden bir ardışık düzen için gerçekte mevcut log alanları (kapsamlı keşif), her biri tamfilter_fieldileget_drop_rules— Last9 Kontrol Düzlemi bölümünden log bırakma kurallarıadd_drop_rule— Log hacmini kaynağında kesmek için yeni bir bırakma kuralı oluşturun
İzler
get_traces— Geniş aramalar ve toplamalar için JSON ardışık düzen iz sorgularıget_service_traces— Tam iz kimliğine veya hizmet adına göre izler. Bir iz kimliğiniz olduğunda bunu kullanın — daha hızlıdırget_trace_attributes— İz şemasındaki özniteliklerin genel kataloğuget_trace_attributes_for_pipeline— Devam eden bir ardışık düzen için gerçekte mevcut öznitelikler (kapsamlı keşif), her biri tamfilter_fieldileget_trace_attribute_values— Bir iz özniteliği için farklı değerler, isteğe bağlı olarak bir ardışık düzene kapsamlandırılmışget_trace_attribute_deviations— İki sınırlı yayılma kohortu arasında farklılık gösteren öznitelik değerlerini sıralar (yavaş vs hızlı, hata vs hatasız veya iki zaman penceresi). Korelasyon, neden değilget_trace_waterfall— Aralık-birleşim öz süresi, en yavaş yayılımlar ve grafik uyarılarıyla tek bir tam iz, üst/alt şelale olarak
Değişiklik Olayları ve Uyarılar
get_change_events— Dağıtımlar, yapılandırma değişiklikleri, geri almalar. Olayları neyin değiştiğiyle ilişkilendiringet_alert_groups— Meta veri etiketleri, ekip, katman ve kural sayılarıyla yapılandırılmış Compass uyarı grupları — sıfır kuralı olan gruplar ve tetiklenmeyen gruplar dahilget_alert_config— Uyarı kuralı yapılandırmaları — ada, önem düzeyine, türe, etiketlere göre aranabilirget_alerts— Bir zaman penceresi içinde şu anda tetiklenen uyarılarget_alert_rule_state— Bir zaman aralığı boyunca uyarı kuralı başına tarihsel tetiklenme durumu (1/0),rule_idile gruplandırılmış. Uyarı grubuna, kural adına, etiket filtrelerine ve duruma göre filtrelenebilir.get_notification_channels— Yapılandırılmış bildirim kanalları (Slack, PagerDuty, e-posta vb.)
Özel Panolar
list_dashboards— Kuruluşunuzdaki tüm özel panolar: kimlikler, adlar ve meta verilerget_dashboard— Kimliğe göre tam pano tanımı, paneller ve sorgular dahilvalidate_dashboard— Kayıtlı bir pano kimliği veya satır içidashboard_definitionüzerinde ≤24 saatlik bir pencere için salt okunur lint + yürüt + sınıflandır. Asla pano oluşturmaz veya güncellemezcreate_dashboard— Bir kez tamamen yeni bir özel pano oluşturun (paneller, sorgular, meta veriler). Kimlik döndürüldükten sonraupdate_dashboardile iyileştirin.update_dashboard— Kimliğe göre mevcut bir panoyu iyileştirin (tam değiştirme; salt okunur sistem panoları hata döndürür)delete_dashboard— Kimliğe göre özel bir panoyu silinlist_dashboard_snapshots— Bir pano için dondurulmuş zaman noktası anlık görüntüleri (yalnızca meta veriler)get_dashboard_snapshot— RCA / paylaşılabilir görünümler için panel verileri dahil tam dondurulmuş anlık görüntüdelete_dashboard_snapshot— Kimliğe göre dondurulmuş bir anlık görüntüyü silin
Sürekli Profil Oluşturma
Kuruluş için sürekli profil oluşturmanın etkinleştirilmesini gerektirir. Önce get_profile_services ile hizmetleri keşfedin, ardından bir alev grafiği veya sıralanmış işlevler çekin.
get_profile_services— Pencerede profil oluşturma verisi olan hizmetler (sorgulamadan önce dizin)get_flamegraph— Tek bir hizmet için iç içe alev grafiği ağacı (cpuvarsayılan; ayrıcaalloc,wall)get_top_functions— Tek bir hizmet için en sıcak işlevlerin öz örnek sıralamasıget_profile_summary— Tek bir hizmet için profilin kısa doğal dil ön değerlendirmesi
Grafana Panoları
Kuruluşun Grafana örneğine karşı salt okunur araçlar (Last9'un Grafana proxy'si aracılığıyla). Kimlik bilgisi alanları modele asla döndürülmez. LAST9_TOOLSETS=grafana ile etkinleştirin (veya tüm araçlar için araç setlerini ayarsız bırakın).
grafana_search_dashboards— Başlık alt dizgisine göre panoları ara (sayfalanmış; sınıra ulaşıldığındatruncated: true)grafana_get_dashboard— uid ile pano özeti (paneller, değişkenler, PromQL hedefleri); ham Grafana JSON içinfull_json=truegrafana_list_folders— Klasör ağacıgrafana_list_folder_dashboards— Tek klasördeki panolar (sayfalanmış)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, bu, kataloğunuzdan en yakın eşleşmeleri döndürür (servisler, ortamlar, ana bilgisayarlar, veritabanları, K8s dağıtımları/ad alanları, işler). Benzerlik puanlarıyla en fazla 3 öneri. Sunucu, bir ad araması boş döndüğünde çoğu araçtan önce bunu otomatik olarak çağırır.
Servis Profili
get_service_profile— Bir servisin telemetrisinin gerçekte neye benzediği, sorgulamadan önce: hangi sinyaller mevcut, dil ve çalışma zamanı, dağıtım ortamları, günlüklerinin şekli ve geçerli olduğunda önerilen bir alım düzeltmesi. Aracının, bir serviste iz yoksa iz araçlarını atlamasını veSeverityTextboş olduğunda günlük gövdesinden önem düzeyini ayrıştırmasını sağlar; böylece filtreleyip hiçbir şey bulamaz.
Nasıl Çalışır
Her yanıtta derin bağlantılar. Her araç, deep_link alanı döndürür — bu sorgu ve zaman aralığı için Last9 panosuna doğrudan bir URL. Aracı size bağlantıyı verebilir; siz tıklarsınız; oradasınız.
Araç setleri. Varsayılan olarak sunucu her aracı kullanıma sunar. Yalnızca araştırma (günlükler/izler/metrikler/profiller) gerektiren otomasyon ana bilgisayarları, istemci tarafında toplu devre dışı bırakma olmadan tools/list küçük kalsın diye LAST9_TOOLSETS=investigate (veya --toolsets=investigate geçirin) ayarlayabilir. Adlandırılmış paketler: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Bilinmeyen adlar hızla başarısız olur. metrics paketi tek başına list_datasources veya did_you_mean içermez — bu keşif yardımcılarına ihtiyacınız olduğunda investigate (veya araç setlerini birleştirin) kullanın.
Araç referans kaynakları. Uzun logjson/tracejson/service-logs/metrics kılavuzları MCP kaynaklarıdır (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation), her zaman açık araç açıklama metni değil. Kritik sorgu kuralları araç açıklamasında kalır; böylece resources/read hiç çağırmayan aracılar yine de doğru yapılandırma rehberliği 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 enjekte edilmez.
Parçalanmış büyük sonuçlar. get_logs ve get_traces, büyük sonuç kümelerini kırpmak yerine parçalama yoluyla 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 testi, 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. Bir initialize el sıkışması ve Mcp-Session-Id başlığı isteğe bağlıdır — bunları gönderen istemciler yine de çalışır (başlık kabul edilir ve yok sayılır) ve istemciler doğrudan tools/list / tools/call atlayabilir. 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
}
}
}'
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ım için barındırılan HTTP uç noktası daha kolaydır.
Araç Referansı
Tüm parametreler, zaman giriş standartları ve ayrıntılar
Zaman Girişi
- Mutlak zamanlar (
start_time_iso/end_time_isoveyatime_iso),lookback_minutesüzerinde önceliklidir. - Göreli pencereler için:
lookback_minuteskullanın. - Mutlak pencereler için: RFC3339/ISO8601 kullanın —
2026-02-09T15:04:05Z. - Eski
YYYY-MM-DD HH:MM:SSyalnızca uyumluluk için kabul edilir.
get_exceptions
limit(tamsayı, isteğe bağlı): Maksimum istisna. 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ı): Servise 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 normal ifadesi. Varsayılan:.*. Tam eşleşme çapalar gerektirir (örn.^prod$).sort_by(dize, isteğe bağlı):request_count(varsayılan),throughput_rpm,http_4xx_count,http_5xx_countveyagrpc_error_count.limit(tamsayı, isteğe bağlı): Maksimum sıralanmış satır. Atla veya 0, 10 anlamına gelir; 100'ün üzerindeki değerler 100'e kırpılır.
get_service_environments
start_time_iso/end_time_iso(dize, isteğe bağlı)
Diğer tüm APM araçları bir
envdeğeri gerektirir. Bu boş dönerse""kullanın.
get_service_performance_details
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_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(dize, isteğe bağlı): Filo kapsamı için atla; bir servis ve işlem korelasyonları için sağla.lookback_minutes(tamsayı, isteğe bağlı): Geçerli pencere. Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı): Açık geçerli pencere.baseline_start_time_iso/baseline_end_time_iso(dize, isteğe bağlı): Açık taban çizgisi. Varsayılan, hemen önceki eşit süreli penceredir.datasource(dize, isteğe bağlı): Karşılaştırmayı tek bir veri kaynağıyla sınırla.env(dize, isteğe bağlı): Varsayılan:prod.max_services/max_operations(tamsayı, isteğe bağlı): Varsayılan 10, her biri maksimum 10.
get_databases
env(dize, isteğe bağlı): Ortama göre filtrele. Normal ifade kabul eder. Varsayılan: tümü.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60. Pencere 7 günü aşamaz.start_time_iso/end_time_iso(dize, isteğe bağlı)
get_database_slow_queries
db_system(dize, isteğe bağlı): örn.postgresql,mysql,mongodb,redis.host(dize, isteğe bağlı): Veritabanı ana bilgisayarı (net_peer_name).service_name(dize, isteğe bağlı): Çağıran servis adı.env(dize, isteğe bağlı)min_duration_ms(kayan nokta, isteğe bağlı): ms cinsinden minimum sorgu süresi.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Varsayılan: 20.
get_database_queries
db_system(dize, isteğe bağlı)host(dize, isteğe bağlı)service_name(dize, isteğe bağlı)env(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ı)limit(tamsayı, isteğe bağlı): Varsayılan: 20.
get_database_server_metrics
db_system(dize, zorunlu): örn.postgresql,mysql,mongodb,redis,aerospike.host(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ı)
prometheus_range_query
query(dize, zorunlu): PromQL sorgusu.start_time_iso/end_time_iso(dize, isteğe bağlı): Varsayılan: son 60 dk.lookback_minutes(kayan nokta, isteğe bağlı): Varsayılan: 60.
prometheus_instant_query
query(dize, zorunlu)time_iso(dize, isteğe bağlı): Varsayılan: şimdi.lookback_minutes(kayan nokta, isteğe bağlı)
prometheus_label_values
match_query(dize, isteğe bağlı): PromQL filtresi.label(dize, zorunlu): Etiket adı.start_time_iso/end_time_iso(dize, isteğe bağlı)
prometheus_labels
match_query(dize, isteğe bağlı): PromQL filtresi.start_time_iso/end_time_iso(dize, isteğe bağlı)
get_logs
logjson_query(dizi, zorunlu): JSON ardışık düzen sorgusu.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 5.start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Sunucu varsayılanı: 5000.index(dize, isteğe bağlı):physical_index:<name>veyarehydration_index:<block_name>.
Günlük tabanlı servis envanteri için önce physical_index_service_count sorgulayın:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
service_name öğesini ServiceName olarak, mevcutsa env öğesini ortam olarak ve name öğesini fiziksel dizin adı olarak kullanın. name="default" ise, index atlayın; kullanıcı tarafından seçilen varsayılan olmayan bir fiziksel dizin için index: "physical_index:<name>" geçirin. Arka uç açık fiziksel dizin filtrelemeyi reddederse, index olmadan yeniden deneyin ve açık fiziksel dizin filtrelemenin bu arka uç için kullanılamadığını bildirin.
get_service_logs
service_name(dize, zorunlu)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.limit(tamsayı, isteğe bağlı): Varsayılan: 20.env(dize, isteğe bağlı)severity_filters(dizi, isteğe bağlı): örn.["error", "warn"]. VEYA mantığı.body_filters(dizi, isteğe bağlı): örn.["timeout", "failed"]. VEYA mantığı.start_time_iso/end_time_iso(dize, isteğe bağlı)index(dize, isteğe bağlı)
Birden çok filtre türü VE ile birleşir. Her dizi dahili olarak VEYA kullanır.
Önce geniş toplu sayımlar için get_logs kullanın; get_service_logs yalnızca bir servis/ortam/dizin ve küçük bir örnek kümesine daralttıktan sonra kullanın.
get_log_attributes
lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)index(dize, isteğe bağlı)
get_log_attributes_for_pipeline
pipeline(dizi, zorunlu): Keşfi kapsamlamak için önceki filtre aşamaları, örn.[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)index(dize, isteğe bağlı)
get_drop_rules
Parametre yok. Bırakma kurallarını GET /otel_settings/drop?region=... aracılığıyla listeler.
add_drop_rule
name(dize, zorunlu)filters(dizi, zorunlu): Her filtre:key,value,operator(equals/not_equals),conjunction(and).- Filtre anahtarları
attributes["key_name"]veyaresource.attributes["key_name"]kullanmalıdır (Last9 API'si tarafından zorunlu kılınır). - Kuralı
POST /otel_settings/drop?region=...&cluster_id=...aracılığıyla oluşturur.
get_traces
Geniş aramalar ve toplamalar için kullanın. Tam iz kimliği araması için get_service_traces kullanın.
tracejson_query(dizi, zorunlu)start_time_iso/end_time_iso(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.limit(tamsayı, isteğe bağlı): Varsayılan: 5000.
get_service_traces
trace_id veya service_name öğelerinden tam olarak biri zorunludur.
trace_id(string, isteğe bağlı): Varsayılan geriye bakış: 72 saat.service_name(string, isteğe bağlı): Varsayılan geriye bakış: 60 dakika.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şfi kapsamlandırmak için önceki filtre aşamaları, örn.[{"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_attributeskaynağından öznitelik adı (örn.resource_departmentveyaattributes['http.method']).pipeline(array, isteğe bağlı): Değerleri kapsamlandırmak için ö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ı): Tarihsel RFC3339 sınırları;lookback_minutesüzerinde önceliklidir.region(string, isteğe bağlı)
get_trace_attribute_deviations
comparison_mode(string, zorunlu):latency,errorsveyatime.service_name(string, zorunlu)environment(string, zorunlu): Tamdeployment.environmentdeğeri.operation(string, isteğe bağlı)filters(array, isteğe bağlı): Trace JSON filtre koşulları.candidate_attributes(array, isteğe bağlı): En fazla 8; sınırlı keşif için atlayın.latency_threshold_ms(number, isteğe bağlı):latencymodu için zorunlu; diğer modlar için reddedilir.start_time_iso/end_time_iso(string, isteğe bağlı)lookback_minutes(integer, isteğe bağlı): Varsayılan: 15. Maksimum: 15.baseline_start_time_iso/baseline_end_time_iso(string, isteğe bağlı):timemodu için zorunlu; hedef pencereyle çakışmayan ve süresi eşit olmalıdır.minimum_cohort_size(integer, isteğe bağlı): Varsayılan: 100. Minimum: 20.minimum_value_support(integer, isteğe bağlı): Varsayılan: 20. Minimum: 10.limit(integer, isteğe bağlı): Varsayılan: 10. Maksimum: 10.
Eşlik eden arka uç yeteneğinin etkinleştirilmesini gerektirir.
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 o span için öznitelikleri, olayları ve bağlantıları döndürür.max_spans(integer, isteğe bağlı): Varsayılan: 500. Maksimum: 1000.
Bir investigation-evidence/v1 zarfı döndürür; waterfall data altındadır.
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ı): Önce bunu kullanmadan çağırın;available_event_namesalmak için.
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ı 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 birmetadata.labelsçiftinde tam büyük/küçük harfe duyarsız eşleşme — hem anahtar hem de değer.
{"count":N,"groups":[...]}, id, name, type, entity_class, team, tier, metadata.labels ve kural sayılarıyla kompakt JSON döndürür. Boş team / labels, ayarlanmamış anlamına gelir.
get_alert_config
search_term(string, isteğe bağlı): Ad, grup, veri kaynağı, etiketler arasında serbest metin araması.rule_name(string, isteğe bağlı)severity(string, isteğe bağlı)rule_type(string, isteğe bağlı):staticveyaanomaly.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 (VE mantığı).
get_alerts
time_iso(string, isteğe bağlı): RFC3339 biçiminde değerlendirme zamanı.window(integer, isteğe bağlı): Saniye cinsinden geriye bakış. 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, zorunlu): Aralığın Unix epoch başlangıcı (dahil).end_time(integer, zorunlu): Aralığın Unix epoch sonu (dahil).step(integer, zorunlu): Örnekler arasındaki saniye cinsinden çözünürlük.((end_time - start_time) / step + 1)örnek sayısı 100 ile sınırlıdı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ında regex filtresi.alert_group_name(string, isteğe bağlı): Uyarı grubu adında regex filtresi.label_filters(string, isteğe bağlı): Virgülle ayrılmışkey=valueetiket filtreleri.state(string, isteğe bağlı): Duruma göre filtrele (örn.firing).
rule_id -> [{timestamp, is_firing}] JSON haritası döndürür. Bir kuralın yukarı akış yanıtında bulunmadığı bir zaman damgası is_firing=0 olarak raporlanır — bu, "tetiklenmiş olarak gözlemlenmedi" anlamına gelir, doğrulanmış normal bir durum değil.
get_notification_channels
Parametre yok. Yapılandırılmış tüm bildirim kanallarını döndürür (Slack, PagerDuty, e-posta, webhook'lar vb.).
did_you_mean
query(string, zorunlu): Aranacak ad — kısmi, yanlış yazılmış veya kısaltılmış.type(string, isteğe bağlı): Varlık türüyle sınırla:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Benzerlik puanlarıyla en fazla 3 yakın eşleşme döndürür. Varlık adının belirsiz olduğu herhangi bir araç çağrısından önce bunu kullanın. Önceki bir çağrı boş sonuç döndürdüyse, yeniden denemeden önce bunu deneyin.
get_service_profile
service_name(string, zorunlu): Telemetri profili türetilecek hizmet.datasource(string, isteğe bağlı): Veri kaynağı adı. Varsayılan için atlayın.
Kısa bir araştırma özeti ve ardından tam profil ham JSON olarak döndürülür: sinyal varlığı (logs/traces/metrics olarak present, absent veya unknown), dil ve çalışma zamanı, dağıtım ortamları, log signal_shape (log_format, severity_set, level_field) ve geçerli olduğunda önerilen bir alım düzeltmesi. Yukarı akıştan türetilir ve ~15 dakikalık TTL ile önbelleğe alınır.
Araç seçiminin hizmetin gerçek telemetrisiyle eşleşmesi için herhangi bir hizmet kapsamlı araştırmadan önce çağırın — traces absent olduğunda trace araçlarını atlayın ve severity_set none veya partial olduğunda, severity_filters kullanmak yerine log gövdesindeki level_field alanından önem düzeyini ayrıştırın. metrics her zaman unknown'dir ve dependencies v1'de doldurulmamıştır. logs ve traces her ikisi de absent olduğunda, hizmetin izlenmediği sonucuna varmadan önce adı did_you_mean ile doğrulayın.
list_dashboards
Parametre yok. Kuruluştaki tüm özel panoları id, name ve meta verilerle birlikte bir JSON dizisi olarak döndürür.
get_dashboard
id(string, zorunlu): Pano UUID'si.region(string, isteğe bağlı): Panel sorgu popülasyonu için bölge. Varsayılan olarak yapılandırılmış veri kaynağı bölgesi.
validate_dashboard
Salt okunur. Asla pano oluşturmaz veya güncellemez. dashboard_id veya dashboard_definition alanlarından 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 kuru çalıştırma).start_time_iso/end_time_iso(string, isteğe bağlı): Doğrulama penceresi (RFC3339). ≤ 24 saat olmalıdır.region(string, isteğe bağlı): Panel sorgu yürütme bölgesi.
dashboard_validation/v1 döndürür: panel başına lint + yürütme sınıflandırması (data / no_data / invalid / error). 1. gün boş sonuçları, tanılama araştırmaları olmadan valid_no_data olarak sınıflandırılır.
create_dashboard
Yalnızca yeni oluşturma. Bu çağrı dashboard.id döndürdükten sonra, update_dashboard ile iyileştirin — panel eklemek, kırpmak veya düzeltmek için tekrar oluşturmayın.
dashboard(object, zorunlu):namevepanels[]içeren pano tanımı. Her panelname,version,layout(x,y,w,h),visualization.typevequeries[]gerektirir.metadata(object, isteğe bağlı): Pano meta verileri —_categoryve_typealanları (örn.{"_category":"custom","_type":"metrics"}).
update_dashboard
Oluşturduktan sonra bunu tercih edin. Kimliğe göre tam değiştirme (oluşturma ile aynı gövde).
id(string, zorunlu): Güncellenecek pano UUID'si.dashboard(object, zorunlu): Tam değiştirme pano gövdesi (oluşturma ile aynı şekil).metadata(object, isteğe bağlı): Değiştirme meta verileri. Salt okunur sistem panoları 403 hatası döndürür.
delete_dashboard
id(string, zorunlu): Silinecek pano UUID'si. Salt okunur sistem panoları silinemez.
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 tam dondurulmuş anlık görüntüyü 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ı): Pencere; geriye bakış veya açık ISO sınırlarını tercih edin (varsayılan 60 dakika).region(string, isteğe bağlı): Bölge geçersiz kılma.
Pencerede profil verisi olan hizmetleri döndürür. get_flamegraph / get_top_functions / get_profile_summary öncesinde bunu çağırın.
get_flamegraph
service(string, zorunlu):get_profile_serviceskaynağından hizmet adı.profile_type(string, isteğe bağlı):cpu(varsayılan),allocveyawall. Pencereleri 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ı): Maksimum toplanmış yığın satırı (varsayılan 1000, maksimum 10000).lookback_minutes/start_time_iso/end_time_iso/region(isteğe bağlı).
İç içe bir flamegraph 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. Kısaltılmış olabilir; truncated kontrol edin.
get_profile_summary
get_flamegraph ile aynı filtreler. Hizmet için profilin kısa bir doğal dil triyajını döndürür.
grafana_search_dashboards
query(string, isteğe bağlı): Başlık alt dizesi. Boş, geniş listeler (5.000 satır sınırına tabidir).
{"dashboards":[…], "truncated":bool} ile uid, title, uri, url, type, tags döndürür. uid ile grafana_get_dashboard 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 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ürleriunsupportedPanelTypesiç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, zorunlu): Grafana klasör uid'si.
Bu klasördeki panolar için {"dashboards":[…], "truncated":bool} döndürür (5.000'e kadar sayfalanmış).
grafana_list_datasources
Parametre yok. Veri kaynaklarının güvenli bir projeksiyonunu döndürür (kimlik bilgisi alanları yok).
Test
Entegrasyon test kurulumu ve talimatları için TESTING.md dosyasına bakın.
