API Google Cloud Monitoring: как запрашивать «элементы» матрицы расстояний вместо «запросов»?Python

Программы на Python
Ответить
Anonymous
 API Google Cloud Monitoring: как запрашивать «элементы» матрицы расстояний вместо «запросов»?

Сообщение Anonymous »

Я пытаюсь проверить использование Google Distance Matrix API, чтобы рассчитать затраты в месяц.
Поскольку выставление счетов основано на элементах, подсчета HTTP-запросов недостаточно. Я использую клиент google.cloud.monitoring_v3.
В настоящее время я фильтрую данные по serviceruntime.googleapis.com/api/request_count. Это возвращает количество вызовов API, но не количество обработанных элементов. Существует ли определенный фильтр metric.type для возврата количества элементов?
Это мой текущий код:
from google.cloud import monitoring_v3
from google.oauth2 import service_account
import datetime

credentials = service_account.Credentials.from_service_account_file(GCP_MONITOR_KEY)
client = monitoring_v3.MetricServiceClient(credentials=credentials)
project_name = f"projects/{GCP_PROJECT_ID}"

now = datetime.datetime.now()
start_of_month = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0)

interval = monitoring_v3.TimeInterval({
"end_time": {"seconds": int(now.timestamp())},
"start_time": {"seconds": int(start_of_month.timestamp())}
})

# Query Distance Matrix API usage
print("Fetching Distance Matrix API usage...")

results = client.list_time_series(
request={
"name": project_name,
"filter": 'metric.type="serviceruntime.googleapis.com/api/request_count"',
"interval": interval,
"view": monitoring_v3.ListTimeSeriesRequest.TimeSeriesView.FULL
}
)

# Calculate total elements used
total_elements = 0
for result in results:
for point in result.points:
total_elements += point.value.int64_value

# Display results
print(f"\n Distance Matrix API Usage (Current Month)")
print(f"=" * 50)
print(f"Total elements used: {total_elements:,}")
print(f"Free tier limit: 10,000")
print(f"Remaining free: {max(0, 10000 - total_elements):,}")

if total_elements > 10000:
billable = total_elements - 10000
cost = (billable / 1000) * 10.00 # $10 per 1000 for Advanced tier
print(f"\n Estimated cost: ${cost:.2f}")
else:
print(f"\n Still within free tier!")
percent_used = (total_elements / 10000) * 100
print(f" ({percent_used:.1f}% of free tier used)")


Подробнее здесь: https://stackoverflow.com/questions/798 ... instead-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»