mirror of
https://github.com/SigNoz/signoz.git
synced 2026-06-15 21:20:28 +01:00
Compare commits
8 Commits
nv/schema-
...
infraM/add
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42045a619b | ||
|
|
ea8c789514 | ||
|
|
bec3191811 | ||
|
|
169bf8680c | ||
|
|
e4b4e77f2c | ||
|
|
0e11e5b6b9 | ||
|
|
b022484aee | ||
|
|
9628810121 |
@@ -2769,16 +2769,9 @@ components:
|
||||
type: string
|
||||
nullable: true
|
||||
type: object
|
||||
mode:
|
||||
$ref: '#/components/schemas/DashboardtypesLegendMode'
|
||||
position:
|
||||
$ref: '#/components/schemas/DashboardtypesLegendPosition'
|
||||
type: object
|
||||
DashboardtypesLegendMode:
|
||||
enum:
|
||||
- list
|
||||
- table
|
||||
type: string
|
||||
DashboardtypesLegendPosition:
|
||||
enum:
|
||||
- bottom
|
||||
@@ -3328,13 +3321,8 @@ components:
|
||||
DashboardtypesSpanGaps:
|
||||
properties:
|
||||
fillLessThan:
|
||||
description: The maximum gap size to connect when fillOnlyBelow is true.
|
||||
Gaps larger than this duration are left disconnected.
|
||||
type: string
|
||||
fillOnlyBelow:
|
||||
description: Controls whether lines connect across null values. When false
|
||||
(default), all gaps are connected. When true, only gaps smaller than fillLessThan
|
||||
are connected.
|
||||
type: boolean
|
||||
type: object
|
||||
DashboardtypesStorableDashboardData:
|
||||
@@ -3401,6 +3389,7 @@ components:
|
||||
required:
|
||||
- value
|
||||
- color
|
||||
- label
|
||||
type: object
|
||||
DashboardtypesTimePreference:
|
||||
enum:
|
||||
|
||||
@@ -3208,10 +3208,6 @@ export interface DashboardtypesPanelFormattingDTO {
|
||||
unit?: string;
|
||||
}
|
||||
|
||||
export enum DashboardtypesLegendModeDTO {
|
||||
list = 'list',
|
||||
table = 'table',
|
||||
}
|
||||
export enum DashboardtypesLegendPositionDTO {
|
||||
bottom = 'bottom',
|
||||
right = 'right',
|
||||
@@ -3231,7 +3227,6 @@ export interface DashboardtypesLegendDTO {
|
||||
* @type object,null
|
||||
*/
|
||||
customColors?: DashboardtypesLegendDTOCustomColors;
|
||||
mode?: DashboardtypesLegendModeDTO;
|
||||
position?: DashboardtypesLegendPositionDTO;
|
||||
}
|
||||
|
||||
@@ -3243,7 +3238,7 @@ export interface DashboardtypesThresholdWithLabelDTO {
|
||||
/**
|
||||
* @type string
|
||||
*/
|
||||
label?: string;
|
||||
label: string;
|
||||
/**
|
||||
* @type string
|
||||
*/
|
||||
@@ -3908,12 +3903,10 @@ export enum DashboardtypesLineStyleDTO {
|
||||
export interface DashboardtypesSpanGapsDTO {
|
||||
/**
|
||||
* @type string
|
||||
* @description The maximum gap size to connect when fillOnlyBelow is true. Gaps larger than this duration are left disconnected.
|
||||
*/
|
||||
fillLessThan?: string;
|
||||
/**
|
||||
* @type boolean
|
||||
* @description Controls whether lines connect across null values. When false (default), all gaps are connected. When true, only gaps smaller than fillLessThan are connected.
|
||||
*/
|
||||
fillOnlyBelow?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
// settings card wrapper — mirrors the V1 public dashboard treatment
|
||||
.publicDashboardCard {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
padding: 16px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid var(--l2-border);
|
||||
}
|
||||
|
||||
.statusTitle {
|
||||
margin-bottom: 16px;
|
||||
color: var(--l1-foreground);
|
||||
font-family: Inter;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.timeRangeSelectGroup {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.timeRangeSelectLabel {
|
||||
color: var(--l2-foreground);
|
||||
font-family: Inter;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.timeRangeSelect {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.urlGroup {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.urlLabel {
|
||||
color: var(--l2-foreground);
|
||||
font-family: Inter;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.urlContainer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 0 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--l1-border);
|
||||
background: var(--l3-background);
|
||||
}
|
||||
|
||||
.urlText {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
color: var(--l2-foreground);
|
||||
font-family: Inter;
|
||||
font-size: 13px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.callout {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-top: 12px;
|
||||
padding: 12px 8px;
|
||||
border-radius: 3px;
|
||||
background: color-mix(in srgb, var(--primary-background) 10%, transparent);
|
||||
}
|
||||
|
||||
.calloutIcon {
|
||||
flex-shrink: 0;
|
||||
color: var(--text-robin-300);
|
||||
}
|
||||
|
||||
.calloutText {
|
||||
color: var(--text-robin-300);
|
||||
font-family: Inter;
|
||||
font-size: 11px;
|
||||
font-weight: 400;
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 8px;
|
||||
margin-top: 32px;
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
import { Globe, Trash } from '@signozhq/icons';
|
||||
import { Button } from '@signozhq/ui/button';
|
||||
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
interface PublicDashboardActionsProps {
|
||||
isPublic: boolean;
|
||||
disabled: boolean;
|
||||
isPublishing: boolean;
|
||||
isUpdating: boolean;
|
||||
isUnpublishing: boolean;
|
||||
onPublish: () => void;
|
||||
onUpdate: () => void;
|
||||
onUnpublish: () => void;
|
||||
}
|
||||
|
||||
function PublicDashboardActions({
|
||||
isPublic,
|
||||
disabled,
|
||||
isPublishing,
|
||||
isUpdating,
|
||||
isUnpublishing,
|
||||
onPublish,
|
||||
onUpdate,
|
||||
onUnpublish,
|
||||
}: PublicDashboardActionsProps): JSX.Element {
|
||||
return (
|
||||
<div className={styles.actions}>
|
||||
{isPublic ? (
|
||||
<>
|
||||
<Button
|
||||
variant="outlined"
|
||||
color="destructive"
|
||||
disabled={disabled}
|
||||
loading={isUnpublishing}
|
||||
prefix={<Trash size={14} />}
|
||||
testId="public-dashboard-unpublish"
|
||||
onClick={onUnpublish}
|
||||
>
|
||||
Unpublish dashboard
|
||||
</Button>
|
||||
<Button
|
||||
variant="solid"
|
||||
color="primary"
|
||||
disabled={disabled}
|
||||
loading={isUpdating}
|
||||
prefix={<Globe size={14} />}
|
||||
testId="public-dashboard-update"
|
||||
onClick={onUpdate}
|
||||
>
|
||||
Update published dashboard
|
||||
</Button>
|
||||
</>
|
||||
) : (
|
||||
<Button
|
||||
variant="solid"
|
||||
color="primary"
|
||||
disabled={disabled}
|
||||
loading={isPublishing}
|
||||
prefix={<Globe size={14} />}
|
||||
testId="public-dashboard-publish"
|
||||
onClick={onPublish}
|
||||
>
|
||||
Publish dashboard
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardActions;
|
||||
@@ -1,17 +0,0 @@
|
||||
import { Info } from '@signozhq/icons';
|
||||
import { Typography } from '@signozhq/ui/typography';
|
||||
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
function PublicDashboardCallout(): JSX.Element {
|
||||
return (
|
||||
<div className={styles.callout}>
|
||||
<Info size={12} className={styles.calloutIcon} />
|
||||
<Typography.Text className={styles.calloutText}>
|
||||
Dashboard variables won't work in public dashboards
|
||||
</Typography.Text>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardCallout;
|
||||
@@ -1,54 +0,0 @@
|
||||
import { Checkbox } from '@signozhq/ui/checkbox';
|
||||
import { SelectSimple } from '@signozhq/ui/select';
|
||||
import { Typography } from '@signozhq/ui/typography';
|
||||
|
||||
import { TIME_RANGE_PRESETS_OPTIONS } from './constants';
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
interface PublicDashboardSettingsFormProps {
|
||||
timeRangeEnabled: boolean;
|
||||
defaultTimeRange: string;
|
||||
disabled: boolean;
|
||||
onTimeRangeEnabledChange: (value: boolean) => void;
|
||||
onDefaultTimeRangeChange: (value: string) => void;
|
||||
}
|
||||
|
||||
function PublicDashboardSettingsForm({
|
||||
timeRangeEnabled,
|
||||
defaultTimeRange,
|
||||
disabled,
|
||||
onTimeRangeEnabledChange,
|
||||
onDefaultTimeRangeChange,
|
||||
}: PublicDashboardSettingsFormProps): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<Checkbox
|
||||
id="public-dashboard-enable-time-range"
|
||||
className={styles.checkbox}
|
||||
testId="public-dashboard-time-range-toggle"
|
||||
value={timeRangeEnabled}
|
||||
disabled={disabled}
|
||||
onChange={(checked): void => onTimeRangeEnabledChange(checked === true)}
|
||||
>
|
||||
Enable time range
|
||||
</Checkbox>
|
||||
|
||||
<div className={styles.timeRangeSelectGroup}>
|
||||
<Typography.Text className={styles.timeRangeSelectLabel}>
|
||||
Default time range
|
||||
</Typography.Text>
|
||||
<SelectSimple
|
||||
className={styles.timeRangeSelect}
|
||||
testId="public-dashboard-default-time-range"
|
||||
placeholder="Select default time range"
|
||||
items={TIME_RANGE_PRESETS_OPTIONS}
|
||||
value={defaultTimeRange}
|
||||
disabled={disabled}
|
||||
onChange={(value): void => onDefaultTimeRangeChange(value as string)}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardSettingsForm;
|
||||
@@ -1,21 +0,0 @@
|
||||
import { Typography } from '@signozhq/ui/typography';
|
||||
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
interface PublicDashboardStatusProps {
|
||||
isPublic: boolean;
|
||||
}
|
||||
|
||||
function PublicDashboardStatus({
|
||||
isPublic,
|
||||
}: PublicDashboardStatusProps): JSX.Element {
|
||||
return (
|
||||
<Typography.Text className={styles.statusTitle}>
|
||||
{isPublic
|
||||
? 'This dashboard is publicly accessible. Anyone with the link can view it.'
|
||||
: 'This dashboard is private. Publish it to make it accessible to anyone with the link.'}
|
||||
</Typography.Text>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardStatus;
|
||||
@@ -1,49 +0,0 @@
|
||||
import { Copy, ExternalLink } from '@signozhq/icons';
|
||||
import { Button } from '@signozhq/ui/button';
|
||||
import { Typography } from '@signozhq/ui/typography';
|
||||
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
interface PublicDashboardUrlProps {
|
||||
url: string;
|
||||
onCopy: () => void;
|
||||
onOpen: () => void;
|
||||
}
|
||||
|
||||
function PublicDashboardUrl({
|
||||
url,
|
||||
onCopy,
|
||||
onOpen,
|
||||
}: PublicDashboardUrlProps): JSX.Element {
|
||||
return (
|
||||
<div className={styles.urlGroup}>
|
||||
<Typography.Text className={styles.urlLabel}>
|
||||
Public dashboard URL
|
||||
</Typography.Text>
|
||||
|
||||
<div className={styles.urlContainer}>
|
||||
<Typography.Text className={styles.urlText}>{url}</Typography.Text>
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="icon"
|
||||
aria-label="Copy public dashboard URL"
|
||||
testId="public-dashboard-copy-url"
|
||||
onClick={onCopy}
|
||||
>
|
||||
<Copy size={14} />
|
||||
</Button>
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="icon"
|
||||
aria-label="Open public dashboard in new tab"
|
||||
testId="public-dashboard-open-url"
|
||||
onClick={onOpen}
|
||||
>
|
||||
<ExternalLink size={14} />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardUrl;
|
||||
@@ -1,14 +0,0 @@
|
||||
export interface TimeRangePresetOption {
|
||||
label: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
// Default time-range presets offered for the public dashboard viewer.
|
||||
export const TIME_RANGE_PRESETS_OPTIONS: TimeRangePresetOption[] = [
|
||||
{ label: 'Last 5 minutes', value: '5m' },
|
||||
{ label: 'Last 15 minutes', value: '15m' },
|
||||
{ label: 'Last 30 minutes', value: '30m' },
|
||||
{ label: 'Last 1 hour', value: '1h' },
|
||||
{ label: 'Last 6 hours', value: '6h' },
|
||||
{ label: 'Last 1 day', value: '24h' },
|
||||
];
|
||||
@@ -1,71 +0,0 @@
|
||||
import type { DashboardtypesGettableDashboardV2DTO } from 'api/generated/services/sigNoz.schemas';
|
||||
|
||||
import PublicDashboardActions from './PublicDashboardActions';
|
||||
import PublicDashboardCallout from './PublicDashboardCallout';
|
||||
import PublicDashboardSettingsForm from './PublicDashboardSettingsForm';
|
||||
import PublicDashboardStatus from './PublicDashboardStatus';
|
||||
import PublicDashboardUrl from './PublicDashboardUrl';
|
||||
import { usePublicDashboard } from './usePublicDashboard';
|
||||
import styles from './PublicDashboard.module.scss';
|
||||
|
||||
interface PublicDashboardSettingsProps {
|
||||
dashboard: DashboardtypesGettableDashboardV2DTO;
|
||||
}
|
||||
|
||||
function PublicDashboardSettings({
|
||||
dashboard,
|
||||
}: PublicDashboardSettingsProps): JSX.Element {
|
||||
const {
|
||||
isPublic,
|
||||
isAdmin,
|
||||
isLoading,
|
||||
isPublishing,
|
||||
isUpdating,
|
||||
isUnpublishing,
|
||||
timeRangeEnabled,
|
||||
defaultTimeRange,
|
||||
publicUrl,
|
||||
setTimeRangeEnabled,
|
||||
setDefaultTimeRange,
|
||||
onPublish,
|
||||
onUpdate,
|
||||
onUnpublish,
|
||||
onCopyUrl,
|
||||
onOpenUrl,
|
||||
} = usePublicDashboard(dashboard.id);
|
||||
|
||||
const controlsDisabled = isLoading || !isAdmin;
|
||||
|
||||
return (
|
||||
<div className={styles.publicDashboardCard}>
|
||||
<PublicDashboardStatus isPublic={isPublic} />
|
||||
|
||||
<PublicDashboardSettingsForm
|
||||
timeRangeEnabled={timeRangeEnabled}
|
||||
defaultTimeRange={defaultTimeRange}
|
||||
disabled={controlsDisabled}
|
||||
onTimeRangeEnabledChange={setTimeRangeEnabled}
|
||||
onDefaultTimeRangeChange={setDefaultTimeRange}
|
||||
/>
|
||||
|
||||
{isPublic && (
|
||||
<PublicDashboardUrl url={publicUrl} onCopy={onCopyUrl} onOpen={onOpenUrl} />
|
||||
)}
|
||||
|
||||
<PublicDashboardCallout />
|
||||
|
||||
<PublicDashboardActions
|
||||
isPublic={isPublic}
|
||||
disabled={controlsDisabled}
|
||||
isPublishing={isPublishing}
|
||||
isUpdating={isUpdating}
|
||||
isUnpublishing={isUnpublishing}
|
||||
onPublish={onPublish}
|
||||
onUpdate={onUpdate}
|
||||
onUnpublish={onUnpublish}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PublicDashboardSettings;
|
||||
@@ -1,197 +0,0 @@
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { useQueryClient } from 'react-query';
|
||||
import { useCopyToClipboard } from 'react-use';
|
||||
import { toast } from '@signozhq/ui/sonner';
|
||||
import {
|
||||
invalidateGetPublicDashboard,
|
||||
useCreatePublicDashboard,
|
||||
useDeletePublicDashboard,
|
||||
useGetPublicDashboard,
|
||||
useUpdatePublicDashboard,
|
||||
} from 'api/generated/services/dashboard';
|
||||
import { DEFAULT_TIME_RANGE } from 'container/TopNav/DateTimeSelectionV2/constants';
|
||||
import { useAppContext } from 'providers/App/App';
|
||||
import { useErrorModal } from 'providers/ErrorModalProvider';
|
||||
import APIError from 'types/api/error';
|
||||
import { USER_ROLES } from 'types/roles';
|
||||
import { getAbsoluteUrl } from 'utils/basePath';
|
||||
import { openInNewTab } from 'utils/navigation';
|
||||
|
||||
export interface UsePublicDashboardReturn {
|
||||
isPublic: boolean;
|
||||
isAdmin: boolean;
|
||||
isLoading: boolean;
|
||||
isPublishing: boolean;
|
||||
isUpdating: boolean;
|
||||
isUnpublishing: boolean;
|
||||
timeRangeEnabled: boolean;
|
||||
defaultTimeRange: string;
|
||||
publicUrl: string;
|
||||
setTimeRangeEnabled: (value: boolean) => void;
|
||||
setDefaultTimeRange: (value: string) => void;
|
||||
onPublish: () => void;
|
||||
onUpdate: () => void;
|
||||
onUnpublish: () => void;
|
||||
onCopyUrl: () => void;
|
||||
onOpenUrl: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encapsulates the public-dashboard query, the create/update/delete mutations and the
|
||||
* local form state for the V2 publish settings section. Targets the same
|
||||
* `/dashboards/{id}/public` endpoint as V1 via the generated client.
|
||||
*/
|
||||
export function usePublicDashboard(
|
||||
dashboardId: string,
|
||||
): UsePublicDashboardReturn {
|
||||
const queryClient = useQueryClient();
|
||||
const { showErrorModal } = useErrorModal();
|
||||
const { user } = useAppContext();
|
||||
const isAdmin = user?.role === USER_ROLES.ADMIN;
|
||||
const [, copyToClipboard] = useCopyToClipboard();
|
||||
|
||||
const [timeRangeEnabled, setTimeRangeEnabled] = useState<boolean>(true);
|
||||
const [defaultTimeRange, setDefaultTimeRange] =
|
||||
useState<string>(DEFAULT_TIME_RANGE);
|
||||
|
||||
const {
|
||||
data,
|
||||
isLoading: isLoadingMeta,
|
||||
isFetching,
|
||||
error,
|
||||
refetch,
|
||||
} = useGetPublicDashboard(
|
||||
{ id: dashboardId },
|
||||
{ query: { enabled: !!dashboardId, retry: false } },
|
||||
);
|
||||
|
||||
// react-query retains the last successful `data` even after a refetch errors, so
|
||||
// after unpublishing (the refetch 404s) `data` still holds the old publicPath.
|
||||
// Gate on `!error` so the UI flips back to the private state.
|
||||
const publicMeta = error ? undefined : data?.data;
|
||||
const isPublic = !!publicMeta?.publicPath;
|
||||
|
||||
// Seed form state from the server config when published.
|
||||
useEffect(() => {
|
||||
if (publicMeta) {
|
||||
setTimeRangeEnabled(publicMeta.timeRangeEnabled ?? false);
|
||||
setDefaultTimeRange(publicMeta.defaultTimeRange || DEFAULT_TIME_RANGE);
|
||||
}
|
||||
}, [publicMeta]);
|
||||
|
||||
// A 404 (dashboard not published) surfaces as an error — reset to defaults.
|
||||
useEffect(() => {
|
||||
if (error) {
|
||||
setTimeRangeEnabled(true);
|
||||
setDefaultTimeRange(DEFAULT_TIME_RANGE);
|
||||
}
|
||||
}, [error]);
|
||||
|
||||
const publicUrl = useMemo(
|
||||
() => getAbsoluteUrl(publicMeta?.publicPath ?? ''),
|
||||
[publicMeta?.publicPath],
|
||||
);
|
||||
|
||||
const handleError = useCallback(
|
||||
(err: unknown): void => {
|
||||
showErrorModal(err as APIError);
|
||||
},
|
||||
[showErrorModal],
|
||||
);
|
||||
|
||||
const handleSuccess = useCallback(
|
||||
(message: string): void => {
|
||||
toast.success(message);
|
||||
void invalidateGetPublicDashboard(queryClient, { id: dashboardId });
|
||||
void refetch();
|
||||
},
|
||||
[queryClient, dashboardId, refetch],
|
||||
);
|
||||
|
||||
const { mutate: createPublicDashboard, isLoading: isPublishing } =
|
||||
useCreatePublicDashboard({
|
||||
mutation: {
|
||||
onSuccess: () => handleSuccess('Dashboard published successfully'),
|
||||
onError: handleError,
|
||||
},
|
||||
});
|
||||
|
||||
const { mutate: updatePublicDashboard, isLoading: isUpdating } =
|
||||
useUpdatePublicDashboard({
|
||||
mutation: {
|
||||
onSuccess: () => handleSuccess('Public dashboard updated successfully'),
|
||||
onError: handleError,
|
||||
},
|
||||
});
|
||||
|
||||
const { mutate: deletePublicDashboard, isLoading: isUnpublishing } =
|
||||
useDeletePublicDashboard({
|
||||
mutation: {
|
||||
onSuccess: () => handleSuccess('Dashboard unpublished successfully'),
|
||||
onError: handleError,
|
||||
},
|
||||
});
|
||||
|
||||
const onPublish = useCallback((): void => {
|
||||
if (!dashboardId) {
|
||||
return;
|
||||
}
|
||||
createPublicDashboard({
|
||||
pathParams: { id: dashboardId },
|
||||
data: { timeRangeEnabled, defaultTimeRange },
|
||||
});
|
||||
}, [createPublicDashboard, dashboardId, timeRangeEnabled, defaultTimeRange]);
|
||||
|
||||
const onUpdate = useCallback((): void => {
|
||||
if (!dashboardId) {
|
||||
return;
|
||||
}
|
||||
updatePublicDashboard({
|
||||
pathParams: { id: dashboardId },
|
||||
data: { timeRangeEnabled, defaultTimeRange },
|
||||
});
|
||||
}, [updatePublicDashboard, dashboardId, timeRangeEnabled, defaultTimeRange]);
|
||||
|
||||
const onUnpublish = useCallback((): void => {
|
||||
if (!dashboardId) {
|
||||
return;
|
||||
}
|
||||
deletePublicDashboard({ pathParams: { id: dashboardId } });
|
||||
}, [deletePublicDashboard, dashboardId]);
|
||||
|
||||
const onCopyUrl = useCallback((): void => {
|
||||
if (!publicUrl) {
|
||||
return;
|
||||
}
|
||||
copyToClipboard(publicUrl);
|
||||
toast.success('Copied public dashboard URL successfully');
|
||||
}, [copyToClipboard, publicUrl]);
|
||||
|
||||
const onOpenUrl = useCallback((): void => {
|
||||
if (publicUrl) {
|
||||
openInNewTab(publicUrl);
|
||||
}
|
||||
}, [publicUrl]);
|
||||
|
||||
const isLoading =
|
||||
isLoadingMeta || isFetching || isPublishing || isUpdating || isUnpublishing;
|
||||
|
||||
return {
|
||||
isPublic,
|
||||
isAdmin,
|
||||
isLoading,
|
||||
isPublishing,
|
||||
isUpdating,
|
||||
isUnpublishing,
|
||||
timeRangeEnabled,
|
||||
defaultTimeRange,
|
||||
publicUrl,
|
||||
setTimeRangeEnabled,
|
||||
setDefaultTimeRange,
|
||||
onPublish,
|
||||
onUpdate,
|
||||
onUnpublish,
|
||||
onCopyUrl,
|
||||
onOpenUrl,
|
||||
};
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
import type { DashboardtypesGettableDashboardV2DTO } from 'api/generated/services/sigNoz.schemas';
|
||||
|
||||
import Overview from './Overview';
|
||||
import PublicDashboardSettings from './PublicDashboard';
|
||||
import { SettingsTabPlaceholder } from './utils';
|
||||
import VariablesSettings from './Variables';
|
||||
import { useAppContext } from 'providers/App/App';
|
||||
import { useGetTenantLicense } from 'hooks/useGetTenantLicense';
|
||||
@@ -52,14 +52,15 @@ function DashboardSettings({ dashboard }: DashboardSettingsProps): JSX.Element {
|
||||
key: TabKeys.VARIABLES,
|
||||
label: TabKeys.VARIABLES,
|
||||
children: <VariablesSettings dashboard={dashboard} />,
|
||||
prefixIcon: <Braces size={14} />,
|
||||
},
|
||||
...(enablePublicDashboard
|
||||
? [
|
||||
{
|
||||
key: TabKeys.PUBLISH,
|
||||
label: TabKeys.PUBLISH,
|
||||
children: <PublicDashboardSettings dashboard={dashboard} />,
|
||||
children: (
|
||||
<SettingsTabPlaceholder message="V2 public dashboard publishing coming next." />
|
||||
),
|
||||
disabled: user?.role !== USER_ROLES.ADMIN,
|
||||
},
|
||||
]
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import { Empty } from 'antd';
|
||||
import { Typography } from '@signozhq/ui/typography';
|
||||
|
||||
import styles from './DashboardSettings.module.scss';
|
||||
|
||||
/**
|
||||
* TEMPORARY: stand-in for the not-yet-built Variables / Publish settings tabs.
|
||||
* Will be cleaned up later once those tabs ship their real content.
|
||||
*/
|
||||
export function SettingsTabPlaceholder({
|
||||
message,
|
||||
}: {
|
||||
message: string;
|
||||
}): JSX.Element {
|
||||
return (
|
||||
<div className={styles.placeholder}>
|
||||
<Empty
|
||||
image={Empty.PRESENTED_IMAGE_SIMPLE}
|
||||
description={<Typography.Text>{message}</Typography.Text>}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -269,6 +269,67 @@ func TestCompositeKeyFromLabels(t *testing.T) {
|
||||
groupBy: []qbtypes.GroupByKey{groupByKey("a"), groupByKey("m"), groupByKey("z")},
|
||||
expected: "first\x00middle\x00last",
|
||||
},
|
||||
{
|
||||
// deployments default group identity: (deployment, namespace).
|
||||
name: "deployment and namespace group-by",
|
||||
labels: map[string]string{
|
||||
"k8s.deployment.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{deploymentNameGroupByKey, namespaceNameGroupByKey},
|
||||
expected: "web-1\x00ns-x",
|
||||
},
|
||||
{
|
||||
// statefulsets default group identity: (statefulset, namespace).
|
||||
name: "statefulset and namespace group-by",
|
||||
labels: map[string]string{
|
||||
"k8s.statefulset.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{statefulSetNameGroupByKey, namespaceNameGroupByKey},
|
||||
expected: "web-1\x00ns-x",
|
||||
},
|
||||
{
|
||||
// jobs default group identity: (job, namespace).
|
||||
name: "job and namespace group-by",
|
||||
labels: map[string]string{
|
||||
"k8s.job.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{jobNameGroupByKey, namespaceNameGroupByKey},
|
||||
expected: "web-1\x00ns-x",
|
||||
},
|
||||
{
|
||||
// daemonsets default group identity: (daemonset, namespace).
|
||||
name: "daemonset and namespace group-by",
|
||||
labels: map[string]string{
|
||||
"k8s.daemonset.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{daemonSetNameGroupByKey, namespaceNameGroupByKey},
|
||||
expected: "web-1\x00ns-x",
|
||||
},
|
||||
{
|
||||
// workload default group identity with cluster: (name, namespace, cluster).
|
||||
name: "name, namespace and cluster group-by",
|
||||
labels: map[string]string{
|
||||
"k8s.deployment.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
"k8s.cluster.name": "cluster-a",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{deploymentNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey},
|
||||
expected: "web-1\x00ns-x\x00cluster-a",
|
||||
},
|
||||
{
|
||||
// absent cluster label -> empty trailing segment (Helm-less / self-configured collector).
|
||||
name: "missing cluster label yields empty trailing segment",
|
||||
labels: map[string]string{
|
||||
"k8s.deployment.name": "web-1",
|
||||
"k8s.namespace.name": "ns-x",
|
||||
},
|
||||
groupBy: []qbtypes.GroupByKey{deploymentNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey},
|
||||
expected: "web-1\x00ns-x\x00",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
@@ -620,7 +620,7 @@ func (m *module) ListDeployments(ctx context.Context, orgID valuer.UUID, req *in
|
||||
}
|
||||
|
||||
if len(req.GroupBy) == 0 {
|
||||
req.GroupBy = []qbtypes.GroupByKey{deploymentNameGroupByKey}
|
||||
req.GroupBy = []qbtypes.GroupByKey{deploymentNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey}
|
||||
resp.Type = inframonitoringtypes.ResponseTypeList
|
||||
} else {
|
||||
resp.Type = inframonitoringtypes.ResponseTypeGroupedList
|
||||
@@ -710,7 +710,7 @@ func (m *module) ListStatefulSets(ctx context.Context, orgID valuer.UUID, req *i
|
||||
}
|
||||
|
||||
if len(req.GroupBy) == 0 {
|
||||
req.GroupBy = []qbtypes.GroupByKey{statefulSetNameGroupByKey}
|
||||
req.GroupBy = []qbtypes.GroupByKey{statefulSetNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey}
|
||||
resp.Type = inframonitoringtypes.ResponseTypeList
|
||||
} else {
|
||||
resp.Type = inframonitoringtypes.ResponseTypeGroupedList
|
||||
@@ -802,7 +802,7 @@ func (m *module) ListJobs(ctx context.Context, orgID valuer.UUID, req *inframoni
|
||||
}
|
||||
|
||||
if len(req.GroupBy) == 0 {
|
||||
req.GroupBy = []qbtypes.GroupByKey{jobNameGroupByKey}
|
||||
req.GroupBy = []qbtypes.GroupByKey{jobNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey}
|
||||
resp.Type = inframonitoringtypes.ResponseTypeList
|
||||
} else {
|
||||
resp.Type = inframonitoringtypes.ResponseTypeGroupedList
|
||||
@@ -894,7 +894,7 @@ func (m *module) ListDaemonSets(ctx context.Context, orgID valuer.UUID, req *inf
|
||||
}
|
||||
|
||||
if len(req.GroupBy) == 0 {
|
||||
req.GroupBy = []qbtypes.GroupByKey{daemonSetNameGroupByKey}
|
||||
req.GroupBy = []qbtypes.GroupByKey{daemonSetNameGroupByKey, namespaceNameGroupByKey, clusterNameGroupByKey}
|
||||
resp.Type = inframonitoringtypes.ResponseTypeList
|
||||
} else {
|
||||
resp.Type = inframonitoringtypes.ResponseTypeGroupedList
|
||||
|
||||
@@ -38,7 +38,7 @@ func newTestDashboardV2(t *testing.T, orgID valuer.UUID, source Source) *Dashboa
|
||||
FillMode: FillModeSolid,
|
||||
SpanGaps: SpanGaps{FillLessThan: valuer.MustParseTextDuration("60s")},
|
||||
},
|
||||
Legend: Legend{Position: LegendPositionBottom, Mode: LegendModeList},
|
||||
Legend: Legend{Position: LegendPositionBottom},
|
||||
},
|
||||
},
|
||||
Queries: []Query{
|
||||
|
||||
@@ -569,24 +569,6 @@ func TestInvalidateBadPanelSpecValues(t *testing.T) {
|
||||
}`,
|
||||
wantContain: "legend position",
|
||||
},
|
||||
{
|
||||
name: "bad legend mode",
|
||||
data: `{
|
||||
"panels": {
|
||||
"p1": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"plugin": {
|
||||
"kind": "signoz/BarChartPanel",
|
||||
"spec": {"legend": {"mode": "grid"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"layouts": []
|
||||
}`,
|
||||
wantContain: "legend mode",
|
||||
},
|
||||
{
|
||||
name: "bad threshold format",
|
||||
data: `{
|
||||
@@ -652,39 +634,6 @@ func TestInvalidateBadPanelSpecValues(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Label on ThresholdWithLabel is optional — the backend never reads it, so a
|
||||
// threshold with an omitted or empty label must validate cleanly.
|
||||
func TestThresholdLabelOptional(t *testing.T) {
|
||||
for _, tt := range []struct {
|
||||
name string
|
||||
threshold string
|
||||
}{
|
||||
{name: "label omitted", threshold: `{"value": 100, "color": "Red"}`},
|
||||
{name: "label empty", threshold: `{"value": 100, "color": "Red", "label": ""}`},
|
||||
} {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
data := []byte(`{
|
||||
"panels": {
|
||||
"p1": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"plugin": {"kind": "signoz/TimeSeriesPanel", "spec": {"thresholds": [` + tt.threshold + `]}},
|
||||
"queries": [{"kind": "time_series", "spec": {"plugin": {"kind": "signoz/PromQLQuery", "spec": {"name": "A", "query": "up"}}}}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"layouts": []
|
||||
}`)
|
||||
d, err := unmarshalDashboard(data)
|
||||
require.NoError(t, err, "threshold without a label should validate")
|
||||
|
||||
spec := d.Panels["p1"].Spec.Plugin.Spec.(*TimeSeriesPanelSpec)
|
||||
require.Len(t, spec.Thresholds, 1)
|
||||
require.Empty(t, spec.Thresholds[0].Label, "label should remain empty")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidatePanelWithoutQueries(t *testing.T) {
|
||||
data := []byte(`{
|
||||
"panels": {
|
||||
@@ -800,6 +749,11 @@ func TestValidateRequiredFields(t *testing.T) {
|
||||
data: wrapPanel("signoz/TimeSeriesPanel", `{"thresholds": [{"value": 100, "label": "high", "color": ""}]}`),
|
||||
wantContain: "Color",
|
||||
},
|
||||
{
|
||||
name: "ThresholdWithLabel missing label",
|
||||
data: wrapPanel("signoz/TimeSeriesPanel", `{"thresholds": [{"value": 100, "color": "Red", "label": ""}]}`),
|
||||
wantContain: "Label",
|
||||
},
|
||||
{
|
||||
name: "ComparisonThreshold missing value",
|
||||
data: wrapPanel("signoz/NumberPanel", `{"thresholds": [{"operator": "above", "format": "text", "color": "Red"}]}`),
|
||||
@@ -857,11 +811,10 @@ func TestTimeSeriesPanelDefaults(t *testing.T) {
|
||||
require.Equal(t, "2", spec.Formatting.DecimalPrecision.ValueOrDefault(), "expected DecimalPrecision default 2")
|
||||
require.Equal(t, "spline", spec.ChartAppearance.LineInterpolation.ValueOrDefault(), "expected LineInterpolation default spline")
|
||||
require.Equal(t, "solid", spec.ChartAppearance.LineStyle.ValueOrDefault(), "expected LineStyle default solid")
|
||||
require.Equal(t, "none", spec.ChartAppearance.FillMode.ValueOrDefault(), "expected FillMode default none")
|
||||
require.Equal(t, "solid", spec.ChartAppearance.FillMode.ValueOrDefault(), "expected FillMode default solid")
|
||||
require.False(t, spec.ChartAppearance.SpanGaps.FillOnlyBelow, "expected SpanGaps.FillOnlyBelow default false")
|
||||
require.Equal(t, "global_time", spec.Visualization.TimePreference.ValueOrDefault(), "expected TimePreference default global_time")
|
||||
require.Equal(t, "bottom", spec.Legend.Position.ValueOrDefault(), "expected LegendPosition default bottom")
|
||||
require.Equal(t, "list", spec.Legend.Mode.ValueOrDefault(), "expected LegendMode default list")
|
||||
|
||||
// Re-marshal the full dashboard (what we'd store in DB / return in API response)
|
||||
// and verify the output contains the default values.
|
||||
@@ -872,10 +825,9 @@ func TestTimeSeriesPanelDefaults(t *testing.T) {
|
||||
"decimalPrecision": `"2"`,
|
||||
"lineInterpolation": `"spline"`,
|
||||
"lineStyle": `"solid"`,
|
||||
"fillMode": `"none"`,
|
||||
"fillMode": `"solid"`,
|
||||
"timePreference": `"global_time"`,
|
||||
"position": `"bottom"`,
|
||||
"mode": `"list"`,
|
||||
} {
|
||||
assert.Contains(t, outputStr, `"`+field+`":`+want, "expected stored/response JSON to contain %s:%s", field, want)
|
||||
}
|
||||
@@ -978,7 +930,7 @@ func TestStorageRoundTrip(t *testing.T) {
|
||||
assert.Equal(t, "2", tsSpec.Formatting.DecimalPrecision.ValueOrDefault())
|
||||
assert.Equal(t, "spline", tsSpec.ChartAppearance.LineInterpolation.ValueOrDefault())
|
||||
assert.Equal(t, "solid", tsSpec.ChartAppearance.LineStyle.ValueOrDefault())
|
||||
assert.Equal(t, "none", tsSpec.ChartAppearance.FillMode.ValueOrDefault())
|
||||
assert.Equal(t, "solid", tsSpec.ChartAppearance.FillMode.ValueOrDefault())
|
||||
assert.Equal(t, "global_time", tsSpec.Visualization.TimePreference.ValueOrDefault())
|
||||
assert.Equal(t, "bottom", tsSpec.Legend.Position.ValueOrDefault())
|
||||
numSpec := d.Panels["p2"].Spec.Plugin.Spec.(*NumberPanelSpec)
|
||||
@@ -998,7 +950,7 @@ func TestStorageRoundTrip(t *testing.T) {
|
||||
assert.Equal(t, "2", tsLoaded.Formatting.DecimalPrecision.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "spline", tsLoaded.ChartAppearance.LineInterpolation.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "solid", tsLoaded.ChartAppearance.LineStyle.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "none", tsLoaded.ChartAppearance.FillMode.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "solid", tsLoaded.ChartAppearance.FillMode.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "global_time", tsLoaded.Visualization.TimePreference.ValueOrDefault(), "after load")
|
||||
assert.Equal(t, "bottom", tsLoaded.Legend.Position.ValueOrDefault(), "after load")
|
||||
numLoaded := loaded.Panels["p2"].Spec.Plugin.Spec.(*NumberPanelSpec)
|
||||
@@ -1014,7 +966,7 @@ func TestStorageRoundTrip(t *testing.T) {
|
||||
"decimalPrecision": `"2"`,
|
||||
"lineInterpolation": `"spline"`,
|
||||
"lineStyle": `"solid"`,
|
||||
"fillMode": `"none"`,
|
||||
"fillMode": `"solid"`,
|
||||
"timePreference": `"global_time"`,
|
||||
"position": `"bottom"`,
|
||||
"format": `"text"`,
|
||||
|
||||
@@ -241,7 +241,6 @@ type TableFormatting struct {
|
||||
|
||||
type Legend struct {
|
||||
Position LegendPosition `json:"position"`
|
||||
Mode LegendMode `json:"mode"`
|
||||
CustomColors map[string]string `json:"customColors"`
|
||||
}
|
||||
|
||||
@@ -249,7 +248,7 @@ type ThresholdWithLabel struct {
|
||||
Value float64 `json:"value" validate:"required" required:"true"`
|
||||
Unit string `json:"unit"`
|
||||
Color string `json:"color" validate:"required" required:"true"`
|
||||
Label string `json:"label"`
|
||||
Label string `json:"label" validate:"required" required:"true"`
|
||||
}
|
||||
|
||||
type ComparisonThreshold struct {
|
||||
@@ -359,47 +358,6 @@ func (l *LegendPosition) UnmarshalJSON(data []byte) error {
|
||||
}
|
||||
}
|
||||
|
||||
type LegendMode struct{ valuer.String }
|
||||
|
||||
var (
|
||||
LegendModeList = LegendMode{valuer.NewString("list")} // default
|
||||
LegendModeTable = LegendMode{valuer.NewString("table")}
|
||||
)
|
||||
|
||||
func (LegendMode) Enum() []any {
|
||||
return []any{LegendModeList, LegendModeTable}
|
||||
}
|
||||
|
||||
func (m LegendMode) ValueOrDefault() string {
|
||||
if m.IsZero() {
|
||||
return LegendModeList.StringValue()
|
||||
}
|
||||
return m.StringValue()
|
||||
}
|
||||
|
||||
func (m LegendMode) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(m.ValueOrDefault())
|
||||
}
|
||||
|
||||
func (m *LegendMode) UnmarshalJSON(data []byte) error {
|
||||
var v string
|
||||
if err := json.Unmarshal(data, &v); err != nil {
|
||||
return errors.WrapInvalidInputf(err, ErrCodeDashboardInvalidInput, "invalid legend mode: must be a string, one of `list` or `table`")
|
||||
}
|
||||
if v == "" {
|
||||
*m = LegendModeList
|
||||
return nil
|
||||
}
|
||||
lm := LegendMode{valuer.NewString(v)}
|
||||
switch lm {
|
||||
case LegendModeList, LegendModeTable:
|
||||
*m = lm
|
||||
return nil
|
||||
default:
|
||||
return errors.NewInvalidInputf(ErrCodeDashboardInvalidInput, "invalid legend mode %q: must be `list` or `table`", v)
|
||||
}
|
||||
}
|
||||
|
||||
type ThresholdFormat struct{ valuer.String }
|
||||
|
||||
var (
|
||||
@@ -576,9 +534,9 @@ func (ls *LineStyle) UnmarshalJSON(data []byte) error {
|
||||
type FillMode struct{ valuer.String }
|
||||
|
||||
var (
|
||||
FillModeSolid = FillMode{valuer.NewString("solid")}
|
||||
FillModeSolid = FillMode{valuer.NewString("solid")} // default
|
||||
FillModeGradient = FillMode{valuer.NewString("gradient")}
|
||||
FillModeNone = FillMode{valuer.NewString("none")} // default
|
||||
FillModeNone = FillMode{valuer.NewString("none")}
|
||||
)
|
||||
|
||||
func (FillMode) Enum() []any {
|
||||
@@ -587,7 +545,7 @@ func (FillMode) Enum() []any {
|
||||
|
||||
func (fm FillMode) ValueOrDefault() string {
|
||||
if fm.IsZero() {
|
||||
return FillModeNone.StringValue()
|
||||
return FillModeSolid.StringValue()
|
||||
}
|
||||
return fm.StringValue()
|
||||
}
|
||||
@@ -602,7 +560,7 @@ func (fm *FillMode) UnmarshalJSON(data []byte) error {
|
||||
return errors.WrapInvalidInputf(err, ErrCodeDashboardInvalidInput, "invalid fill mode: must be a string, one of `solid`, `gradient`, or `none`")
|
||||
}
|
||||
if v == "" {
|
||||
*fm = FillModeNone
|
||||
*fm = FillModeSolid
|
||||
return nil
|
||||
}
|
||||
val := FillMode{valuer.NewString(v)}
|
||||
@@ -615,9 +573,12 @@ func (fm *FillMode) UnmarshalJSON(data []byte) error {
|
||||
}
|
||||
}
|
||||
|
||||
// SpanGaps controls whether lines connect across null values.
|
||||
// When FillOnlyBelow is false (default), all gaps are connected.
|
||||
// When FillOnlyBelow is true, only gaps smaller than FillLessThan are connected.
|
||||
type SpanGaps struct {
|
||||
FillOnlyBelow bool `json:"fillOnlyBelow" description:"Controls whether lines connect across null values. When false (default), all gaps are connected. When true, only gaps smaller than fillLessThan are connected."`
|
||||
FillLessThan valuer.TextDuration `json:"fillLessThan" description:"The maximum gap size to connect when fillOnlyBelow is true. Gaps larger than this duration are left disconnected."`
|
||||
FillOnlyBelow bool `json:"fillOnlyBelow"`
|
||||
FillLessThan valuer.TextDuration `json:"fillLessThan"`
|
||||
}
|
||||
|
||||
type PrecisionOption struct{ valuer.String }
|
||||
|
||||
108
tests/integration/testdata/inframonitoring/daemonsets_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
108
tests/integration/testdata/inframonitoring/daemonsets_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g1-p1-uid","k8s.pod.name":"dup-ds-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ds-g2-p1-uid","k8s.pod.name":"dup-ds-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ds-g3-p1-uid","k8s.pod.name":"dup-ds-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ds-g4-p1-uid","k8s.pod.name":"dup-ds-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.desired_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.daemonset.current_scheduled_nodes","labels":{"k8s.daemonset.name":"dup-ds","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
108
tests/integration/testdata/inframonitoring/deployments_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
108
tests/integration/testdata/inframonitoring/deployments_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g1-p1-uid","k8s.pod.name":"dup-dep-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-dep-g2-p1-uid","k8s.pod.name":"dup-dep-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-dep-g3-p1-uid","k8s.pod.name":"dup-dep-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-dep-g4-p1-uid","k8s.pod.name":"dup-dep-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.desired","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.deployment.available","labels":{"k8s.deployment.name":"dup-dep","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
132
tests/integration/testdata/inframonitoring/jobs_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
132
tests/integration/testdata/inframonitoring/jobs_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g1-p1-uid","k8s.pod.name":"dup-job-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-job-g2-p1-uid","k8s.pod.name":"dup-job-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-job-g3-p1-uid","k8s.pod.name":"dup-job-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-job-g4-p1-uid","k8s.pod.name":"dup-job-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.desired_successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.active_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.failed_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.job.successful_pods","labels":{"k8s.job.name":"dup-job","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
108
tests/integration/testdata/inframonitoring/statefulsets_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
108
tests/integration/testdata/inframonitoring/statefulsets_same_name_across_ns_and_clusters.jsonl
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":100000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.6,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.7,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g1-p1-uid","k8s.pod.name":"dup-ss-g1-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.9,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":500000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a","k8s.pod.uid":"dup-ss-g2-p1-uid","k8s.pod.name":"dup-ss-g2-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":3,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-y","k8s.cluster.name":"cluster-a"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:00:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:02:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":300000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.5,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b","k8s.pod.uid":"dup-ss-g3-p1-uid","k8s.pod.name":"dup-ss-g3-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":2,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.cluster.name":"cluster-b"},"timestamp":"2025-01-10T10:04:00+00:00","value":4,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:00:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:02:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu.usage","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.cpu_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory.working_set","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":200000000.0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_request_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.memory_limit_utilization","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":0.1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.pod.phase","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x","k8s.pod.uid":"dup-ss-g4-p1-uid","k8s.pod.name":"dup-ss-g4-p1"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.desired_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":1,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
{"metric_name":"k8s.statefulset.current_pods","labels":{"k8s.statefulset.name":"dup-ss","k8s.namespace.name":"ns-x"},"timestamp":"2025-01-10T10:04:00+00:00","value":0,"temporality":"Unspecified","type_":"Gauge","is_monotonic":false}
|
||||
@@ -424,23 +424,128 @@ def test_deployments_base_filter_drops_non_deployment_pods(
|
||||
assert all(r["deploymentName"] != "" for r in data["records"])
|
||||
|
||||
|
||||
# Float record fields compared with tolerance; everything else compared with ==.
|
||||
_GROUPBY_FLOAT_FIELDS = {
|
||||
"deploymentCPU",
|
||||
"deploymentCPURequest",
|
||||
"deploymentCPULimit",
|
||||
"deploymentMemory",
|
||||
"deploymentMemoryRequest",
|
||||
"deploymentMemoryLimit",
|
||||
}
|
||||
|
||||
|
||||
def _phase(pending=0, running=0, succeeded=0, failed=0, unknown=0) -> dict:
|
||||
return {"pending": pending, "running": running, "succeeded": succeeded, "failed": failed, "unknown": unknown}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"group_key,expected_running",
|
||||
"scenario",
|
||||
[
|
||||
# groupBy=[k8s.deployment.name]: one record per deployment,
|
||||
# deploymentName populated (deployments.go:28-31). 1 running pod each.
|
||||
# Explicit groupBy=[k8s.deployment.name]: one record per deployment,
|
||||
# deploymentName populated (deployments.go:28-31), response grouped_list.
|
||||
# 1 running pod each.
|
||||
pytest.param(
|
||||
"k8s.deployment.name",
|
||||
{"gb-dep-a1": 1, "gb-dep-a2": 1, "gb-dep-b1": 1, "gb-dep-b2": 1},
|
||||
{
|
||||
"fixture": "deployments_groupby.jsonl",
|
||||
"group_by": "k8s.deployment.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.deployment.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-dep-a1": {"deploymentName": "gb-dep-a1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-dep-a2": {"deploymentName": "gb-dep-a2", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-dep-b1": {"deploymentName": "gb-dep-b1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-dep-b2": {"deploymentName": "gb-dep-b2", "podCountsByPhase": _phase(running=1)},
|
||||
},
|
||||
},
|
||||
id="deployment_name",
|
||||
),
|
||||
# groupBy=[k8s.namespace.name]: aggregated across each namespace's 2
|
||||
# deployments, deploymentName cleared. 2 x 1 = 2 running pods each.
|
||||
# Explicit groupBy=[k8s.namespace.name]: aggregated across each namespace's
|
||||
# 2 deployments, deploymentName cleared, response grouped_list. 2 running each.
|
||||
pytest.param(
|
||||
"k8s.namespace.name",
|
||||
{"gb-ns-a": 2, "gb-ns-b": 2},
|
||||
{
|
||||
"fixture": "deployments_groupby.jsonl",
|
||||
"group_by": "k8s.namespace.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.namespace.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ns-a": {"deploymentName": "", "podCountsByPhase": _phase(running=2)},
|
||||
"gb-ns-b": {"deploymentName": "", "podCountsByPhase": _phase(running=2)},
|
||||
},
|
||||
},
|
||||
id="namespace",
|
||||
),
|
||||
# Default groupBy (no groupBy in request) => [k8s.deployment.name,
|
||||
# k8s.namespace.name, k8s.cluster.name] (module.go ListDeployments),
|
||||
# response list. Same workload name must NOT collapse across namespaces OR
|
||||
# clusters; the empty-cluster group (k8s.cluster.name label absent on the
|
||||
# source pods) must appear as its own row with real metrics, not be dropped.
|
||||
# Single pod per group => SpaceAggregationSum == Avg == seeded value.
|
||||
# Fails on the pre-cluster default (name+ns) — the three ns-x groups would
|
||||
# collapse into one summed row.
|
||||
pytest.param(
|
||||
{
|
||||
"fixture": "deployments_same_name_across_ns_and_clusters.jsonl",
|
||||
"group_by": None,
|
||||
"filter": "k8s.deployment.name = 'dup-dep'",
|
||||
"group_meta_keys": ["k8s.deployment.name", "k8s.namespace.name", "k8s.cluster.name"],
|
||||
"expected_type": "list",
|
||||
"groups": {
|
||||
("dup-dep", "ns-x", "cluster-a"): {
|
||||
"deploymentName": "dup-dep",
|
||||
"deploymentCPU": 0.3,
|
||||
"deploymentCPURequest": 0.6,
|
||||
"deploymentCPULimit": 0.7,
|
||||
"deploymentMemory": 100000000.0,
|
||||
"deploymentMemoryRequest": 0.6,
|
||||
"deploymentMemoryLimit": 0.7,
|
||||
"desiredPods": 2,
|
||||
"availablePods": 2,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
("dup-dep", "ns-y", "cluster-a"): {
|
||||
"deploymentName": "dup-dep",
|
||||
"deploymentCPU": 0.9,
|
||||
"deploymentCPURequest": 0.2,
|
||||
"deploymentCPULimit": 0.3,
|
||||
"deploymentMemory": 500000000.0,
|
||||
"deploymentMemoryRequest": 0.2,
|
||||
"deploymentMemoryLimit": 0.3,
|
||||
"desiredPods": 3,
|
||||
"availablePods": 1,
|
||||
"podCountsByPhase": _phase(failed=1),
|
||||
},
|
||||
("dup-dep", "ns-x", "cluster-b"): {
|
||||
"deploymentName": "dup-dep",
|
||||
"deploymentCPU": 0.5,
|
||||
"deploymentCPURequest": 0.4,
|
||||
"deploymentCPULimit": 0.5,
|
||||
"deploymentMemory": 300000000.0,
|
||||
"deploymentMemoryRequest": 0.4,
|
||||
"deploymentMemoryLimit": 0.5,
|
||||
"desiredPods": 4,
|
||||
"availablePods": 4,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
# empty-cluster group: k8s.cluster.name label absent on the source pods.
|
||||
("dup-dep", "ns-x", ""): {
|
||||
"deploymentName": "dup-dep",
|
||||
"deploymentCPU": 0.1,
|
||||
"deploymentCPURequest": 0.1,
|
||||
"deploymentCPULimit": 0.1,
|
||||
"deploymentMemory": 200000000.0,
|
||||
"deploymentMemoryRequest": 0.1,
|
||||
"deploymentMemoryLimit": 0.1,
|
||||
"desiredPods": 1,
|
||||
"availablePods": 0,
|
||||
"podCountsByPhase": _phase(pending=1),
|
||||
},
|
||||
},
|
||||
},
|
||||
id="default_disambiguates_ns_and_cluster",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_deployments_groupby(
|
||||
@@ -448,55 +553,64 @@ def test_deployments_groupby(
|
||||
create_user_admin: None, # pylint: disable=unused-argument
|
||||
get_token,
|
||||
insert_metrics,
|
||||
group_key: str,
|
||||
expected_running: dict,
|
||||
scenario: dict,
|
||||
) -> None:
|
||||
"""groupBy returns one record per distinct group with aggregated pod-phase
|
||||
counts. deploymentName is populated only when grouping by k8s.deployment.name
|
||||
(deployments.go:28-31 list-vs-grouped branch); meta surfaces the groupBy key."""
|
||||
"""groupBy determines row identity. Explicit groupBy returns one grouped_list
|
||||
record per distinct group (deploymentName populated only when grouping by
|
||||
k8s.deployment.name; deployments.go:28-31). With no groupBy the default is
|
||||
[k8s.deployment.name, k8s.namespace.name, k8s.cluster.name] (module.go
|
||||
ListDeployments), so same-named deployments across namespaces/clusters stay as
|
||||
separate, un-collapsed list rows (incl. an absent-cluster group keyed by "").
|
||||
meta always surfaces the grouping key(s)."""
|
||||
now = datetime.now(tz=UTC).replace(microsecond=0)
|
||||
insert_metrics(
|
||||
Metrics.load_from_file(
|
||||
get_testdata_file_path("inframonitoring/deployments_groupby.jsonl"),
|
||||
get_testdata_file_path(f"inframonitoring/{scenario['fixture']}"),
|
||||
base_time=now - timedelta(minutes=4),
|
||||
)
|
||||
)
|
||||
|
||||
body: dict = {
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
}
|
||||
if scenario["group_by"] is not None:
|
||||
body["groupBy"] = [{"name": scenario["group_by"], "fieldDataType": "string", "fieldContext": "resource"}]
|
||||
if scenario["filter"] is not None:
|
||||
body["filter"] = {"expression": scenario["filter"]}
|
||||
|
||||
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
|
||||
response = requests.post(
|
||||
signoz.self.host_configs["8080"].get(ENDPOINT),
|
||||
headers={"authorization": f"Bearer {token}"},
|
||||
json={
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
"groupBy": [
|
||||
{
|
||||
"name": group_key,
|
||||
"fieldDataType": "string",
|
||||
"fieldContext": "resource",
|
||||
}
|
||||
],
|
||||
},
|
||||
json=body,
|
||||
timeout=5,
|
||||
)
|
||||
assert response.status_code == HTTPStatus.OK, response.text
|
||||
data = response.json()["data"]
|
||||
assert data["total"] == len(expected_running)
|
||||
|
||||
is_dep_group = group_key == "k8s.deployment.name"
|
||||
group_of = lambda r: r["deploymentName"] if is_dep_group else r["meta"][group_key] # noqa: E731 # pylint: disable=unnecessary-lambda-assignment
|
||||
by_group = {group_of(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(expected_running.keys())
|
||||
groups = scenario["groups"]
|
||||
meta_keys = scenario["group_meta_keys"]
|
||||
assert data["type"] == scenario["expected_type"]
|
||||
assert data["total"] == len(groups)
|
||||
|
||||
for group, running in expected_running.items():
|
||||
rec = by_group[group]
|
||||
# deploymentName populated per deployment when grouping by it, empty otherwise.
|
||||
assert rec["deploymentName"] == (group if is_dep_group else "")
|
||||
assert rec["podCountsByPhase"]["running"] == running
|
||||
for other in ("pending", "succeeded", "failed", "unknown"):
|
||||
assert rec["podCountsByPhase"][other] == 0
|
||||
assert group_key in rec["meta"], rec["meta"]
|
||||
def _gid(rec: dict):
|
||||
vals = [rec["meta"][k] for k in meta_keys]
|
||||
return vals[0] if len(vals) == 1 else tuple(vals)
|
||||
|
||||
by_group = {_gid(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(groups.keys())
|
||||
|
||||
for gid, exp in groups.items():
|
||||
rec = by_group[gid]
|
||||
for k in meta_keys:
|
||||
assert k in rec["meta"], rec["meta"]
|
||||
for field, val in exp.items():
|
||||
if field in _GROUPBY_FLOAT_FIELDS:
|
||||
assert compare_values(rec[field], val, 1e-6), f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
else:
|
||||
assert rec[field] == val, f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
|
||||
|
||||
def test_deployments_pagination(
|
||||
|
||||
@@ -424,23 +424,128 @@ def test_statefulsets_base_filter_drops_non_statefulset_pods(
|
||||
assert all(r["statefulSetName"] != "" for r in data["records"])
|
||||
|
||||
|
||||
# Float record fields compared with tolerance; everything else compared with ==.
|
||||
_GROUPBY_FLOAT_FIELDS = {
|
||||
"statefulSetCPU",
|
||||
"statefulSetCPURequest",
|
||||
"statefulSetCPULimit",
|
||||
"statefulSetMemory",
|
||||
"statefulSetMemoryRequest",
|
||||
"statefulSetMemoryLimit",
|
||||
}
|
||||
|
||||
|
||||
def _phase(pending=0, running=0, succeeded=0, failed=0, unknown=0) -> dict:
|
||||
return {"pending": pending, "running": running, "succeeded": succeeded, "failed": failed, "unknown": unknown}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"group_key,expected_running",
|
||||
"scenario",
|
||||
[
|
||||
# groupBy=[k8s.statefulset.name]: one record per statefulset,
|
||||
# statefulSetName populated (statefulsets.go:28-31). 1 running pod each.
|
||||
# Explicit groupBy=[k8s.statefulset.name]: one record per statefulset,
|
||||
# statefulSetName populated (statefulsets.go:28-31), response grouped_list.
|
||||
# 1 running pod each.
|
||||
pytest.param(
|
||||
"k8s.statefulset.name",
|
||||
{"gb-ss-a1": 1, "gb-ss-a2": 1, "gb-ss-b1": 1, "gb-ss-b2": 1},
|
||||
{
|
||||
"fixture": "statefulsets_groupby.jsonl",
|
||||
"group_by": "k8s.statefulset.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.statefulset.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ss-a1": {"statefulSetName": "gb-ss-a1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ss-a2": {"statefulSetName": "gb-ss-a2", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ss-b1": {"statefulSetName": "gb-ss-b1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ss-b2": {"statefulSetName": "gb-ss-b2", "podCountsByPhase": _phase(running=1)},
|
||||
},
|
||||
},
|
||||
id="statefulset_name",
|
||||
),
|
||||
# groupBy=[k8s.namespace.name]: aggregated across each namespace's 2
|
||||
# statefulsets, statefulSetName cleared. 2 x 1 = 2 running pods each.
|
||||
# Explicit groupBy=[k8s.namespace.name]: aggregated across each namespace's
|
||||
# 2 statefulsets, statefulSetName cleared, response grouped_list. 2 running each.
|
||||
pytest.param(
|
||||
"k8s.namespace.name",
|
||||
{"gb-ns-a": 2, "gb-ns-b": 2},
|
||||
{
|
||||
"fixture": "statefulsets_groupby.jsonl",
|
||||
"group_by": "k8s.namespace.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.namespace.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ns-a": {"statefulSetName": "", "podCountsByPhase": _phase(running=2)},
|
||||
"gb-ns-b": {"statefulSetName": "", "podCountsByPhase": _phase(running=2)},
|
||||
},
|
||||
},
|
||||
id="namespace",
|
||||
),
|
||||
# Default groupBy (no groupBy in request) => [k8s.statefulset.name,
|
||||
# k8s.namespace.name, k8s.cluster.name] (module.go ListStatefulSets),
|
||||
# response list. Same workload name must NOT collapse across namespaces OR
|
||||
# clusters; the empty-cluster group (k8s.cluster.name label absent on the
|
||||
# source pods) must appear as its own row with real metrics, not be dropped.
|
||||
# Single pod per group => SpaceAggregationSum == Avg == seeded value.
|
||||
# Fails on the pre-cluster default (name+ns) — the three ns-x groups would
|
||||
# collapse into one summed row.
|
||||
pytest.param(
|
||||
{
|
||||
"fixture": "statefulsets_same_name_across_ns_and_clusters.jsonl",
|
||||
"group_by": None,
|
||||
"filter": "k8s.statefulset.name = 'dup-ss'",
|
||||
"group_meta_keys": ["k8s.statefulset.name", "k8s.namespace.name", "k8s.cluster.name"],
|
||||
"expected_type": "list",
|
||||
"groups": {
|
||||
("dup-ss", "ns-x", "cluster-a"): {
|
||||
"statefulSetName": "dup-ss",
|
||||
"statefulSetCPU": 0.3,
|
||||
"statefulSetCPURequest": 0.6,
|
||||
"statefulSetCPULimit": 0.7,
|
||||
"statefulSetMemory": 100000000.0,
|
||||
"statefulSetMemoryRequest": 0.6,
|
||||
"statefulSetMemoryLimit": 0.7,
|
||||
"desiredPods": 2,
|
||||
"currentPods": 2,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
("dup-ss", "ns-y", "cluster-a"): {
|
||||
"statefulSetName": "dup-ss",
|
||||
"statefulSetCPU": 0.9,
|
||||
"statefulSetCPURequest": 0.2,
|
||||
"statefulSetCPULimit": 0.3,
|
||||
"statefulSetMemory": 500000000.0,
|
||||
"statefulSetMemoryRequest": 0.2,
|
||||
"statefulSetMemoryLimit": 0.3,
|
||||
"desiredPods": 3,
|
||||
"currentPods": 1,
|
||||
"podCountsByPhase": _phase(failed=1),
|
||||
},
|
||||
("dup-ss", "ns-x", "cluster-b"): {
|
||||
"statefulSetName": "dup-ss",
|
||||
"statefulSetCPU": 0.5,
|
||||
"statefulSetCPURequest": 0.4,
|
||||
"statefulSetCPULimit": 0.5,
|
||||
"statefulSetMemory": 300000000.0,
|
||||
"statefulSetMemoryRequest": 0.4,
|
||||
"statefulSetMemoryLimit": 0.5,
|
||||
"desiredPods": 4,
|
||||
"currentPods": 4,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
# empty-cluster group: k8s.cluster.name label absent on the source pods.
|
||||
("dup-ss", "ns-x", ""): {
|
||||
"statefulSetName": "dup-ss",
|
||||
"statefulSetCPU": 0.1,
|
||||
"statefulSetCPURequest": 0.1,
|
||||
"statefulSetCPULimit": 0.1,
|
||||
"statefulSetMemory": 200000000.0,
|
||||
"statefulSetMemoryRequest": 0.1,
|
||||
"statefulSetMemoryLimit": 0.1,
|
||||
"desiredPods": 1,
|
||||
"currentPods": 0,
|
||||
"podCountsByPhase": _phase(pending=1),
|
||||
},
|
||||
},
|
||||
},
|
||||
id="default_disambiguates_ns_and_cluster",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_statefulsets_groupby(
|
||||
@@ -448,55 +553,63 @@ def test_statefulsets_groupby(
|
||||
create_user_admin: None, # pylint: disable=unused-argument
|
||||
get_token,
|
||||
insert_metrics,
|
||||
group_key: str,
|
||||
expected_running: dict,
|
||||
scenario: dict,
|
||||
) -> None:
|
||||
"""groupBy returns one record per distinct group with aggregated pod-phase
|
||||
counts. statefulSetName is populated only when grouping by k8s.statefulset.name
|
||||
(statefulsets.go:28-31 list-vs-grouped branch); meta surfaces the groupBy key."""
|
||||
"""groupBy determines row identity. Explicit groupBy returns one grouped_list
|
||||
record per distinct group (statefulSetName populated only when grouping by
|
||||
k8s.statefulset.name; statefulsets.go:28-31). With no groupBy the default is
|
||||
[k8s.statefulset.name, k8s.namespace.name] (module.go ListStatefulSets), so
|
||||
same-named statefulsets across namespaces stay as separate, un-collapsed list
|
||||
rows. meta always surfaces the grouping key(s)."""
|
||||
now = datetime.now(tz=UTC).replace(microsecond=0)
|
||||
insert_metrics(
|
||||
Metrics.load_from_file(
|
||||
get_testdata_file_path("inframonitoring/statefulsets_groupby.jsonl"),
|
||||
get_testdata_file_path(f"inframonitoring/{scenario['fixture']}"),
|
||||
base_time=now - timedelta(minutes=4),
|
||||
)
|
||||
)
|
||||
|
||||
body: dict = {
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
}
|
||||
if scenario["group_by"] is not None:
|
||||
body["groupBy"] = [{"name": scenario["group_by"], "fieldDataType": "string", "fieldContext": "resource"}]
|
||||
if scenario["filter"] is not None:
|
||||
body["filter"] = {"expression": scenario["filter"]}
|
||||
|
||||
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
|
||||
response = requests.post(
|
||||
signoz.self.host_configs["8080"].get(ENDPOINT),
|
||||
headers={"authorization": f"Bearer {token}"},
|
||||
json={
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
"groupBy": [
|
||||
{
|
||||
"name": group_key,
|
||||
"fieldDataType": "string",
|
||||
"fieldContext": "resource",
|
||||
}
|
||||
],
|
||||
},
|
||||
json=body,
|
||||
timeout=5,
|
||||
)
|
||||
assert response.status_code == HTTPStatus.OK, response.text
|
||||
data = response.json()["data"]
|
||||
assert data["total"] == len(expected_running)
|
||||
|
||||
is_ss_group = group_key == "k8s.statefulset.name"
|
||||
group_of = lambda r: r["statefulSetName"] if is_ss_group else r["meta"][group_key] # noqa: E731 # pylint: disable=unnecessary-lambda-assignment
|
||||
by_group = {group_of(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(expected_running.keys())
|
||||
groups = scenario["groups"]
|
||||
meta_keys = scenario["group_meta_keys"]
|
||||
assert data["type"] == scenario["expected_type"]
|
||||
assert data["total"] == len(groups)
|
||||
|
||||
for group, running in expected_running.items():
|
||||
rec = by_group[group]
|
||||
# statefulSetName populated per statefulset when grouping by it, empty otherwise.
|
||||
assert rec["statefulSetName"] == (group if is_ss_group else "")
|
||||
assert rec["podCountsByPhase"]["running"] == running
|
||||
for other in ("pending", "succeeded", "failed", "unknown"):
|
||||
assert rec["podCountsByPhase"][other] == 0
|
||||
assert group_key in rec["meta"], rec["meta"]
|
||||
def _gid(rec: dict):
|
||||
vals = [rec["meta"][k] for k in meta_keys]
|
||||
return vals[0] if len(vals) == 1 else tuple(vals)
|
||||
|
||||
by_group = {_gid(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(groups.keys())
|
||||
|
||||
for gid, exp in groups.items():
|
||||
rec = by_group[gid]
|
||||
for k in meta_keys:
|
||||
assert k in rec["meta"], rec["meta"]
|
||||
for field, val in exp.items():
|
||||
if field in _GROUPBY_FLOAT_FIELDS:
|
||||
assert compare_values(rec[field], val, 1e-6), f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
else:
|
||||
assert rec[field] == val, f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
|
||||
|
||||
def test_statefulsets_pagination(
|
||||
|
||||
@@ -480,23 +480,135 @@ def test_jobs_base_filter_drops_non_job_pods(
|
||||
assert all(r["jobName"] != "" for r in data["records"])
|
||||
|
||||
|
||||
# Float record fields compared with tolerance; everything else compared with ==.
|
||||
_GROUPBY_FLOAT_FIELDS = {
|
||||
"jobCPU",
|
||||
"jobCPURequest",
|
||||
"jobCPULimit",
|
||||
"jobMemory",
|
||||
"jobMemoryRequest",
|
||||
"jobMemoryLimit",
|
||||
}
|
||||
|
||||
|
||||
def _phase(pending=0, running=0, succeeded=0, failed=0, unknown=0) -> dict:
|
||||
return {"pending": pending, "running": running, "succeeded": succeeded, "failed": failed, "unknown": unknown}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"group_key,expected_running",
|
||||
"scenario",
|
||||
[
|
||||
# groupBy=[k8s.job.name]: one record per job, jobName populated
|
||||
# (jobs.go:28-31). 1 running pod each.
|
||||
# Explicit groupBy=[k8s.job.name]: one record per job, jobName populated
|
||||
# (jobs.go:28-31), response grouped_list. 1 running pod each.
|
||||
pytest.param(
|
||||
"k8s.job.name",
|
||||
{"gb-job-a1": 1, "gb-job-a2": 1, "gb-job-b1": 1, "gb-job-b2": 1},
|
||||
{
|
||||
"fixture": "jobs_groupby.jsonl",
|
||||
"group_by": "k8s.job.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.job.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-job-a1": {"jobName": "gb-job-a1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-job-a2": {"jobName": "gb-job-a2", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-job-b1": {"jobName": "gb-job-b1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-job-b2": {"jobName": "gb-job-b2", "podCountsByPhase": _phase(running=1)},
|
||||
},
|
||||
},
|
||||
id="job_name",
|
||||
),
|
||||
# groupBy=[k8s.namespace.name]: aggregated across each namespace's 2
|
||||
# jobs, jobName cleared. 2 x 1 = 2 running pods each.
|
||||
# Explicit groupBy=[k8s.namespace.name]: aggregated across each namespace's
|
||||
# 2 jobs, jobName cleared, response grouped_list. 2 running each.
|
||||
pytest.param(
|
||||
"k8s.namespace.name",
|
||||
{"gb-ns-a": 2, "gb-ns-b": 2},
|
||||
{
|
||||
"fixture": "jobs_groupby.jsonl",
|
||||
"group_by": "k8s.namespace.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.namespace.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ns-a": {"jobName": "", "podCountsByPhase": _phase(running=2)},
|
||||
"gb-ns-b": {"jobName": "", "podCountsByPhase": _phase(running=2)},
|
||||
},
|
||||
},
|
||||
id="namespace",
|
||||
),
|
||||
# Default groupBy (no groupBy in request) => [k8s.job.name,
|
||||
# k8s.namespace.name, k8s.cluster.name] (module.go ListJobs), response
|
||||
# list. Same workload name must NOT collapse across namespaces OR clusters;
|
||||
# the empty-cluster group (k8s.cluster.name label absent on the source pods)
|
||||
# must appear as its own row with real metrics, not be dropped. Single pod
|
||||
# per group => SpaceAggregationSum == Avg == seeded value. Fails on the
|
||||
# pre-cluster default (name+ns) — the three ns-x groups would collapse into
|
||||
# one summed row.
|
||||
pytest.param(
|
||||
{
|
||||
"fixture": "jobs_same_name_across_ns_and_clusters.jsonl",
|
||||
"group_by": None,
|
||||
"filter": "k8s.job.name = 'dup-job'",
|
||||
"group_meta_keys": ["k8s.job.name", "k8s.namespace.name", "k8s.cluster.name"],
|
||||
"expected_type": "list",
|
||||
"groups": {
|
||||
("dup-job", "ns-x", "cluster-a"): {
|
||||
"jobName": "dup-job",
|
||||
"jobCPU": 0.3,
|
||||
"jobCPURequest": 0.6,
|
||||
"jobCPULimit": 0.7,
|
||||
"jobMemory": 100000000.0,
|
||||
"jobMemoryRequest": 0.6,
|
||||
"jobMemoryLimit": 0.7,
|
||||
"desiredSuccessfulPods": 2,
|
||||
"activePods": 2,
|
||||
"failedPods": 0,
|
||||
"successfulPods": 0,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
("dup-job", "ns-y", "cluster-a"): {
|
||||
"jobName": "dup-job",
|
||||
"jobCPU": 0.9,
|
||||
"jobCPURequest": 0.2,
|
||||
"jobCPULimit": 0.3,
|
||||
"jobMemory": 500000000.0,
|
||||
"jobMemoryRequest": 0.2,
|
||||
"jobMemoryLimit": 0.3,
|
||||
"desiredSuccessfulPods": 3,
|
||||
"activePods": 1,
|
||||
"failedPods": 1,
|
||||
"successfulPods": 1,
|
||||
"podCountsByPhase": _phase(failed=1),
|
||||
},
|
||||
("dup-job", "ns-x", "cluster-b"): {
|
||||
"jobName": "dup-job",
|
||||
"jobCPU": 0.5,
|
||||
"jobCPURequest": 0.4,
|
||||
"jobCPULimit": 0.5,
|
||||
"jobMemory": 300000000.0,
|
||||
"jobMemoryRequest": 0.4,
|
||||
"jobMemoryLimit": 0.5,
|
||||
"desiredSuccessfulPods": 4,
|
||||
"activePods": 2,
|
||||
"failedPods": 1,
|
||||
"successfulPods": 1,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
# empty-cluster group: k8s.cluster.name label absent on the source pods.
|
||||
("dup-job", "ns-x", ""): {
|
||||
"jobName": "dup-job",
|
||||
"jobCPU": 0.1,
|
||||
"jobCPURequest": 0.1,
|
||||
"jobCPULimit": 0.1,
|
||||
"jobMemory": 200000000.0,
|
||||
"jobMemoryRequest": 0.1,
|
||||
"jobMemoryLimit": 0.1,
|
||||
"desiredSuccessfulPods": 1,
|
||||
"activePods": 1,
|
||||
"failedPods": 0,
|
||||
"successfulPods": 0,
|
||||
"podCountsByPhase": _phase(pending=1),
|
||||
},
|
||||
},
|
||||
},
|
||||
id="default_disambiguates_ns_and_cluster",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_jobs_groupby(
|
||||
@@ -504,55 +616,62 @@ def test_jobs_groupby(
|
||||
create_user_admin: None, # pylint: disable=unused-argument
|
||||
get_token,
|
||||
insert_metrics,
|
||||
group_key: str,
|
||||
expected_running: dict,
|
||||
scenario: dict,
|
||||
) -> None:
|
||||
"""groupBy returns one record per distinct group with aggregated pod-phase
|
||||
counts. jobName is populated only when grouping by k8s.job.name
|
||||
(jobs.go:28-31 list-vs-grouped branch); meta surfaces the groupBy key."""
|
||||
"""groupBy determines row identity. Explicit groupBy returns one grouped_list
|
||||
record per distinct group (jobName populated only when grouping by k8s.job.name;
|
||||
jobs.go:28-31). With no groupBy the default is [k8s.job.name, k8s.namespace.name]
|
||||
(module.go ListJobs), so same-named jobs across namespaces stay as separate,
|
||||
un-collapsed list rows. meta always surfaces the grouping key(s)."""
|
||||
now = datetime.now(tz=UTC).replace(microsecond=0)
|
||||
insert_metrics(
|
||||
Metrics.load_from_file(
|
||||
get_testdata_file_path("inframonitoring/jobs_groupby.jsonl"),
|
||||
get_testdata_file_path(f"inframonitoring/{scenario['fixture']}"),
|
||||
base_time=now - timedelta(minutes=4),
|
||||
)
|
||||
)
|
||||
|
||||
body: dict = {
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
}
|
||||
if scenario["group_by"] is not None:
|
||||
body["groupBy"] = [{"name": scenario["group_by"], "fieldDataType": "string", "fieldContext": "resource"}]
|
||||
if scenario["filter"] is not None:
|
||||
body["filter"] = {"expression": scenario["filter"]}
|
||||
|
||||
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
|
||||
response = requests.post(
|
||||
signoz.self.host_configs["8080"].get(ENDPOINT),
|
||||
headers={"authorization": f"Bearer {token}"},
|
||||
json={
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
"groupBy": [
|
||||
{
|
||||
"name": group_key,
|
||||
"fieldDataType": "string",
|
||||
"fieldContext": "resource",
|
||||
}
|
||||
],
|
||||
},
|
||||
json=body,
|
||||
timeout=5,
|
||||
)
|
||||
assert response.status_code == HTTPStatus.OK, response.text
|
||||
data = response.json()["data"]
|
||||
assert data["total"] == len(expected_running)
|
||||
|
||||
is_job_group = group_key == "k8s.job.name"
|
||||
group_of = lambda r: r["jobName"] if is_job_group else r["meta"][group_key] # noqa: E731 # pylint: disable=unnecessary-lambda-assignment
|
||||
by_group = {group_of(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(expected_running.keys())
|
||||
groups = scenario["groups"]
|
||||
meta_keys = scenario["group_meta_keys"]
|
||||
assert data["type"] == scenario["expected_type"]
|
||||
assert data["total"] == len(groups)
|
||||
|
||||
for group, running in expected_running.items():
|
||||
rec = by_group[group]
|
||||
# jobName populated per job when grouping by it, empty otherwise.
|
||||
assert rec["jobName"] == (group if is_job_group else "")
|
||||
assert rec["podCountsByPhase"]["running"] == running
|
||||
for other in ("pending", "succeeded", "failed", "unknown"):
|
||||
assert rec["podCountsByPhase"][other] == 0
|
||||
assert group_key in rec["meta"], rec["meta"]
|
||||
def _gid(rec: dict):
|
||||
vals = [rec["meta"][k] for k in meta_keys]
|
||||
return vals[0] if len(vals) == 1 else tuple(vals)
|
||||
|
||||
by_group = {_gid(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(groups.keys())
|
||||
|
||||
for gid, exp in groups.items():
|
||||
rec = by_group[gid]
|
||||
for k in meta_keys:
|
||||
assert k in rec["meta"], rec["meta"]
|
||||
for field, val in exp.items():
|
||||
if field in _GROUPBY_FLOAT_FIELDS:
|
||||
assert compare_values(rec[field], val, 1e-6), f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
else:
|
||||
assert rec[field] == val, f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
|
||||
|
||||
def test_jobs_pagination(
|
||||
|
||||
@@ -425,23 +425,128 @@ def test_daemonsets_base_filter_drops_non_daemonset_pods(
|
||||
assert all(r["daemonSetName"] != "" for r in data["records"])
|
||||
|
||||
|
||||
# Float record fields compared with tolerance; everything else compared with ==.
|
||||
_GROUPBY_FLOAT_FIELDS = {
|
||||
"daemonSetCPU",
|
||||
"daemonSetCPURequest",
|
||||
"daemonSetCPULimit",
|
||||
"daemonSetMemory",
|
||||
"daemonSetMemoryRequest",
|
||||
"daemonSetMemoryLimit",
|
||||
}
|
||||
|
||||
|
||||
def _phase(pending=0, running=0, succeeded=0, failed=0, unknown=0) -> dict:
|
||||
return {"pending": pending, "running": running, "succeeded": succeeded, "failed": failed, "unknown": unknown}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"group_key,expected_running",
|
||||
"scenario",
|
||||
[
|
||||
# groupBy=[k8s.daemonset.name]: one record per daemonset,
|
||||
# daemonSetName populated (daemonsets.go:28-31). 1 running pod each.
|
||||
# Explicit groupBy=[k8s.daemonset.name]: one record per daemonset,
|
||||
# daemonSetName populated (daemonsets.go:28-31), response grouped_list.
|
||||
# 1 running pod each.
|
||||
pytest.param(
|
||||
"k8s.daemonset.name",
|
||||
{"gb-ds-a1": 1, "gb-ds-a2": 1, "gb-ds-b1": 1, "gb-ds-b2": 1},
|
||||
{
|
||||
"fixture": "daemonsets_groupby.jsonl",
|
||||
"group_by": "k8s.daemonset.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.daemonset.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ds-a1": {"daemonSetName": "gb-ds-a1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ds-a2": {"daemonSetName": "gb-ds-a2", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ds-b1": {"daemonSetName": "gb-ds-b1", "podCountsByPhase": _phase(running=1)},
|
||||
"gb-ds-b2": {"daemonSetName": "gb-ds-b2", "podCountsByPhase": _phase(running=1)},
|
||||
},
|
||||
},
|
||||
id="daemonset_name",
|
||||
),
|
||||
# groupBy=[k8s.namespace.name]: aggregated across each namespace's 2
|
||||
# daemonsets, daemonSetName cleared. 2 x 1 = 2 running pods each.
|
||||
# Explicit groupBy=[k8s.namespace.name]: aggregated across each namespace's
|
||||
# 2 daemonsets, daemonSetName cleared, response grouped_list. 2 running each.
|
||||
pytest.param(
|
||||
"k8s.namespace.name",
|
||||
{"gb-ns-a": 2, "gb-ns-b": 2},
|
||||
{
|
||||
"fixture": "daemonsets_groupby.jsonl",
|
||||
"group_by": "k8s.namespace.name",
|
||||
"filter": None,
|
||||
"group_meta_keys": ["k8s.namespace.name"],
|
||||
"expected_type": "grouped_list",
|
||||
"groups": {
|
||||
"gb-ns-a": {"daemonSetName": "", "podCountsByPhase": _phase(running=2)},
|
||||
"gb-ns-b": {"daemonSetName": "", "podCountsByPhase": _phase(running=2)},
|
||||
},
|
||||
},
|
||||
id="namespace",
|
||||
),
|
||||
# Default groupBy (no groupBy in request) => [k8s.daemonset.name,
|
||||
# k8s.namespace.name, k8s.cluster.name] (module.go ListDaemonSets),
|
||||
# response list. Same workload name must NOT collapse across namespaces OR
|
||||
# clusters; the empty-cluster group (k8s.cluster.name label absent on the
|
||||
# source pods) must appear as its own row with real metrics, not be dropped.
|
||||
# Single pod per group => SpaceAggregationSum == Avg == seeded value.
|
||||
# Fails on the pre-cluster default (name+ns) — the three ns-x groups would
|
||||
# collapse into one summed row.
|
||||
pytest.param(
|
||||
{
|
||||
"fixture": "daemonsets_same_name_across_ns_and_clusters.jsonl",
|
||||
"group_by": None,
|
||||
"filter": "k8s.daemonset.name = 'dup-ds'",
|
||||
"group_meta_keys": ["k8s.daemonset.name", "k8s.namespace.name", "k8s.cluster.name"],
|
||||
"expected_type": "list",
|
||||
"groups": {
|
||||
("dup-ds", "ns-x", "cluster-a"): {
|
||||
"daemonSetName": "dup-ds",
|
||||
"daemonSetCPU": 0.3,
|
||||
"daemonSetCPURequest": 0.6,
|
||||
"daemonSetCPULimit": 0.7,
|
||||
"daemonSetMemory": 100000000.0,
|
||||
"daemonSetMemoryRequest": 0.6,
|
||||
"daemonSetMemoryLimit": 0.7,
|
||||
"desiredNodes": 2,
|
||||
"currentNodes": 2,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
("dup-ds", "ns-y", "cluster-a"): {
|
||||
"daemonSetName": "dup-ds",
|
||||
"daemonSetCPU": 0.9,
|
||||
"daemonSetCPURequest": 0.2,
|
||||
"daemonSetCPULimit": 0.3,
|
||||
"daemonSetMemory": 500000000.0,
|
||||
"daemonSetMemoryRequest": 0.2,
|
||||
"daemonSetMemoryLimit": 0.3,
|
||||
"desiredNodes": 3,
|
||||
"currentNodes": 1,
|
||||
"podCountsByPhase": _phase(failed=1),
|
||||
},
|
||||
("dup-ds", "ns-x", "cluster-b"): {
|
||||
"daemonSetName": "dup-ds",
|
||||
"daemonSetCPU": 0.5,
|
||||
"daemonSetCPURequest": 0.4,
|
||||
"daemonSetCPULimit": 0.5,
|
||||
"daemonSetMemory": 300000000.0,
|
||||
"daemonSetMemoryRequest": 0.4,
|
||||
"daemonSetMemoryLimit": 0.5,
|
||||
"desiredNodes": 4,
|
||||
"currentNodes": 4,
|
||||
"podCountsByPhase": _phase(running=1),
|
||||
},
|
||||
# empty-cluster group: k8s.cluster.name label absent on the source pods.
|
||||
("dup-ds", "ns-x", ""): {
|
||||
"daemonSetName": "dup-ds",
|
||||
"daemonSetCPU": 0.1,
|
||||
"daemonSetCPURequest": 0.1,
|
||||
"daemonSetCPULimit": 0.1,
|
||||
"daemonSetMemory": 200000000.0,
|
||||
"daemonSetMemoryRequest": 0.1,
|
||||
"daemonSetMemoryLimit": 0.1,
|
||||
"desiredNodes": 1,
|
||||
"currentNodes": 0,
|
||||
"podCountsByPhase": _phase(pending=1),
|
||||
},
|
||||
},
|
||||
},
|
||||
id="default_disambiguates_ns_and_cluster",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_daemonsets_groupby(
|
||||
@@ -449,55 +554,63 @@ def test_daemonsets_groupby(
|
||||
create_user_admin: None, # pylint: disable=unused-argument
|
||||
get_token,
|
||||
insert_metrics,
|
||||
group_key: str,
|
||||
expected_running: dict,
|
||||
scenario: dict,
|
||||
) -> None:
|
||||
"""groupBy returns one record per distinct group with aggregated pod-phase
|
||||
counts. daemonSetName is populated only when grouping by k8s.daemonset.name
|
||||
(daemonsets.go:28-31 list-vs-grouped branch); meta surfaces the groupBy key."""
|
||||
"""groupBy determines row identity. Explicit groupBy returns one grouped_list
|
||||
record per distinct group (daemonSetName populated only when grouping by
|
||||
k8s.daemonset.name; daemonsets.go:28-31). With no groupBy the default is
|
||||
[k8s.daemonset.name, k8s.namespace.name] (module.go ListDaemonSets), so
|
||||
same-named daemonsets across namespaces stay as separate, un-collapsed list
|
||||
rows. meta always surfaces the grouping key(s)."""
|
||||
now = datetime.now(tz=UTC).replace(microsecond=0)
|
||||
insert_metrics(
|
||||
Metrics.load_from_file(
|
||||
get_testdata_file_path("inframonitoring/daemonsets_groupby.jsonl"),
|
||||
get_testdata_file_path(f"inframonitoring/{scenario['fixture']}"),
|
||||
base_time=now - timedelta(minutes=4),
|
||||
)
|
||||
)
|
||||
|
||||
body: dict = {
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
}
|
||||
if scenario["group_by"] is not None:
|
||||
body["groupBy"] = [{"name": scenario["group_by"], "fieldDataType": "string", "fieldContext": "resource"}]
|
||||
if scenario["filter"] is not None:
|
||||
body["filter"] = {"expression": scenario["filter"]}
|
||||
|
||||
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
|
||||
response = requests.post(
|
||||
signoz.self.host_configs["8080"].get(ENDPOINT),
|
||||
headers={"authorization": f"Bearer {token}"},
|
||||
json={
|
||||
"start": int((now - timedelta(minutes=5)).timestamp() * 1000),
|
||||
"end": int(now.timestamp() * 1000),
|
||||
"limit": 50,
|
||||
"groupBy": [
|
||||
{
|
||||
"name": group_key,
|
||||
"fieldDataType": "string",
|
||||
"fieldContext": "resource",
|
||||
}
|
||||
],
|
||||
},
|
||||
json=body,
|
||||
timeout=5,
|
||||
)
|
||||
assert response.status_code == HTTPStatus.OK, response.text
|
||||
data = response.json()["data"]
|
||||
assert data["total"] == len(expected_running)
|
||||
|
||||
is_ds_group = group_key == "k8s.daemonset.name"
|
||||
group_of = lambda r: r["daemonSetName"] if is_ds_group else r["meta"][group_key] # noqa: E731 # pylint: disable=unnecessary-lambda-assignment
|
||||
by_group = {group_of(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(expected_running.keys())
|
||||
groups = scenario["groups"]
|
||||
meta_keys = scenario["group_meta_keys"]
|
||||
assert data["type"] == scenario["expected_type"]
|
||||
assert data["total"] == len(groups)
|
||||
|
||||
for group, running in expected_running.items():
|
||||
rec = by_group[group]
|
||||
# daemonSetName populated per daemonset when grouping by it, empty otherwise.
|
||||
assert rec["daemonSetName"] == (group if is_ds_group else "")
|
||||
assert rec["podCountsByPhase"]["running"] == running
|
||||
for other in ("pending", "succeeded", "failed", "unknown"):
|
||||
assert rec["podCountsByPhase"][other] == 0
|
||||
assert group_key in rec["meta"], rec["meta"]
|
||||
def _gid(rec: dict):
|
||||
vals = [rec["meta"][k] for k in meta_keys]
|
||||
return vals[0] if len(vals) == 1 else tuple(vals)
|
||||
|
||||
by_group = {_gid(r): r for r in data["records"]}
|
||||
assert set(by_group.keys()) == set(groups.keys())
|
||||
|
||||
for gid, exp in groups.items():
|
||||
rec = by_group[gid]
|
||||
for k in meta_keys:
|
||||
assert k in rec["meta"], rec["meta"]
|
||||
for field, val in exp.items():
|
||||
if field in _GROUPBY_FLOAT_FIELDS:
|
||||
assert compare_values(rec[field], val, 1e-6), f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
else:
|
||||
assert rec[field] == val, f"{gid}.{field}: got {rec[field]}, expected {val}"
|
||||
|
||||
|
||||
def test_daemonsets_pagination(
|
||||
|
||||
Reference in New Issue
Block a user