Simülasyonları, sağlanan web demosunu kullanarak veya doğrudan REST API'yi çağırarak çalıştırabilirsiniz.
Giriş ve çıkış
Giriş ve çıkış dosyaları, Terraform kurulumundaki Cloud Storage paketini kullanır.
Giriş dizini metrics_config.zip ve publisher_config.zip dosyalarını içermelidir. Yolu gerektiği gibi tanımlayabilirsiniz.
Çıkışlar için kullanılan pakette, her simülasyonu kimliğine göre depolayan bir simulations dizini bulunur. Her simülasyon dizini, kopyalanan giriş dosyalarını içeren bir inputs klasörü ve bir outputs klasörü içerir. outputs klasöründe hata raporu, logcat dosyası ve oluşturulan simülatör dosyaları bulunur.
Web demosunu kullanma
Platformda, simülasyonları görüntülemenize, oluşturmanıza ve yönetmenize olanak tanıyan, tanıtım amaçlı Flutter tabanlı bir web uygulaması bulunur. İhtiyaçlarınıza göre uyarlanmış kendi kullanıcı arayüzünüzü oluşturmanız önerilir.
Demo uygulaması App Engine'e dağıtılır ve Google Hesabı ile oturum açmanızı gerektirir. Bu, Google Cloud projenizde yapılandırılmış bir OAuth 2.0 istemci kimliği kullanılarak korunur. Oturum açılan hesabın, dağıtılan Cloud Functions işlevlerini çağırmak için IAM izinlerine sahip olması gerekir. Kullanıcı hesaplarına Cloud Functions Çağırıcısı rolü (roles/cloudfunctions.invoker) gibi gerekli izinleri verme talimatları için IAM ile erişim yetkisi verme başlıklı makaleyi inceleyin.
Kullanıcı iş akışı
- OAuth 2.0 işlemi kullanılarak kimliği doğrulanmış Google Hesabınızla oturum açın.
- Tüm yürütme bilgilerini barındıran Firestore veritabanını sorgulayarak tüm simülasyonları listeleyen ana sayfada simülasyonları görüntüleyin.
- Sağ alt köşedeki + işlem düğmesini tıklayarak yeni bir simülasyon planlamak için forma gidin. Giriş yolu, derleme kimliği ve örnek türü gibi çeşitli parametreler sağlarsınız. Daha fazla bilgi için Simülasyon oluşturma başlıklı makaleyi inceleyin.
- Simülasyon listesi güncellemelerinde izleme durumunu kontrol edin. Burada yeni simülasyonun durumu gösterilir (ör.
PENDING,RUNNING,COMPLETED). - Simülasyon tamamlandıktan sonra oluşturulan raporları ve yapıları görüntüleyin. Giriş dosyaları, çıkış raporları, günlükler, Logcat ve hata raporları Cloud Storage'da depolanır.
- İsteğe bağlı: Planlanmış veya çalışan bir simülasyonu iptal edin.
API kullanımı
Otomasyon ve diğer sistemlerle entegrasyon için REST API'yi kullanabilirsiniz.
Kimlik doğrulama bölümünde ve uç nokta tanımlarında kullanılan CLOUD_FUNCTION_URL yer tutucusu, çağrılan Cloud Functions işlevinin ana URL'sini ifade eder. İşlev URL'lerini Google Cloud Console'daki Cloud Functions sayfasında bulabilirsiniz. Her işlevin URL'si, İşlev ayrıntıları sayfasının Tetikleyici sekmesinde gösterilir. Alternatif olarak, bu URL'leri bir apply komutu çalıştırdıktan sonra yazdırılan Terraform çıkışlarında bulabilirsiniz.
Kimlik doğrulama
Tüm API isteklerinin, arayanın kimliğini kanıtlayan bir kimlik jetonuyla kimlik doğrulaması yapılmalıdır. Kimliğin (kullanıcı veya hizmet hesabı), hedef işlevde Cloud Functions Çağırıcısı izinlerine sahip olması gerekir.
Kullanıcı çağrısı (yerel ve CLI): API'yi yerel bir makineden veya Google Cloud dışı bir ortamdan çağırırken bir kullanıcı hesabı için alınmış Google tarafından verilen kimlik jetonunu kullanmanız gerekir.
TOKEN=$(gcloud auth print-identity-token)Hizmet hesabı çağrısı (Google Cloud içinde): API'yi bir Google Cloud kaynağından (ör. Compute Engine sanal makinesi, başka bir Cloud Functions işlevi veya Kubernetes kümesi) çağırırken kaynağın ekli hizmet hesabının kimliğini kullanın. Jeton, kaynağın meta veri sunucusundan alınmalıdır.
TOKEN=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=CLOUD_FUNCTION_URL" -H "Metadata-Flavor: Google")
Alınan jetonu, isteklerinizin Authorization başlığına Bearer jetonu olarak ekleyin.
Uç noktalar
Cloud Telemetry Simulation yığınının kullanıcıya yönelik uç noktaları, simülasyon oluşturup silmenize veya veritabanından simülasyon bilgilerini okumanıza olanak tanır.
Simülasyon oluşturma
Bu uç nokta, yeni bir simülasyon isteği oluşturur ve yürütülmek üzere planlar.
- Uç nokta:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-receive-requests İstek gövdesi:
{ "build_id": "latest", "file_path": "inputs/my-test-case/", "instance_type": "n1-standard-8", "owner": "user@example.com", "max_simulation_time": 300, "max_report_count": 5 }build_id(dize): Kullanılacak temsilci Docker görüntüsünün etiketi (ör.latest).file_path(dize): GCS paketindemetrics_config.zipvepublisher_config.zipiçeren klasörün yolu.instance_type(dize): Compute Engine makine türü. Bu tür, iç içe yerleştirilmiş sanallaştırmayı desteklemelidir (ör.n1,n2veyat2dserisi). Daha fazla bilgi için iç içe yerleştirilmiş sanallaştırmaya genel bakış başlıklı makaleyi inceleyin.owner(dize): Simülasyonu başlatan kullanıcının e-posta adresi.max_simulation_time(tam sayı): Simülasyonun saniye cinsinden maksimum çalışma süresi.max_report_count(tam sayı): Simülasyonun tamamlanması için gereken telemetri raporu sayısı.
Başarılı yanıt (200 OK):
{ "id": "sim-a1b2c3d4e5f6" }
Simülasyon silme
Bu uç nokta, beklemedeki veya çalışan bir simülasyonu iptal eder ve ilişkili kaynaklarını siler.
- Uç nokta:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-delete-simulation - Başlıklar:
Content-Type: application/json
İstek gövdesi:
{ "id": "sim-a1b2c3d4e5f6" }Başarılı yanıt (200 OK): Düz metin mesajı (
Request accepted and is being processed).
Simülasyon verilerini okuma
Simülasyon verilerini okumak için simulation-reader işleviyle etkileşim kurabilirsiniz.
Bu uç noktalar; geçmişi, durumu ve sistem yapılandırmasını almak için GET yöntemini kullanır.
Simülasyonları listeleme
Filtreleme ve sıralama desteğiyle simülasyonların sayfalandırılmış bir listesini alır.
- Uç nokta:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations Sorgu parametreleri (tümü isteğe bağlı):
status(dize): Simülasyon durumuna göre filtreleyin (running,Simulation request received,cancelled,completedveyafailed).owner(dize): Sahibin e-posta adresine göre filtreleyin.sort_by(string): Sıralama ölçütü olarak kullanılacak alan (received_at,status_updated_at,started_at). Varsayılan değer:received_at.sort_order(dize): Sıralama yönü,ascveyadesc. Varsayılan değer:desc.page_size(tamsayı): Sayfa başına sonuç sayısı. Varsayılan değer 20'dir.page_token(dize): Sonraki sonuç sayfasını getirmek için kullanılan jeton.
Örnek istek:
curl -H "Authorization: Bearer $TOKEN" "https://CLOUD_FUNCTION_URL/simulation-reader/simulations?status=completed&owner=user@example.com&sort_by=status_updated_at"Başarılı yanıt (200 OK):
- Simülasyon dizisi ve isteğe bağlı bir
next_page_tokeniçeren bir JSON nesnesi döndürür.
{ "simulations": [ { "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }, { "id": "5678-efgh", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-11-07T14:49:54.25Z", "received_at": "2025-11-07T14:46:54.959Z", "started_at": "2025-11-07T14:47:13.714Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-5678-efgh", "ip": "10.156.15.221", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 } ], "next_page_token": "M7bydGsAptLncj8SOCb1" }- Simülasyon dizisi ve isteğe bağlı bir
Belirli bir simülasyonu alma
Belirli bir simülasyonun tüm ayrıntılarını kimliğine göre alır.
Uç nokta:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/[SIMULATION_ID]Başarılı yanıt (200 OK): İstenen simülasyonun ayrıntılarını içeren bir JSON nesnesi döndürür.
{ "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }
Sistem metriklerini ve yapılandırmasını alma
Bu uç noktalar, simülasyon altyapısının mevcut yükü ve yapılandırması hakkında bilgi sağlar.
Çalışan simülasyon sayısını alma: Çalışan simülasyonların sayısını döndürür.
Uç nokta:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/running/countBaşarılı yanıt (200 OK):
{ "count": 0 }
Get max concurrent VMs: Aynı anda çalışan sanal makinelerin yapılandırılmış maksimum sayısını döndürür.
Uç nokta:
GET https://CLOUD_FUNCTION_URL/simulation-reader/config/max-running-vmsBaşarılı yanıt (200 OK):
{ "max_running_vms": 5 }