useQueuesMetricsQuery.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {MutableSearch} from 'sentry/utils/tokenizeSearch';
  2. import {DEFAULT_QUERY_FILTER} from 'sentry/views/performance/queues/settings';
  3. import {useSpanMetrics} from 'sentry/views/starfish/queries/useDiscover';
  4. type Props = {
  5. destination?: string;
  6. enabled?: boolean;
  7. transaction?: string;
  8. };
  9. export function useQueuesMetricsQuery({destination, transaction, enabled}: Props) {
  10. const mutableSearch = new MutableSearch(DEFAULT_QUERY_FILTER);
  11. if (destination) {
  12. mutableSearch.addFilterValue('messaging.destination.name', destination);
  13. }
  14. if (transaction) {
  15. mutableSearch.addFilterValue('transaction', transaction);
  16. }
  17. const response = useSpanMetrics(
  18. {
  19. search: mutableSearch,
  20. fields: [
  21. 'count()',
  22. 'count_op(queue.publish)',
  23. 'count_op(queue.process)',
  24. 'sum(span.duration)',
  25. 'avg(span.duration)',
  26. 'avg_if(span.duration,span.op,queue.publish)',
  27. 'avg_if(span.duration,span.op,queue.process)',
  28. 'avg(messaging.message.receive.latency)',
  29. 'trace_status_rate(ok)',
  30. 'time_spent_percentage(app,span.duration)',
  31. ],
  32. enabled,
  33. sorts: [],
  34. limit: 10,
  35. },
  36. 'api.performance.queues.destination-summary'
  37. );
  38. return response;
  39. }