Live-Debug Agent Skill, iş kodunu değiştirmeden, yeni bir sürüm yayınlamadan veya işlemi yeniden başlatmadan Application Real-Time Monitoring Service (ARMS) bağlantılı Python uygulamalarında çalışma zamanı tanılaması yapmanıza olanak tanır. Tanılama amacınızı doğal dilde belirtirsiniz; AI Agent, agent oluşturma, Simple Log Service (SLS) aracılığıyla sonuç sorgulama ve Cloud Monitor (CMS) ServiceTask API üzerinden agent temizleme işlemlerini otomatik olarak koordine eder.
Hedeflenen yöntem çağrıldığında dinamik günlükler, yöntem anlık görüntüleri, geçici ölçümler ve izleme bilgilerini toplayabilirsiniz.
AI Agent'lar büyük dil modelleriyle çalıştırılır ve hedef modül veya yöntem tanımlamasında yanlılık ya da hatalı ifadeler gibi riskler içerebilir. Bir agent oluşturmadan önce, Agent tarafından gösterilen yapılandırmayı ve hedef kaynağı dikkatlice doğrulayın. Üretim ortamında kullanmadan önce agent'ın performans ve kararlılık üzerindeki etkisini test ortamında kontrol edin. Tanılama işlemi tamamlandığında, kalıntı oluşmasını önlemek için agent'ı hemen silin.
Senaryolar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Desteklenen tanılama yetenekleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İş akışı
Skill'in bir tanılama oturumunu nasıl koordine ettiği aşağıda açıklanmıştır:
Tanılama gereksinimini (hangi işlevin gözlemleneceği, neyin yakalanacağı ve isteğe bağlı filtre koşulları ile süre) belirtirsiniz.
Agent, komut satırı arabirimi (CLI) ortamını kontrol eder ve
.arms-infodosyasını okur (dosya eksikse sorar).Agent bir agent yapılandırması oluşturur, görevi yaratır ve bir
taskIddöndürür.İlgili hizmet trafiğini tetiklersiniz.
Agent, kurulum durumunu ve toplama sonuçlarını sorgular ve yorumlar.
Tanılamanın tamamlandığını onayladığınızda, Agent agent'ı siler (veya tüm agent'ları temizler).
Ön koşullar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. Adım: Alibaba Cloud CLI'yı yükleme ve yapılandırma
Live-Debug Skill, CMS'i (görevleri oluşturmak, listelemek ve silmek için aliyun cms2 apm service-task) ve Simple Log Service'i (toplama sonuçlarını sorgulamak için) aliyun CLI aracılığıyla çağırır. Önce CLI kurulumunu ve kimlik bilgisi yapılandırmasını tamamlayın.
CLI'yı yükleme
CLI yüklü değilse Alibaba Cloud CLI'yı Yükleme konusuna bakın ve işletim sisteminiz (Linux, macOS veya Windows) için uygun kurulum yöntemini seçin.
Kurulumdan sonra CLI'nın kullanılabilir olduğunu doğrulayın:
aliyun version
Erişim kimlik bilgilerini yapılandırma
aliyun configure
AccessKey ID, AccessKey secret ve varsayılan bölgeyi istendiğinde girin. Bir RAM kullanıcı kullanın ve hedef Simple Log Service projesi üzerinde CMS ServiceTask ile okuma/yazma/sorgu izinlerini verin. Daha fazla bilgi için Kimlik bilgilerini yapılandırma ve yönetme konusuna bakın.
Live-Debug sonuçları sorgularken .arms-info dosyasından alınan regionId değerini açıkça belirtir. Varsayılan bölgeyi aliyun configure içindeki tek kaynak olarak kabul etmeyin. Varsayılan bölge Simple Log Service projesiyle eşleşmezse ProjectNotExist hatası oluşabilir.
CMS CLI'yı (aliyuncms2) yükleme ve kullanılabilirliği doğrulama
CMS ServiceTask yetenekleri aliyuncms2 ikili dosyası tarafından sağlanır. aliyuncms2 dosyasını edinin ve ~/.aliyun/ dizinine (veya PATH'e) yerleştirin. Ardından aliyun cms2 üzerinden çağırabilirsiniz; kimlik bilgileri aliyun configure yapılandırmasından yeniden kullanılır.
# Verify CMS ServiceTask capabilities
aliyun cms2 apm service-task --help
# Verify SLS query availability
aliyun sls --help
Eğer cms2 kullanılamıyorsa aliyuncms2 ikili dosyasının ~/.aliyun/ dizininde (veya PATH'te) bulunduğundan ve yürütme iznine sahip olduğundan emin olun:
ls -l ~/.aliyun/aliyuncms2
chmod +x ~/.aliyun/aliyuncms2
aliyun cms2 apm service-task --help
Sorun devam ederse Alibaba Cloud CLI'yı yükseltip yeniden deneyin:
aliyun upgrade -y
2. Adım: Live-Debug agent skill'i yükleme
Live-Debug Agent Skill'i edinin ve tek tıklamayla alibabacloud-livedebug bağlantısı üzerinden AI Agent'ınıza yükleyin.
Skill'i QoderWork, Cursor, Claude Code veya başka bir ortama yüklemek için AI aracınızın talimatlarını izleyin.
Yüklemeden sonra AI asistanını yeniden başlatın veya bir konuşma yoluyla Skill'in yüklendiğini onaylayın (örneğin, "Live-Debug Skill'i yükledin mi?" diye sorun).
Aşağıdaki bölümlerde ${LIVE_DEBUG_SKILL_ROOT} ifadesi Skill kurulum kök dizinini temsil eder. Yardımcı betikler ${LIVE_DEBUG_SKILL_ROOT}/scripts/ konumunda bulunur.
3. Adım: Uygulama bağlantı bilgilerini hazırlama
Agent'ın otomatik olarak okuyabilmesi için tanılanacak projenin kök dizininde .arms-info dosyasını (key=value biçiminde) oluşturun. Aynı bilgileri konuşma sırasında doğrudan da sağlayabilirsiniz.
workspace=default-cms-xxxxxxxxxxxxxxxxxx-cn-hangzhou
serviceId=ggxw4lnjuz@f2fd3a6265a254a052afb
regionId=cn-hangzhou
targetIp=*
slsProject=proj-xtrace-xxxxxxxxxxxxxxxxxxxxxx-cn-hangzhou
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Adım: Doğal dil kullanarak tanılama başlatma
Proje kodunuzu Qoder gibi bir AI Kodlama aracıyla açmanız, çevrimiçi uygulamanıza karşılık gelen dalı seçmeniz ve ardından AI Kodlama aracında doğal dil kullanarak tanılama başlatmanız önerilir. Tanılama gereksinimini açıklarken aşağıdaki bilgileri dahil edin (Agent eksik olup olmadığını soracaktır):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yalnızca |
|
|
|
|
Görev oluşturulduktan sonra Agent bir taskId döndürür. Hedef modülün, yöntemin, location alanının, şablonun veya capture alanlarının doğru olduğunu doğrulamak için Referans yapılandırmalar bölümündeki referans yapılandırmalarla karşılaştırın ve ardından hizmet trafiğini tetikleyin.
5. Adım: Trafiği tetikleme, sonuçları doğrulama ve temizleme
Yapılandırmayı doğrulayın: Agent tarafından gönderilen
taskConfigdeğerinin hedef konum ve toplama içeriği açısından referans yapılandırmalarla eşleştiğini onaylayın.Hizmet trafiğini tetikleyin: Hedef kod yoluna ulaşan bir arayüze bir veya daha fazla istek gönderin.
-
Sonuçları sorgulayın: Agent'a şunu söyleyin:
Query the collection results for the taskId from just now, and help me interpret whether the agent is installed and what was captured.Görev Durumu: Agent'ın başarıyla kurulup kurulmadığı, huni ölçümleri ve diğer durum bilgileri.
Yakalama Sonuçları: Günlükler ve anlık görüntüler gibi fiilen toplanan içerik.
-
Temizleme (bu adımı her zaman gerçekleştirin):
Delete the agent from just now.Clear all Live-Debug agents for the current service.Show me what Live-Debug agents are still attached to the current service.
Referans yapılandırmalar
Agent'ın oluşturduğu taskConfig değerini doğrulamak için aşağıdaki referans yapılandırmaları kullanın. Her alt bölüm, Desteklenen tanılama yetenekleri tablosundaki bir agent türüne karşılık gelir.
Dinamik günlük (LOG)
Örnek ifade:
Use the /alibabacloud-livedebug Skill to add a dynamic log at the exit of OrderService.create_order in app.service.order, print order_id, amount, return value, and latency. Keep it for 30 minutes.
Referans yapılandırma:taskType = live_debug_log_probe
{
"probeType": "LOG",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "exit",
"instanceIds": ["*"]
},
"action": {
"type": "LOG",
"template": "create_order id={order_id} amount={amount} ret={@return} cost={@duration}ms"
},
"ttl": "30m",
"captureCount": 100
}
Koşullu satır düzeyi:
Add a log at line 42 of app/service/order.py. Only output the order ID and amount when amount >= 1000.
Referans yapılandırma:taskType = live_debug_log_probe
{
"probeType": "LOG",
"language": "python",
"target": {
"sourceFile": "app/service/order.py",
"location": "line:42",
"instanceIds": ["*"]
},
"trigger": {
"condition": "amount >= 1000"
},
"action": {
"type": "LOG",
"template": "big order id={order_id} amount={amount}"
},
"ttl": "30m"
}
Yöntem anlık görüntüsü (SNAPSHOT)
Örnek ifade:
Use the /alibabacloud-livedebug Skill to take a snapshot at the exit of OrderService.create_order. Capture input parameters, local variables, return value, and call stack. Capture up to 20 times.
Referans yapılandırma:taskType = live_debug_snapshot_probe
{
"probeType": "SNAPSHOT",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "exit",
"instanceIds": ["*"]
},
"action": {
"type": "SNAPSHOT",
"capture": ["ARGS", "LOCALS", "RETURN", "STACK"],
"captureConfig": {
"maxDepth": 3,
"maxCollectionSize": 100,
"maxStringLength": 1024
}
},
"ttl": "30m",
"captureCount": 20
}
Özel alanlarla koşullu filtreleme:
Take a snapshot at the exit of create_order. Trigger only when the return value is empty or the amount is greater than 10000. Focus on order_id, amount * count, self.user_id, and the return value.
Referans yapılandırma:taskType = live_debug_snapshot_probe
{
"probeType": "SNAPSHOT",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "exit",
"instanceIds": ["*"]
},
"trigger": {
"condition": "@return is None or amount > 10000"
},
"action": {
"type": "SNAPSHOT",
"capture": ["ARGS"],
"captureExpressions": [
"order_id",
"amount * count",
"self.user_id",
"@return"
]
},
"ttl": "30m",
"captureCount": 50
}
Özel durum yakalama:
Capture a snapshot when PaymentService.process_payment throws an exception. Include input parameters, exception information, and call stack. Keep it for 2 hours.
Referans yapılandırma:taskType = live_debug_snapshot_probe
{
"probeType": "SNAPSHOT",
"language": "python",
"target": {
"typeName": "app.service.payment",
"methodName": "PaymentService.process_payment",
"location": "exception",
"instanceIds": ["*"]
},
"action": {
"type": "SNAPSHOT",
"capture": ["ARGS", "EXCEPTION", "STACK", "LOCALS"]
},
"ttl": "2h",
"captureCount": 100
}
Dinamik ölçüm (METRIC)
Örnek ifade:
Use the /alibabacloud-livedebug Skill to add an amount histogram metric to create_order. Include a tag indicating whether the user is a VIP. Keep it for 1 hour.
Referans yapılandırma:taskType = live_debug_metric_probe
{
"probeType": "METRIC",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "exit",
"instanceIds": ["*"]
},
"action": {
"type": "METRIC",
"metricName": "livedebug.order.amount",
"metricType": "HISTOGRAM",
"valueExpression": "amount",
"tags": {
"is_vip": "str(user_id == 'vip')"
}
},
"ttl": "1h"
}
Dinamik span (SPAN)
Örnek ifade:
Use the /alibabacloud-livedebug Skill to temporarily add a span on OrderService.create_order named dyn.create_order. Include the order ID and amount as span attributes.
Referans yapılandırma:taskType = live_debug_span_probe
{
"probeType": "SPAN",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "enter",
"instanceIds": ["*"]
},
"action": {
"type": "SPAN",
"spanName": "dyn.create_order",
"spanTags": {
"order.id": "str(order_id)",
"order.amount": "str(amount)"
}
},
"ttl": "1h"
}
Span etiketleme (SPAN_TAG)
Örnek ifade:
At the exit of create_order, use the /alibabacloud-livedebug Skill to tag the current span with order.id and order.result (use the return value). Do not create a new span.
Referans yapılandırma:taskType = live_debug_span_tag_probe
{
"probeType": "SPAN_TAG",
"language": "python",
"target": {
"typeName": "app.service.order",
"methodName": "OrderService.create_order",
"location": "exit",
"instanceIds": ["*"]
},
"action": {
"type": "SPAN_TAG",
"tags": [
{"key": "order.id", "value": "str(order_id)"},
{"key": "order.result", "value": "str(@return)"}
]
},
"ttl": "1h"
}
5. Adım: Trafiği tetikleme, sonuçları doğrulama ve temizleme
Yapılandırmayı doğrulayın: Agent tarafından gönderilen
taskConfigdeğerinin hedef konum ve yakalanacak içerik açısından referans yapılandırma ile eşleştiğini onaylayın.Trafiği tetikleyin: Hedef kod yolunu yürüten API'ye bir veya daha fazla istek gönderin.
-
Sonuçları sorgulayın: Aşağıdaki sonuçları almak için agent'ı sorgulayın:
Show me the capture results for the last task ID, and tell me if the probe was installed and what was captured.Görev Durumu: Bu durum, probun başarıyla kurulup kurulmadığını belirtir ve huni ölçümleri ile diğer ayrıntıları sağlar.
Yakalama Sonuçları: Bu, günlükler ve anlık görüntüler gibi yakalanan içeriği içerir.
-
Temizleme (Zorunlu):
Delete the previous probe.Delete all Live-Debug probes in the current service.Show me which Live-Debug probes are still active in the current service.
Senaryo hızlı başvurusu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SSS
Agent, cms2 veya aliyun komutunun kullanılamadığını bildiriyor
Neden: Alibaba Cloud CLI yüklü değil, sürüm çok eski veya aliyuncms2 eklenti ikili dosyası hazır değil.
Çözüm:
aliyun version
aliyun upgrade -y
ls -l ~/.aliyun/aliyuncms2 # Confirm the CMS CLI plugin binary exists and is executable
aliyun cms2 apm service-task --help
aliyun sls --help
AccessKey çiftini yapılandırmak için aliyun configure komutunu çalıştırdığınızdan emin olun.
Görev başarıyla oluşturuldu ancak yakalama sonucu görünmüyor
Sorun giderme işlemini aşağıdaki sırayla gerçekleştirin:
Agent'a öncelikle Görev Durumu'nu kontrol ettirin ve agent'ın başarıyla kurulup kurulmadığını onaylayın.
typeNamevemethodNamedeğerlerinin çalışma zamanı modülü adı ve__qualname__ile eşleştiğini doğrulayın. Ana modülün__main__olması gerekip gerekmediğini kontrol edin.Hedef işleve ulaşan bir isteği tetiklediğinizden emin olun. Filtre koşulunun çok katı olup olmadığını kontrol edin.
.arms-infodosyasındakiregionIddeğerininslsProjectbölgesiyle eşleştiğini onaylayın.Sorgu zaman penceresini artırın ve yeniden deneyin.
Agent'a şunu da söyleyebilirsiniz: "Veri yakalanmadı. Durumun ve hedef konumun doğru olup olmadığını kontrol etmeme yardım et."
SLS, ProjectNotExist hatası bildiriyor
Neden: Sorgu için kullanılan bölge, Simple Log Service projesinin bölgesiyle eşleşmiyor.
Çözüm: .arms-info dosyasına doğru regionId değerini girin ve Agent'ın LIVE_DEBUG_REGION_ID değerini dışa aktardığından emin olun. Yalnızca CLI varsayılan bölgesine güvenmeyin.
Agent'ların temizlendiğini nasıl onaylarım?
Show me what Live-Debug agents are still attached to the current service. If there are any, delete all of them.
Python uygulamaları iş parçacığı, bellek veya ters derleme tanılaması yapabilir mi?
Hayır. Bunlar yalnızca Java/JVM uygulamaları için desteklenen Command yetenekleridir. Python uygulamaları için bunun yerine günlük, anlık görüntü, ölçüm veya span tanılama yöntemlerini kullanın.