Kód futtatása kódértelmező használatával az Azure SRE-ügynökben

Az SRE-ügynök kódértelmezője lehetővé teszi Python-kód- és rendszerhéjparancsok biztonságos, izolált tesztkörnyezetben történő végrehajtását. A Kódértelmezővel elemezheti az adatokat, vizualizációkat hozhat létre, PDF-jelentéseket hozhat létre, és anélkül automatizálhatja a fájlműveleteket, hogy elhagyná az SRE-ügynökkel folytatott beszélgetést.

Ebből a cikkből megtudhatja, hogyan:

  • Python-kód végrehajtása adatok elemzéséhez és vizualizációk létrehozásához
  • Rendszerhéjparancsok futtatása fájlműveletekhez
  • PDF-jelentések létrehozása és letöltése
  • Fájlok használata tesztkörnyezetben

Előfeltételek

Ügynök létrehozásához meg kell adnia az ügynöknek a megfelelő engedélyeket, konfigurálnia kell a megfelelő beállításokat, és hozzáférést kell adnia a megfelelő erőforrásokhoz:

  • Azure-fiók: Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Ha még nem rendelkezik ilyen fiókkal, ingyenesen létrehozhat egy fiókot.

  • Biztonsági környezet: Győződjön meg arról, hogy a felhasználói fiók Microsoft.Authorization/roleAssignments/write vagy felhasználói hozzáférés-rendszergazdaként rendelkezik az engedélyekkel.

  • Tűzfalbeállítások: Adja hozzá *.azuresre.ai az engedélyezési listához a tűzfalbeállítások között. Egyes hálózati profilok alapértelmezés szerint blokkolhatják a tartományhoz *.azuresre.ai való hozzáférést.

A kódértelmező működése

Az SRE-ügynök kódértelmezője egy elkülönített Azure Container Apps-munkamenetben fut a következő jellemzőkkel:

  • Nincs hálózati hozzáférés: A tesztkörnyezet nem tud kimenő HTTP- vagy HTTPS-kéréseket küldeni.
  • Nincs folyamatok indítása: Az olyan parancsok, mint a subprocess és os.system, blokkolva vannak.
  • Nincs csomagtelepítés: pip install és conda install nem érhető el.
  • Izolált fájlrendszer: Minden fájlt menteni kell./mnt/data/

Ezek a korlátozások biztosítják, hogy a kódvégrehajtás biztonságos és kiszámítható legyen. A gyakori adatelemzési kódtárak, például a pandas, a matplotlib és a seaborn előre vannak telepítve.

A kódértelmező használatának első lépései

A kódértelmező eszközök automatikusan elérhetők az SRE-ügynök beszélgetéseiben. Kérje meg az ügynököt, hogy természetes nyelv használatával végezze el a feladatokat.

Példafelszólítások

Első lépésként próbálja ki az alábbi utasításokat:

  • "Elemezze ezeket a CSV-adatokat, és hozzon létre egy, az incidenseket kategóriánként ábrázoló diagramot."
  • "Pdf-összefoglaló készítése a mai incidensekről."
  • "Elemezd ezt a JSON-fájlt, és nyerd ki a hibamintákat."
  • "A munkamenet összes fájljának listázása és méretük megjelenítése."

Az első Python-szkript

Az alábbi példa bemutatja, hogyan hozhat létre vizualizációt:

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)

Ha a kód sikeresen lefut, az ügynök a beszélgetésbe a képet közvetlenül adja vissza.

Lehetséges helyzetek

Incidensadatok elemzése

Kódértelmező használatával a nyers incidensadatokat végrehajtható elemzésekké és vizualizációkká alakíthatja.

  1. Kérje meg az SRE-ügynököt, hogy hozzon létre egy CSV-fájlt az elmúlt hónapban történt összes incidensről az alábbi üzenettel:

    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. A Python használatával elemezheti az incidensmintákat, és azonosíthatja a trendeket:

    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)
    

Vizualizációk létrehozása

Diagramok létrehozása az elemzések közléséhez.

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-jelentések létrehozása

Formázott PDF-dokumentumok létrehozása az érdekelt felek számára.

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()

Az ügynök egy letöltési hivatkozást ad vissza a létrehozott PDF-fájlhoz.

Naplófájlok feldolgozása

Naplófájlok keresése és elemzése rendszerhéjparancsok használatával.

# 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

Eszközhivatkozás

A Kódértelmező a következő eszközöket biztosítja:

ExecutePythonCode

Python-kódot futtat egy elkülönített tesztkörnyezetben.

Paraméter Típus Kötelező Description
pythonCode karakterlánc Igen Futtatandó Python-kód (legfeljebb 20 000 karakter)
timeoutSeconds egész szám Nem Végrehajtási időtúllépés másodpercben (alapértelmezett: 120, maximum: 900)

Kimenet: A képek markdown szövegelemként jelennek meg. Az adatfájlok letöltési hivatkozásként térnek vissza.

PDF jelentés generálása

PDF-dokumentumokat hoz létre Python-kódból.

Paraméter Típus Kötelező Description
pythonCode karakterlánc Igen PDF-fájlt létrehozó Python-kód
expectedOutputFilename karakterlánc Igen A PDF mentési útvonala (például report.pdf)
saveAsFilename karakterlánc Igen Fájlnév letöltése (például daily_summary.pdf)
timeoutSeconds egész szám Nem Végrehajtási időtúllépés másodpercben (alapértelmezett: 180, maximum: 900)

RunShellCommand

Rendszerhéjparancsokat futtat a tesztkörnyezetben.

Paraméter Típus Kötelező Description
command karakterlánc Igen Futtatandó Shell-parancs
explanation karakterlánc Nem A paranccsal való naplózáshoz leírás
isBackground Boolean Nem Kötelezőnek kell lennie false (a háttérfeladatok nem támogatottak)
timeoutSeconds egész szám Nem Végrehajtási időtúllépés (alapértelmezett: 120, max: 240)

Megjegyzés:

A parancsok innen futnak: /mnt/data/. Relatív elérési utak és láncparancsok használatához használja a(z) ; elemet a(z) && helyett.

Fájlműveletek

Tool Description
ReadSessionFile Beolvassa a fájl tartalmát a fájlból /mnt/data/.
SearchSessionFiles Grep stílusú mintákkal keres szövegeket a fájlokban.
ListSessionFiles A munkamenet összes fájljának metaadatait tartalmazza.
GetSessionFile Letölt egy fájlt a munkamenetből.
UploadFileToSession Feltölt egy fájlt további feldolgozás céljából.

Támogatott fájltípusok

  • Képek: PNG, JPG, GIF, SVG, WebP, BMP, TIFF, EPS
  • Adatok: CSV, TSV, Excel, JSON, XML, YAML, HDF5, NetCDF, pickle
  • Dokumentumok: PDF, HTML, Markdown, Office-formátumok
  • Kód: Python, Jupyter jegyzetfüzetek, R, SQL
  • Archívumok: ZIP, TAR, GZ

Korlátozások

Biztonsági okokból a rendszer a következő műveleteket blokkolja:

Kategória Letiltott műveletek
Folyamatok elágaztatása subprocess, os.system, os.popenos.spawn*
Hálózati hozzáférés Kimenő HTTP/HTTPS-kérelmek
Csomag telepítése pip install, conda install
Fájlrendszer Hozzáférés kívülről /mnt/data/

Kódértelmező hibaelhárítása

A kódvégrehajtás sikertelen

  • Ellenőrizze, hogy a kód nem használ letiltott műveleteket, például subprocess hálózati hívásokat.
  • Ellenőrizze, hogy az összes fájl elérési útja erre mutat-e /mnt/data/.
  • Győződjön meg arról, hogy a kód 20 000 karakternél nem hosszabb.

A fájlok nem jelennek meg a kimenetben

  • Győződjön meg arról, hogy a fájlokat ide menti: /mnt/data/.
  • A fájllétrehozás ellenőrzésére használható ListSessionFiles .
  • Ellenőrizze, hogy a fájlkiterjesztés támogatott-e.

Időtúllépési hibák

  • Növelje a paramétert timeoutSeconds (legfeljebb 900 másodperc).
  • Optimalizálja a kódot a végrehajtási idő csökkentése érdekében.
  • Nagyobb műveletek felosztása kisebb adattömbökre.