Aracılığıyla paylaş


Azure SRE Aracısı'nda kod yorumlayıcı kullanarak kod çalıştırma

SRE Aracısı kod yorumlayıcısı, Python kodu ve kabuk komutlarını güvenli, yalıtılmış bir korumalı alan ortamında yürütmenizi sağlar. SRE Aracısı konuşmanızdan çıkmadan verileri analiz etmek, görselleştirmeler oluşturmak, PDF raporları oluşturmak ve dosya işlemlerini otomatikleştirmek için Kod Yorumlayıcı'yı kullanın.

Bu makalede şunları öğreneceksiniz:

  • Verileri analiz etmek ve görselleştirmeler oluşturmak için Python kodu yürütme
  • Dosya işlemleri için kabuk komutlarını çalıştırma
  • PDF raporları oluşturma ve indirme
  • Korumalı alan ortamında dosyalarla çalışın

Önkoşullar

Aracı oluşturmak için aracınıza doğru izinleri vermeniz, doğru ayarları yapılandırmanız ve doğru kaynaklara erişim vermeniz gerekir:

  • Azure hesabı: Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Henüz bir hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.

  • Güvenlik bağlamı: Kullanıcı hesabınızın Microsoft.Authorization/roleAssignments/write veya Kullanıcı Erişim Yöneticisi izinlerine sahip olduğundan emin olun.

  • Güvenlik duvarı ayarları: Güvenlik duvarı ayarlarınızda izin verilenler listesine ekleyin *.azuresre.ai . Bazı ağ profilleri, varsayılan olarak *.azuresre.ai etki alanına erişimi engelleyebilir.

Kod yorumlayıcı nasıl çalışır?

SRE Aracısı kod yorumlayıcısı, aşağıdaki özelliklere sahip yalıtılmış bir Azure Container Apps oturumunda çalışır:

  • Ağ erişimi yok: Sandbox giden HTTP veya HTTPS istekleri yapamaz.
  • İşlem oluşturma yok: subprocess ve os.system gibi komutlar engellenir.
  • Paket yüklemesi yok: pip install ve conda install kullanılamıyor.
  • Yalıtılmış dosya sistemi: Tüm dosyaların /mnt/data/ konumuna kaydedilmesi gerekir.

Bu kısıtlamalar, kod yürütmenin güvenli ve öngörülebilir olmasını sağlar. Pandas, matplotlib ve seaborn gibi yaygın veri bilimi kitaplıkları önceden yüklenmiştir.

Kod yorumlayıcıyı kullanmaya başlama

Kod yorumlayıcı araçları SRE Aracısı konuşmalarınızda otomatik olarak kullanılabilir. Aracıdan doğal dil kullanarak görevleri gerçekleştirmesini isteyin.

Örnek komutlar

Başlamak için şu istemleri deneyin:

  • "Bu CSV verilerini analiz edin ve olayları kategoriye göre gösteren bir grafik oluşturun."
  • "Bugünkü olayların PDF özetini oluşturun."
  • "Bu JSON dosyasını ayrıştırın ve hata desenlerini ayıklayın."
  • "Oturumdaki tüm dosyaları listeleyin ve boyutlarını gösterin."

Python'daki ilk betiğiniz

Aşağıdaki örnekte görselleştirmenin nasıl oluşturulacağı gösterilmektedir:

import matplotlib.pyplot as plt
import numpy as np

# Generate sample data
categories = ['Critical', 'High', 'Medium', 'Low']
counts = [5, 12, 28, 45]

# Create bar chart
plt.figure(figsize=(10, 6))
plt.bar(categories, counts, color=['red', 'orange', 'yellow', 'green'])
plt.title('Incidents by Severity')
plt.xlabel('Severity Level')
plt.ylabel('Count')
plt.savefig('/mnt/data/incidents_by_severity.png', dpi=150)

Kod başarıyla çalıştırıldığında ajan, konuşma içinde görüntüyü satır içi olarak geri döndürür.

Scenarios

Olay verilerini analiz etme

Ham olay verilerini eyleme dönüştürülebilir içgörülere ve görselleştirmelere dönüştürmek için kod yorumlayıcısını kullanın.

  1. SRE Aracısı'na aşağıdaki istemi kullanarak geçen ay gerçekleşen tüm olayların CSV dosyasını oluşturmasını isteyin:

    Create a CSV file of all the incidents that 
    occurred in the last month.
    
    Name the file `incidents.csv` and save it
    to `/mnt/data`.
    
  2. Python'ı kullanarak olay desenlerini analiz edin ve eğilimleri belirleyin:

    import pandas as pd
    
    # Load incident data
    df = pd.read_csv('/mnt/data/incidents.csv')
    
    # Calculate summary statistics
    summary = df.groupby('category').agg({
        'id': 'count',
        'resolution_time': 'mean'
    }).rename(columns={'id': 'count', 'resolution_time': 'avg_resolution_hours'})
    
    # Export results
    summary.to_csv('/mnt/data/incident_summary.csv')
    print(summary)
    

Görselleştirme oluşturun

İçgörüleri iletmek için grafikler oluşturun.

import matplotlib.pyplot as plt
import seaborn as sns

# Load data
df = pd.read_csv('/mnt/data/incidents.csv')

# Create visualization
plt.figure(figsize=(12, 6))
sns.barplot(data=df, x='category', y='count', palette='viridis')
plt.title('Incidents by Category')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('/mnt/data/category_chart.png', dpi=150)

PDF raporları oluşturma

Paydaşlar için biçimlendirilmiş PDF belgeleri oluşturun.

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

# Create PDF
c = canvas.Canvas('/mnt/data/weekly_report.pdf', pagesize=letter)

# Add content
c.setFont('Helvetica-Bold', 18)
c.drawString(72, 750, 'Weekly Incident Report')

c.setFont('Helvetica', 12)
c.drawString(72, 720, 'Period: January 10-17, 2026')
c.drawString(72, 700, 'Total incidents: 90')
c.drawString(72, 680, 'Critical incidents: 5')
c.drawString(72, 660, 'Average resolution time: 4.2 hours')

c.save()

Aracı, oluşturulan PDF için bir indirme bağlantısı döndürür.

Günlük dosyalarını işleme

Shell komutlarını kullanarak günlük dosyalarını arayın ve analiz edin.

# Count error occurrences by type
grep -E "ERROR|WARN|FATAL" application.log | sort | uniq -c | sort -rn
# Find the most recent log entries
tail -100 application.log

Araç referansı

Kod Yorumlayıcı aşağıdaki araçları sağlar:

ExecutePythonCode

Python kodunu yalıtılmış bir korumalı alanda çalıştırır.

Parametre Türü Gerekli Description
pythonCode String Yes Çalıştırılacak Python kodu (en fazla 20.000 karakter)
timeoutSeconds tamsayı Hayı Saniye cinsinden yürütme zaman aşımı (varsayılan: 120, en fazla: 900)

Çıkış: Görüntüler satır içi olarak markdown formatında gösterilir. Veri dosyaları indirme bağlantıları olarak geri döner.

PDFRaporOlustur

Python kodundan PDF belgeleri oluşturur.

Parametre Türü Gerekli Description
pythonCode String Yes PDF dosyası oluşturan Python kodu
expectedOutputFilename String Yes PDF'nin kaydedildiği yol (örneğin, report.pdf)
saveAsFilename String Yes Dosya adını indirin (örneğin, daily_summary.pdf)
timeoutSeconds tamsayı Hayı Saniye cinsinden yürütme zaman aşımı (varsayılan: 180, en fazla: 900)

RunShellCommand

Korumalı alanda kabuk komutlarını çalıştırır.

Parametre Türü Gerekli Description
command String Yes Çalıştırılacak Shell komutu
explanation String Hayı komut ile log dosyasına kaydedilecek açıklama
isBackground Boolean Hayı false olmalıdır (arka plan görevleri desteklenmez)
timeoutSeconds tamsayı Hayı Yürütme zaman aşımı (varsayılan: 120, maksimum: 240)

Uyarı

Komutlar /mnt/data/'den çalıştırılır. ; yerine && kullanarak göreli yolları ve zincir komutlarını kullanın.

Dosya işlemleri

Tool Description
ReadSessionFile /mnt/data/ dosyasının içeriğini okur.
SearchSessionFiles Grep stili desenleri kullanarak dosyaların içinde metin arar.
ListSessionFiles Oturumdaki tüm dosyaları meta verilerle listeler.
GetSessionFile Oturumdan bir dosya indirir.
UploadFileToSession Daha fazla işlem için bir dosyayı karşıya yükler.

Desteklenen dosya türleri

  • Görüntüler: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Veri: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Belgeler: PDF, HTML, Markdown, Office biçimleri
  • Kod: Python, Jupyter not defterleri, R, SQL
  • Arşivler: ZIP, TAR, GZ

Sınırlamalar

Güvenlik nedeniyle sistem aşağıdaki işlemleri engeller:

Kategori Engellenen işlemler
İşlem oluşturma subprocess, os.system, os.popen, os.spawn*
Ağ erişimi Giden HTTP/HTTPS istekleri
Paket yükleme pip install, conda install
Dosya sistemi Dışarıdan erişim /mnt/data/

Kod yorumlayıcı sorunlarını giderme

Kod yürütme başarısız oluyor

  • Kodunuzun veya ağ çağrıları gibi subprocess engellenen işlemleri kullanmadığını doğrulayın.
  • Tüm dosya yollarının /mnt/data/ konumunu işaret ettiğini kontrol edin.
  • Kodunuzun 20.000 karakterin altında olduğundan emin olun.

Dosyalar çıkışta görünmüyor

  • Dosyaları /mnt/data/ konumuna kaydettiğinizi onaylayın.
  • Dosya oluşturmayı doğrulamak için kullanın ListSessionFiles .
  • Dosya uzantısının desteklendiğini denetleyin.

Zaman aşımı hataları

  • Parametresini timeoutSeconds artırın (en fazla 900 saniye).
  • Yürütme süresini kısaltmak için kodunuzu iyileştirin.
  • Büyük işlemleri daha küçük öbeklere bölün.