|
12 | 12 | telemetry_query_traces_params,
|
13 | 13 | telemetry_get_span_tree_params,
|
14 | 14 | telemetry_save_spans_to_dataset_params,
|
| 15 | + telemetry_query_metrics_params, |
15 | 16 | )
|
16 | 17 | from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
17 | 18 | from .._utils import maybe_transform, async_maybe_transform
|
|
27 | 28 | from ..types.trace import Trace
|
28 | 29 | from .._base_client import make_request_options
|
29 | 30 | from ..types.event_param import EventParam
|
| 31 | + |
| 32 | +from ..types.metric_label_matcher_param import MetricLabelMatcherParam |
| 33 | +from ..types.metric_query_type_param import MetricQueryTypeParam |
30 | 34 | from ..types.query_condition_param import QueryConditionParam
|
31 | 35 | from ..types.telemetry_get_span_response import TelemetryGetSpanResponse
|
32 | 36 | from ..types.telemetry_query_spans_response import TelemetryQuerySpansResponse
|
33 | 37 | from ..types.telemetry_query_traces_response import TelemetryQueryTracesResponse
|
34 | 38 | from ..types.telemetry_get_span_tree_response import TelemetryGetSpanTreeResponse
|
| 39 | +from ..types.telemetry_query_metrics_response import TelemetryQueryMetricsResponse |
35 | 40 |
|
36 | 41 | __all__ = ["TelemetryResource", "AsyncTelemetryResource"]
|
37 | 42 |
|
@@ -377,6 +382,66 @@ def save_spans_to_dataset(
|
377 | 382 | cast_to=NoneType,
|
378 | 383 | )
|
379 | 384 |
|
| 385 | + def query_metrics( |
| 386 | + self, |
| 387 | + *, |
| 388 | + metric_name: str, |
| 389 | + start_time: int, |
| 390 | + end_time: int | None = None, |
| 391 | + granularity: str | None = "1d", |
| 392 | + query_type: MetricQueryTypeParam = MetricQueryTypeParam.RANGE, |
| 393 | + label_matchers: Iterable[MetricLabelMatcherParam] | None = None, |
| 394 | + extra_headers: Headers | None = None, |
| 395 | + extra_query: Query | None = None, |
| 396 | + extra_body: Body | None = None, |
| 397 | + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, |
| 398 | + ) -> TelemetryQueryMetricsResponse: |
| 399 | + """ |
| 400 | + Query metrics. |
| 401 | +
|
| 402 | + Args: |
| 403 | + metric_name: The name of the metric to query |
| 404 | +
|
| 405 | + start_time: The start time for the query (Unix timestamp) |
| 406 | +
|
| 407 | + end_time: (Optional) The end time for the query (Unix timestamp) |
| 408 | +
|
| 409 | + granularity: (Optional) The granularity of the query (e.g., '1d', '1h') |
| 410 | +
|
| 411 | + query_type: (Optional) The type of metric query to perform |
| 412 | +
|
| 413 | + label_matchers: (Optional) Label matchers to filter the metrics |
| 414 | +
|
| 415 | + extra_headers: Send extra headers |
| 416 | +
|
| 417 | + extra_query: Add additional query parameters to the request |
| 418 | +
|
| 419 | + extra_body: Add additional JSON properties to the request |
| 420 | +
|
| 421 | + timeout: Override the client-level default timeout for this request, in seconds |
| 422 | + """ |
| 423 | + return self._post( |
| 424 | + f"/v1/telemetry/metrics/{metric_name}", |
| 425 | + body=maybe_transform( |
| 426 | + { |
| 427 | + "start_time": start_time, |
| 428 | + "end_time": end_time, |
| 429 | + "granularity": granularity, |
| 430 | + "query_type": query_type.value if query_type else None, |
| 431 | + "label_matchers": label_matchers, |
| 432 | + }, |
| 433 | + telemetry_query_metrics_params.TelemetryQueryMetricsParams, |
| 434 | + ), |
| 435 | + options=make_request_options( |
| 436 | + extra_headers=extra_headers, |
| 437 | + extra_query=extra_query, |
| 438 | + extra_body=extra_body, |
| 439 | + timeout=timeout, |
| 440 | + post_parser=DataWrapper[TelemetryQueryMetricsResponse]._unwrapper, |
| 441 | + ), |
| 442 | + cast_to=cast(Type[TelemetryQueryMetricsResponse], DataWrapper[TelemetryQueryMetricsResponse]), |
| 443 | + ) |
| 444 | + |
380 | 445 |
|
381 | 446 | class AsyncTelemetryResource(AsyncAPIResource):
|
382 | 447 | @cached_property
|
@@ -560,6 +625,68 @@ async def log_event(
|
560 | 625 | ),
|
561 | 626 | cast_to=NoneType,
|
562 | 627 | )
|
| 628 | + |
| 629 | + |
| 630 | + async def query_metrics( |
| 631 | + self, |
| 632 | + *, |
| 633 | + metric_name: str, |
| 634 | + start_time: int, |
| 635 | + end_time: int | None = None, |
| 636 | + granularity: str | None = "1d", |
| 637 | + query_type: MetricQueryTypeParam = MetricQueryTypeParam.RANGE, |
| 638 | + label_matchers: Iterable[MetricLabelMatcherParam] | None = None, |
| 639 | + extra_headers: Headers | None = None, |
| 640 | + extra_query: Query | None = None, |
| 641 | + extra_body: Body | None = None, |
| 642 | + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, |
| 643 | + ) -> TelemetryQueryMetricsResponse: |
| 644 | + """ |
| 645 | + Query metrics. |
| 646 | +
|
| 647 | + Args: |
| 648 | + metric_name: The name of the metric to query |
| 649 | +
|
| 650 | + start_time: The start time for the query (Unix timestamp) |
| 651 | +
|
| 652 | + end_time: (Optional) The end time for the query (Unix timestamp) |
| 653 | +
|
| 654 | + granularity: (Optional) The granularity of the query (e.g., '1d', '1h') |
| 655 | +
|
| 656 | + query_type: (Optional) The type of metric query to perform |
| 657 | +
|
| 658 | + label_matchers: (Optional) Label matchers to filter the metrics |
| 659 | +
|
| 660 | + extra_headers: Send extra headers |
| 661 | +
|
| 662 | + extra_query: Add additional query parameters to the request |
| 663 | +
|
| 664 | + extra_body: Add additional JSON properties to the request |
| 665 | +
|
| 666 | + timeout: Override the client-level default timeout for this request, in seconds |
| 667 | + """ |
| 668 | + return await self._post( |
| 669 | + f"/v1/telemetry/metrics/{metric_name}", |
| 670 | + body=await async_maybe_transform( |
| 671 | + { |
| 672 | + "start_time": start_time, |
| 673 | + "end_time": end_time, |
| 674 | + "granularity": granularity, |
| 675 | + "query_type": query_type.value if query_type else None, |
| 676 | + "label_matchers": label_matchers, |
| 677 | + }, |
| 678 | + telemetry_query_metrics_params.TelemetryQueryMetricsParams, |
| 679 | + ), |
| 680 | + options=make_request_options( |
| 681 | + extra_headers=extra_headers, |
| 682 | + extra_query=extra_query, |
| 683 | + extra_body=extra_body, |
| 684 | + timeout=timeout, |
| 685 | + post_parser=DataWrapper[TelemetryQueryMetricsResponse]._unwrapper, |
| 686 | + ), |
| 687 | + cast_to=cast(Type[TelemetryQueryMetricsResponse], DataWrapper[TelemetryQueryMetricsResponse]), |
| 688 | + ) |
| 689 | + |
563 | 690 |
|
564 | 691 | async def query_spans(
|
565 | 692 | self,
|
@@ -742,6 +869,9 @@ def __init__(self, telemetry: TelemetryResource) -> None:
|
742 | 869 | self.query_traces = to_raw_response_wrapper(
|
743 | 870 | telemetry.query_traces,
|
744 | 871 | )
|
| 872 | + self.query_metrics = to_raw_response_wrapper( |
| 873 | + telemetry.query_metrics, |
| 874 | + ) |
745 | 875 | self.save_spans_to_dataset = to_raw_response_wrapper(
|
746 | 876 | telemetry.save_spans_to_dataset,
|
747 | 877 | )
|
@@ -769,6 +899,9 @@ def __init__(self, telemetry: AsyncTelemetryResource) -> None:
|
769 | 899 | self.query_traces = async_to_raw_response_wrapper(
|
770 | 900 | telemetry.query_traces,
|
771 | 901 | )
|
| 902 | + self.query_metrics = async_to_raw_response_wrapper( |
| 903 | + telemetry.query_metrics, |
| 904 | + ) |
772 | 905 | self.save_spans_to_dataset = async_to_raw_response_wrapper(
|
773 | 906 | telemetry.save_spans_to_dataset,
|
774 | 907 | )
|
@@ -796,6 +929,9 @@ def __init__(self, telemetry: TelemetryResource) -> None:
|
796 | 929 | self.query_traces = to_streamed_response_wrapper(
|
797 | 930 | telemetry.query_traces,
|
798 | 931 | )
|
| 932 | + self.query_metrics = to_streamed_response_wrapper( |
| 933 | + telemetry.query_metrics, |
| 934 | + ) |
799 | 935 | self.save_spans_to_dataset = to_streamed_response_wrapper(
|
800 | 936 | telemetry.save_spans_to_dataset,
|
801 | 937 | )
|
@@ -823,6 +959,9 @@ def __init__(self, telemetry: AsyncTelemetryResource) -> None:
|
823 | 959 | self.query_traces = async_to_streamed_response_wrapper(
|
824 | 960 | telemetry.query_traces,
|
825 | 961 | )
|
| 962 | + self.query_metrics = async_to_streamed_response_wrapper( |
| 963 | + telemetry.query_metrics, |
| 964 | + ) |
826 | 965 | self.save_spans_to_dataset = async_to_streamed_response_wrapper(
|
827 | 966 | telemetry.save_spans_to_dataset,
|
828 | 967 | )
|
0 commit comments