| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373 |
- package collector
- import (
- "github.com/opencost/opencost/core/pkg/source"
- "github.com/opencost/opencost/modules/collector-source/pkg/metric"
- "github.com/opencost/opencost/modules/collector-source/pkg/metric/aggregator"
- )
- // NewOpenCostMetricStore creates a new MetricStore which has registered all MetricCollector instances required
- // for OpenCost
- func NewOpenCostMetricStore() metric.MetricStore {
- memStore := metric.NewInMemoryMetricStore()
- // Register all the metrics
- memStore.Register(NewPVPricePerGiBHourMetricCollector())
- memStore.Register(NewPVUsedAverageMetricCollector())
- memStore.Register(NewPVUsedMaxMetricCollector())
- memStore.Register(NewPVCInfoMetricCollector())
- memStore.Register(NewPVActiveMinutesMetricCollector())
- memStore.Register(NewLocalStorageUsedActiveMinutesMetricCollector())
- memStore.Register(NewLocalStorageUsedAverageMetricCollector())
- memStore.Register(NewLocalStorageUsedMaxMetricCollector())
- memStore.Register(NewLocalStorageBytesMetricCollector())
- memStore.Register(NewLocalStorageActiveMinutesMetricCollector())
- memStore.Register(NewNodeCPUCoresCapacityMetricCollector())
- memStore.Register(NewNodeCPUCoresAllocatableMetricCollector())
- memStore.Register(NewNodeRAMBytesCapacityMetricCollector())
- memStore.Register(NewNodeRAMBytesAllocatableMetricCollector())
- memStore.Register(NewNodeGPUCountMetricCollector())
- memStore.Register(NewNodeLabelsMetricCollector())
- memStore.Register(NewNodeActiveMinutesMetricCollector())
- memStore.Register(NewNodeCPUModeTotalMetricCollector())
- memStore.Register(NewNodeRAMSystemUsageAverageMetricCollector())
- memStore.Register(NewNodeRAMUserUsageAverageMetricCollector())
- memStore.Register(NewLBPricePerHourMetricCollector())
- memStore.Register(NewLBActiveMinutesMetricCollector())
- memStore.Register(NewClusterUptimeMetricCollector())
- memStore.Register(NewClusterManagementDurationMetricCollector())
- memStore.Register(NewClusterManagementPricePerHourMetricCollector())
- memStore.Register(NewPodActiveMinutesMetricCollector())
- memStore.Register(NewRAMBytesAllocatedMetricCollector())
- memStore.Register(NewRAMRequestsMetricCollector())
- memStore.Register(NewRAMLimitsMetricCollector())
- memStore.Register(NewRAMUsageAverageMetricCollector())
- memStore.Register(NewRAMUsageMaxMetricCollector())
- memStore.Register(NewCPUCoresAllocatedMetricCollector())
- memStore.Register(NewCPURequestsMetricCollector())
- memStore.Register(NewCPULimitsMetricCollector())
- memStore.Register(NewCPUUsageAverageMetricCollector())
- memStore.Register(NewCPUUsageMaxMetricCollector())
- memStore.Register(NewGPUsRequestedMetricCollector())
- memStore.Register(NewGPUsUsageAverageMetricCollector())
- memStore.Register(NewGPUsUsageMaxMetricCollector())
- memStore.Register(NewGPUsAllocatedMetricCollector())
- memStore.Register(NewIsGPUSharedMetricCollector())
- memStore.Register(NewGPUInfoMetricCollector())
- memStore.Register(NewNodeCPUPricePerHourMetricCollector())
- memStore.Register(NewNodeRAMPricePerGiBHourMetricCollector())
- memStore.Register(NewNodeGPUPricePerHourMetricCollector())
- memStore.Register(NewNodeIsSpotMetricCollector())
- memStore.Register(NewPodPVCAllocationMetricCollector())
- memStore.Register(NewPVCBytesRequestedMetricCollector())
- memStore.Register(NewPVBytesMetricCollector())
- memStore.Register(NewPVInfoMetricCollector())
- memStore.Register(NewNetZoneGiBMetricCollector())
- memStore.Register(NewNetZonePricePerGiBMetricCollector())
- memStore.Register(NewNetRegionGiBMetricCollector())
- memStore.Register(NewNetRegionPricePerGiBMetricCollector())
- memStore.Register(NewNetInternetGiBMetricCollector())
- memStore.Register(NewNetInternetPricePerGiBMetricCollector())
- memStore.Register(NewNetInternetServiceGiBMetricCollector())
- memStore.Register(NewNetReceiveBytesMetricCollector())
- memStore.Register(NewNetZoneIngressGiBMetricCollector())
- memStore.Register(NewNetRegionIngressGiBMetricCollector())
- memStore.Register(NewNetInternetIngressGiBMetricCollector())
- memStore.Register(NewNetInternetServiceIngressGiBMetricCollector())
- memStore.Register(NewNetTransferBytesMetricCollector())
- memStore.Register(NewNamespaceUptimeMetricCollector())
- memStore.Register(NewNamespaceLabelsMetricCollector())
- memStore.Register(NewNamespaceAnnotationsMetricCollector())
- memStore.Register(NewPodLabelsMetricCollector())
- memStore.Register(NewPodAnnotationsMetricCollector())
- memStore.Register(NewServiceLabelsMetricCollector())
- memStore.Register(NewDeploymentLabelsMetricCollector())
- memStore.Register(NewStatefulSetLabelsMetricCollector())
- memStore.Register(NewDaemonSetLabelsMetricCollector())
- memStore.Register(NewJobLabelsMetricCollector())
- memStore.Register(NewPodsWithReplicaSetOwnerMetricCollector())
- memStore.Register(NewReplicaSetsWithoutOwnersMetricCollector())
- memStore.Register(NewReplicaSetsWithRolloutMetricCollector())
- memStore.Register(NewResourceQuotaUptimeMetricCollector())
- memStore.Register(NewResourceQuotaSpecCPURequestAverageMetricCollector())
- memStore.Register(NewResourceQuotaSpecCPURequestMaxMetricCollector())
- memStore.Register(NewResourceQuotaSpecRAMRequestAverageMetricCollector())
- memStore.Register(NewResourceQuotaSpecRAMRequestMaxMetricCollector())
- memStore.Register(NewResourceQuotaSpecCPULimitAverageMetricCollector())
- memStore.Register(NewResourceQuotaSpecCPULimitMaxMetricCollector())
- memStore.Register(NewResourceQuotaSpecRAMLimitAverageMetricCollector())
- memStore.Register(NewResourceQuotaSpecRAMLimitMaxMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedCPURequestAverageMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedCPURequestMaxMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedRAMRequestAverageMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedRAMRequestMaxMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedCPULimitAverageMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedCPULimitMaxMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedRAMLimitAverageMetricCollector())
- memStore.Register(NewResourceQuotaStatusUsedRAMLimitMaxMetricCollector())
- return memStore
- }
- // avg(
- // avg_over_time(
- // pv_hourly_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, persistentvolume, volumename, provider_id)
- func NewPVPricePerGiBHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVPricePerGiBHourID,
- metric.PVHourlyCost,
- []string{
- source.VolumeNameLabel,
- source.PVLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kubelet_volume_stats_used_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, persistentvolumeclaim, namespace)
- func NewPVUsedAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVUsedAverageID,
- metric.KubeletVolumeStatsUsedBytes,
- []string{
- source.NamespaceLabel,
- source.PVCLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // max(
- // max_over_time(
- // kubelet_volume_stats_used_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, persistentvolumeclaim, namespace)
- func NewPVUsedMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVUsedMaxID,
- metric.KubeletVolumeStatsUsedBytes,
- []string{
- source.NamespaceLabel,
- source.PVCLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- nil,
- )
- }
- // avg(
- // kube_persistentvolumeclaim_info{
- // volumename != "",
- // <some_custom_filter>
- // }
- // ) by (persistentvolumeclaim, storageclass, volumename, namespace, cluster_id)[0:10m]
- func NewPVCInfoMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVCInfoID,
- metric.KubePersistentVolumeClaimInfo,
- []string{
- source.NamespaceLabel,
- source.VolumeNameLabel,
- source.PVCLabel,
- source.StorageClassLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- func(labels map[string]string) bool {
- return labels[source.VolumeNameLabel] != ""
- },
- )
- }
- // avg(
- // kube_persistentvolume_capacity_bytes{
- // <some_custom_filter>
- // }
- // ) by (cluster_id, persistentvolume)[0:10m]
- func NewPVActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVActiveMinutesID,
- metric.KubePersistentVolumeCapacityBytes,
- []string{
- source.PVLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // sum_over_time(
- //
- // sum(
- // container_fs_usage_bytes{
- // device=~"/dev/(nvme|sda).*",
- // id="/",
- // <some_custom_filter>
- // }
- // ) by (instance, device, cluster_id)[%s:%dm]
- //
- // ) / 1024 / 1024 / 1024 * %f * %f`
- // NewLocalStorageUsedActiveMinutesMetricCollector does not have an associated query end point but is used in the results
- // of QueryLocalStorageUsedCost
- func NewLocalStorageUsedActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LocalStorageUsedActiveMinutesID,
- metric.ContainerFSUsageBytes,
- []string{
- source.InstanceLabel,
- source.DeviceLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil, // filter not required here because only container root file system is being scraped
- )
- }
- // avg(
- // sum(
- // avg_over_time(
- // container_fs_usage_bytes{
- // device=~"/dev/(nvme|sda).*",
- // id="/",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (instance, device, cluster_id, job)
- // ) by (instance, device, cluster_id)
- func NewLocalStorageUsedAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LocalStorageUsedAverageID,
- metric.ContainerFSUsageBytes,
- []string{
- source.InstanceLabel,
- source.DeviceLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil, // filter not required here because only container root file system is being scraped
- )
- }
- // max(
- //
- // sum(
- // max_over_time(
- // container_fs_usage_bytes{
- // device=~"/dev/(nvme|sda).*",
- // id="/",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (instance, device, cluster_id, job)
- //
- // ) by (instance, device, cluster_id)
- func NewLocalStorageUsedMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LocalStorageUsedMaxID,
- metric.ContainerFSUsageBytes,
- []string{
- source.InstanceLabel,
- source.DeviceLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- nil, // filter not required here because only container root file system is being scraped
- )
- }
- // avg_over_time(
- //
- // sum(
- // container_fs_limit_bytes{
- // device=~"/dev/(nvme|sda).*",
- // id="/",
- // <some_custom_filter>
- // }
- // ) by (instance, device, cluster_id)[%s:%dm]
- //
- // )
- func NewLocalStorageBytesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LocalStorageBytesID,
- metric.NodeFSCapacityBytes,
- []string{
- source.InstanceLabel,
- source.DeviceLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil, // filter not required here because only node root file system is being scraped
- )
- }
- // count(
- //
- // node_total_hourly_cost{
- // <some_custom_filter>
- // }
- //
- // ) by (cluster_id, node, instance, provider_id)[%s:%dm]
- func NewLocalStorageActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LocalStorageActiveMinutesID,
- metric.NodeTotalHourlyCost,
- []string{
- source.NodeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg(
- //
- // avg_over_time(
- // kube_node_status_capacity_cpu_cores{
- // <some_custom_filter>
- // }[1h]
- // )
- //
- // ) by (cluster_id, node)
- func NewNodeCPUCoresCapacityMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeCPUCoresCapacityID,
- metric.KubeNodeStatusCapacityCPUCores,
- []string{
- source.NodeLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kube_node_status_allocatable_cpu_cores{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, node)
- func NewNodeCPUCoresAllocatableMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeCPUCoresAllocatableID,
- metric.KubeNodeStatusAllocatableCPUCores,
- []string{
- source.NodeLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kube_node_status_capacity_memory_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, node)
- func NewNodeRAMBytesCapacityMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeRAMBytesCapacityID,
- metric.KubeNodeStatusCapacityMemoryBytes,
- []string{
- source.NodeLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kube_node_status_allocatable_memory_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, node)
- func NewNodeRAMBytesAllocatableMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeRAMBytesAllocatableID,
- metric.KubeNodeStatusAllocatableMemoryBytes,
- []string{
- source.NodeLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // node_gpu_count{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, node, provider_id)
- func NewNodeGPUCountMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeGPUCountID,
- metric.NodeGPUCount,
- []string{
- source.NodeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg_over_time(
- // kube_node_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewNodeLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeLabelsID,
- metric.KubeNodeLabels,
- []string{
- source.NodeLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg(
- // node_total_hourly_cost{
- // <some_custom_filter>
- // }
- // ) by (node, cluster_id, provider_id)[%s:%dm]
- func NewNodeActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeActiveMinutesID,
- metric.NodeTotalHourlyCost,
- []string{
- source.NodeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // sum(
- // rate(
- // node_cpu_seconds_total{
- // <some_custom_filter>
- // }[%s:%dm]
- // )
- // ) by (kubernetes_node, cluster_id, mode)
- func NewNodeCPUModeTotalMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeCPUModeTotalID,
- metric.NodeCPUSecondsTotal,
- []string{
- source.KubernetesNodeLabel,
- source.ModeLabel,
- source.UIDLabel,
- },
- aggregator.Rate,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // container_memory_working_set_bytes{
- // container_name!="POD",
- // container_name!="",
- // namespace="kube-system",
- // <some_custom_filter>
- // }[%s:%dm]
- // )
- // ) by (instance, cluster_id)
- func NewNodeRAMSystemUsageAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeRAMSystemUsageAverageID,
- metric.ContainerMemoryWorkingSetBytes,
- []string{
- source.InstanceLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NamespaceLabel] == "kube-system"
- },
- )
- }
- // avg(
- // avg_over_time(
- // container_memory_working_set_bytes{
- // container_name!="POD",
- // container_name!="",
- // namespace!="kube-system",
- // <some_custom_filter>
- // }[%s:%dm]
- // )
- // ) by (instance, cluster_id)
- func NewNodeRAMUserUsageAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeRAMUserUsageAverageID,
- metric.ContainerMemoryWorkingSetBytes,
- []string{
- source.InstanceLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NamespaceLabel] != "kube-system"
- },
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_load_balancer_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (namespace, service_name, ingress_ip, cluster_id)
- func NewLBPricePerHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LBPricePerHourID,
- metric.KubecostLoadBalancerCost,
- []string{
- source.NamespaceLabel,
- source.ServiceNameLabel,
- source.IngressIPLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // kubecost_load_balancer_cost{
- // <some_custom_filter>
- // }
- // ) by (namespace, service_name, cluster_id, ingress_ip)[%s:%dm]
- func NewLBActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.LBActiveMinutesID,
- metric.KubecostLoadBalancerCost,
- []string{
- source.NamespaceLabel,
- source.ServiceNameLabel,
- source.IngressIPLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg(
- // cluster_info{
- // <some_custom_filter>
- // }
- // ) by (uid)[%s:%dm]
- func NewClusterUptimeMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ClusterUptimeID,
- metric.ClusterInfo,
- []string{
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg(
- // kubecost_cluster_management_cost{
- // <some_custom_filter>
- // }
- // ) by (cluster_id, provisioner_name)[%s:%dm]
- func NewClusterManagementDurationMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ClusterManagementDurationID,
- metric.KubecostClusterManagementCost,
- []string{
- source.ProvisionerNameLabel,
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_cluster_management_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, provisioner_name)
- func NewClusterManagementPricePerHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ClusterManagementPricePerHourID,
- metric.KubecostClusterManagementCost,
- []string{
- source.ProvisionerNameLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // kube_pod_container_status_running{
- // <some_custom_filter>
- // } != 0
- // ) by (pod, namespace, uid, cluster_id)[%s:%s]
- func NewPodActiveMinutesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PodActiveMinutesID,
- metric.KubePodContainerStatusRunning,
- []string{
- source.UIDLabel,
- source.NamespaceLabel,
- source.PodLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // container_memory_allocation_bytes{
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id, provider_id)
- func NewRAMBytesAllocatedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.RAMBytesAllocatedID,
- metric.ContainerMemoryAllocationBytes,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_requests{
- // resource="memory",
- // unit="byte",
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (container, pod, namespace, node, cluster_id)
- func NewRAMRequestsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.RAMRequestsID,
- metric.KubePodContainerResourceRequests,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte" && labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_limits{
- // resource="memory",
- // unit="byte",
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (container, pod, namespace, node, cluster_id)
- func NewRAMLimitsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.RAMLimitsID,
- metric.KubePodContainerResourceLimits,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte" && labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // container_memory_working_set_bytes{
- // container!="",
- // container!="POD",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, instance, cluster_id)
- func NewRAMUsageAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.RAMUsageAverageID,
- metric.ContainerMemoryWorkingSetBytes,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != ""
- },
- )
- }
- // max(
- // max_over_time(
- // container_memory_working_set_bytes{
- // container!="",
- // container_name!="POD",
- // container!="POD",
- // <some_custom_filter>
- // }[%s]
- // )
- // ) by (container_name, container, pod_name, pod, namespace, node, instance, %s)
- func NewRAMUsageMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.RAMUsageMaxID,
- metric.ContainerMemoryWorkingSetBytes,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "" && labels[source.ContainerLabel] != "POD" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // container_cpu_allocation{
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id)
- func NewCPUCoresAllocatedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.CPUCoresAllocatedID,
- metric.ContainerCPUAllocation,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_requests{
- // resource="cpu",
- // unit="core",
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id)
- func NewCPURequestsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.CPURequestsID,
- metric.KubePodContainerResourceRequests,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core" && labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_limits{
- // resource="cpu",
- // unit="core",
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id)
- func NewCPULimitsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.CPULimitsID,
- metric.KubePodContainerResourceLimits,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core" && labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // rate(
- // container_cpu_usage_seconds_total{
- // container!="",
- // container_name!="POD",
- // container!="POD",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container_name, container, pod_name, pod, namespace, node, instance, cluster_id)
- func NewCPUUsageAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.CPUUsageAverageID,
- metric.ContainerCPUUsageSecondsTotal,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.Rate,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "" && labels[source.ContainerLabel] != "POD"
- },
- )
- }
- // max(
- //
- // max_over_time(
- // irate(
- // container_cpu_usage_seconds_total{
- // container!="POD",
- // container!="",
- // <some_custom_filter>
- // }[1h]
- // )[%s:%s]
- // )
- //
- // ) by (container, pod_name, pod, namespace, node, instance, cluster_id)
- func NewCPUUsageMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.CPUUsageMaxID,
- metric.ContainerCPUUsageSecondsTotal,
- []string{
- source.NodeLabel,
- source.InstanceLabel,
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.IRateMax,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "" && labels[source.ContainerLabel] != "POD"
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_requests{
- // resource="nvidia_com_gpu",
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id)
- func NewGPUsRequestedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.GPUsRequestedID,
- metric.KubePodContainerResourceRequests,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "nvidia_com_gpu" && labels[source.ContainerLabel] != "POD" && labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // DCGM_FI_PROF_GR_ENGINE_ACTIVE{
- // container!=""
- // }[1h]
- // )
- // ) by (container, pod, namespace, cluster_id)
- func NewGPUsUsageAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.GPUsUsageAverageID,
- metric.DCGMFIPROFGRENGINEACTIVE,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != ""
- },
- )
- }
- // max(
- // max_over_time(
- // DCGM_FI_PROF_GR_ENGINE_ACTIVE{
- // container!=""
- // }[1h]
- // )
- // ) by (container, pod, namespace, cluster_id)
- func NewGPUsUsageMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.GPUsUsageMaxID,
- metric.DCGMFIPROFGRENGINEACTIVE,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // container_gpu_allocation{
- // container!="",
- // container!="POD",
- // node!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, cluster_id)
- func NewGPUsAllocatedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.GPUsAllocatedID,
- metric.ContainerGPUAllocation,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "" && labels[source.ContainerLabel] != "POD" && labels[source.NodeLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // kube_pod_container_resource_requests{
- // container!="",
- // node != "",
- // pod != "",
- // container!= "",
- // unit = "integer",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, node, resource, cluster_id)
- func NewIsGPUSharedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.IsGPUSharedID,
- metric.KubePodContainerResourceRequests,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- source.ResourceLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != "" && labels[source.NodeLabel] != "" && labels[source.PodLabel] != "" && labels[source.UnitLabel] == "integer"
- },
- )
- }
- // avg(
- // avg_over_time(
- // DCGM_FI_DEV_DEC_UTIL{
- // container!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (container, pod, namespace, device, modelName, UUID, cluster_id)
- func NewGPUInfoMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.GPUInfoID,
- metric.DCGMFIDEVDECUTIL,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.ContainerLabel,
- source.DeviceLabel,
- source.ModelNameLabel,
- source.UUIDLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.ContainerLabel] != ""
- },
- )
- }
- // avg(
- // avg_over_time(
- // node_cpu_hourly_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (node, cluster_id, instance_type, provider_id)
- func NewNodeCPUPricePerHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeCPUPricePerHourID,
- metric.NodeCPUHourlyCost,
- []string{
- source.NodeLabel,
- source.InstanceTypeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // node_ram_hourly_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (node, cluster_id, instance_type, provider_id)
- func NewNodeRAMPricePerGiBHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeRAMPricePerGiBHourID,
- metric.NodeRAMHourlyCost,
- []string{
- source.NodeLabel,
- source.InstanceTypeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // node_gpu_hourly_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (node, cluster_id, instance_type, provider_id)
- func NewNodeGPUPricePerHourMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeGPUPricePerHourID,
- metric.NodeGPUHourlyCost,
- []string{
- source.NodeLabel,
- source.InstanceTypeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg_over_time(
- // kubecost_node_is_spot{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewNodeIsSpotMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NodeIsSpotID,
- metric.KubecostNodeIsSpot,
- []string{
- source.NodeLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // pod_pvc_allocation{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (persistentvolume, persistentvolumeclaim, pod, namespace, cluster_id)
- func NewPodPVCAllocationMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PodPVCAllocationID,
- metric.PodPVCAllocation,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.PVLabel,
- source.PVCLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kube_persistentvolumeclaim_resource_requests_storage_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (persistentvolumeclaim, namespace, cluster_id)
- func NewPVCBytesRequestedMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVCBytesRequestedID,
- metric.KubePersistentVolumeClaimResourceRequestsStorageBytes,
- []string{
- source.NamespaceLabel,
- source.PVCLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kube_persistentvolume_capacity_bytes{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (persistentvolume, cluster_id)
- func NewPVBytesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVBytesID,
- metric.KubePersistentVolumeCapacityBytes,
- []string{
- source.PVLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_pv_info{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id, storageclass, persistentvolume, provider_id)
- func NewPVInfoMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PVInfoID,
- metric.KubecostPVInfo,
- []string{
- source.PVLabel,
- source.StorageClassLabel,
- source.ProviderIDLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- nil,
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_egress_bytes_total{
- // internet="false",
- // same_zone="false",
- // same_region="true",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- //
- func NewNetZoneGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetZoneGiBID,
- metric.KubecostPodNetworkEgressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "false" && labels[source.SameZoneLabel] == "false" && labels[source.SameRegionLabel] == "true"
- },
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_network_zone_egress_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id)
- //
- func NewNetZonePricePerGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetZonePricePerGiBID,
- metric.KubecostNetworkZoneEgressCost,
- []string{},
- aggregator.AverageOverTime,
- nil,
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_egress_bytes_total{
- // internet="false",
- // same_zone="false",
- // same_region="false",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- func NewNetRegionGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetRegionGiBID,
- metric.KubecostPodNetworkEgressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "false" && labels[source.SameZoneLabel] == "false" && labels[source.SameRegionLabel] == "false"
- },
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_network_region_egress_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id)
- func NewNetRegionPricePerGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetRegionPricePerGiBID,
- metric.KubecostNetworkRegionEgressCost,
- []string{},
- aggregator.AverageOverTime,
- nil,
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_egress_bytes_total{
- // internet="true",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- func NewNetInternetGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetInternetGiBID,
- metric.KubecostPodNetworkEgressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "true"
- },
- )
- }
- // avg(
- // avg_over_time(
- // kubecost_network_internet_egress_cost{
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (cluster_id)
- func NewNetInternetPricePerGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetInternetPricePerGiBID,
- metric.KubecostNetworkInternetEgressCost,
- []string{},
- aggregator.AverageOverTime,
- nil,
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_egress_bytes_total{
- // internet="true",
- // <some_custom_filter>
- // }[%s]
- // )
- // ) by (pod_name, namespace, service, %s) / 1024 / 1024 / 1024
- func NewNetInternetServiceGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetInternetServiceGiBID,
- metric.KubecostPodNetworkEgressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.ServiceLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "true"
- },
- )
- }
- // sum(
- // increase(
- // container_network_receive_bytes_total{
- // pod!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, pod, namespace, cluster_id)
- func NewNetReceiveBytesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetReceiveBytesID,
- metric.ContainerNetworkReceiveBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.PodLabel] != ""
- },
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_ingress_bytes_total{
- // internet="false",
- // same_zone="false",
- // same_region="true",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- func NewNetZoneIngressGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetZoneIngressGiBID,
- metric.KubecostPodNetworkIngressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "false" &&
- labels[source.SameZoneLabel] == "false" &&
- labels[source.SameRegionLabel] == "true"
- },
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_ingress_bytes_total{
- // internet="false",
- // same_zone="false",
- // same_region="false",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- func NewNetRegionIngressGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetRegionIngressGiBID,
- metric.KubecostPodNetworkIngressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "false" &&
- labels[source.SameZoneLabel] == "false" &&
- labels[source.SameRegionLabel] == "false"
- },
- )
- }
- // sum(
- // increase(
- // kubecost_pod_network_ingress_bytes_total{
- // internet="true",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, cluster_id) / 1024 / 1024 / 1024
- func NewNetInternetIngressGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetInternetIngressGiBID,
- metric.KubecostPodNetworkIngressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "true"
- },
- )
- }
- // `sum(
- // increase(
- // kubecost_pod_network_ingress_bytes_total{
- // internet="true",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, namespace, service, cluster_id) / 1024 / 1024 / 1024
- func NewNetInternetServiceIngressGiBMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetInternetServiceIngressGiBID,
- metric.KubecostPodNetworkIngressBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodNameLabel,
- source.ServiceLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.InternetLabel] == "true"
- },
- )
- }
- // sum(
- // increase(
- // container_network_transmit_bytes_total{
- // pod!="",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod_name, pod, namespace, cluster_id)
- func NewNetTransferBytesMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NetTransferBytesID,
- metric.ContainerNetworkTransmitBytesTotal,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- },
- aggregator.Increase,
- func(labels map[string]string) bool {
- return labels[source.PodLabel] != ""
- },
- )
- }
- // avg(
- // namespace_info{
- // <some_custom_filter>
- // }
- // ) by (uid)[%s:%dm]
- func NewNamespaceUptimeMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NamespaceUptimeID,
- metric.NamespaceInfo,
- []string{
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- // avg_over_time(
- // kube_namespace_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewNamespaceLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NamespaceLabelsID,
- metric.KubeNamespaceLabels,
- []string{
- source.NamespaceLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // kube_namespace_annotations{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewNamespaceAnnotationsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.NamespaceAnnotationsID,
- metric.KubeNamespaceAnnotations,
- []string{
- source.NamespaceLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // kube_pod_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewPodLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PodLabelsID,
- metric.KubePodLabels,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // kube_pod_annotations{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewPodAnnotationsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PodAnnotationsID,
- metric.KubePodAnnotations,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // service_selector_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewServiceLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ServiceLabelsID,
- metric.ServiceSelectorLabels,
- []string{
- source.NamespaceLabel,
- source.ServiceLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // deployment_match_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewDeploymentLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.DeploymentLabelsID,
- metric.DeploymentMatchLabels,
- []string{
- source.NamespaceLabel,
- source.DeploymentLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // avg_over_time(
- // statefulSet_match_labels{
- // <some_custom_filter>
- // }[1h]
- // )
- func NewStatefulSetLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.StatefulSetLabelsID,
- metric.StatefulSetMatchLabels,
- []string{
- source.NamespaceLabel,
- source.StatefulSetLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- nil,
- )
- }
- // sum(
- // avg_over_time(
- // kube_pod_owner{
- // owner_kind="DaemonSet",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod, owner_name, namespace, cluster_id)
- func NewDaemonSetLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.DaemonSetLabelsID,
- metric.KubePodOwner,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.OwnerNameLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.OwnerKindLabel] == "DaemonSet"
- },
- )
- }
- // sum(
- // avg_over_time(
- // kube_pod_owner{
- // owner_kind="Job",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod, owner_name, namespace, cluster_id)
- func NewJobLabelsMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.JobLabelsID,
- metric.KubePodOwner,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.OwnerNameLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.OwnerKindLabel] == "Job"
- },
- )
- }
- // sum(
- // avg_over_time(
- // kube_pod_owner{
- // owner_kind="ReplicaSet",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (pod, owner_name, namespace, cluster_id)
- func NewPodsWithReplicaSetOwnerMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.PodsWithReplicaSetOwnerID,
- metric.KubePodOwner,
- []string{
- source.NamespaceLabel,
- source.PodLabel,
- source.UIDLabel,
- source.OwnerNameLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.OwnerKindLabel] == "ReplicaSet"
- },
- )
- }
- // sum(
- // avg_over_time(
- // kube_replicaset_owner{
- // owner_kind="<none>",
- // owner_name="<none>",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (replicaset, namespace, cluster_id)
- func NewReplicaSetsWithoutOwnersMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ReplicaSetsWithoutOwnersID,
- metric.KubeReplicasetOwner,
- []string{
- source.NamespaceLabel,
- source.ReplicaSetLabel,
- source.UIDLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.OwnerKindLabel] == "<none>" && labels[source.OwnerNameLabel] == "<none>"
- },
- )
- }
- // sum(
- // avg_over_time(
- // kube_replicaset_owner{
- // owner_kind="Rollout",
- // <some_custom_filter>
- // }[1h]
- // )
- // ) by (replicaset, namespace, owner_kind, owner_name, cluster_id)
- func NewReplicaSetsWithRolloutMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ReplicaSetsWithRolloutID,
- metric.KubeReplicasetOwner,
- []string{
- source.NamespaceLabel,
- source.ReplicaSetLabel,
- source.UIDLabel,
- source.OwnerNameLabel,
- source.OwnerKindLabel,
- },
- aggregator.Info,
- func(labels map[string]string) bool {
- return labels[source.OwnerKindLabel] == "Rollout"
- },
- )
- }
- // avg(
- // resourcequota_info{
- // <some_custom_filter>
- // }
- // ) by (uid)[%s:%dm]
- func NewResourceQuotaUptimeMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaUptimeID,
- metric.ResourceQuotaInfo,
- []string{
- source.UIDLabel,
- },
- aggregator.Uptime,
- nil,
- )
- }
- func NewResourceQuotaSpecCPURequestAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecCPURequestAverageID,
- metric.KubeResourceQuotaSpecResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_spec_resource_requests{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecCPURequestMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecCPURequestMaxID,
- metric.KubeResourceQuotaSpecResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_spec_resource_requests{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecRAMRequestAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecRAMRequestAverageID,
- metric.KubeResourceQuotaSpecResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_spec_resource_requests{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecRAMRequestMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecRAMRequestMaxID,
- metric.KubeResourceQuotaSpecResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_spec_resource_limits{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecCPULimitAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecCPULimitAverageID,
- metric.KubeResourceQuotaSpecResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_spec_resource_limits{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecCPULimitMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecCPULimitMaxID,
- metric.KubeResourceQuotaSpecResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_spec_resource_limits{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecRAMLimitAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecRAMLimitAverageID,
- metric.KubeResourceQuotaSpecResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_spec_resource_limits{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaSpecRAMLimitMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaSpecRAMLimitMaxID,
- metric.KubeResourceQuotaSpecResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_status_used_resource_requests{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedCPURequestAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedCPURequestAverageID,
- metric.KubeResourceQuotaStatusUsedResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_status_used_resource_requests{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedCPURequestMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedCPURequestMaxID,
- metric.KubeResourceQuotaStatusUsedResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_status_used_resource_requests{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedRAMRequestAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedRAMRequestAverageID,
- metric.KubeResourceQuotaStatusUsedResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_status_used_resource_requests{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedRAMRequestMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedRAMRequestMaxID,
- metric.KubeResourceQuotaStatusUsedResourceRequests,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_status_used_resource_limits{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedCPULimitAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedCPULimitAverageID,
- metric.KubeResourceQuotaStatusUsedResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_status_used_resource_limits{
- // resource="cpu",
- // unit="core",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedCPULimitMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedCPULimitMaxID,
- metric.KubeResourceQuotaStatusUsedResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "cpu" && labels[source.UnitLabel] == "core"
- },
- )
- }
- // avg(
- // avg_over_time(
- // resourcequota_status_used_resource_limits{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedRAMLimitAverageMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedRAMLimitAverageID,
- metric.KubeResourceQuotaStatusUsedResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.AverageOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
- // max(
- // max_over_time(
- // resourcequota_status_used_resource_limits{
- // resource="memory",
- // unit="byte",
- // <some_custom_filter>
- // }[1h]
- // )
- //) by (resourcequota, namespace, uid, cluster_id)
- func NewResourceQuotaStatusUsedRAMLimitMaxMetricCollector() *metric.MetricCollector {
- return metric.NewMetricCollector(
- metric.ResourceQuotaStatusUsedRAMLimitMaxID,
- metric.KubeResourceQuotaStatusUsedResourceLimits,
- []string{
- source.NamespaceLabel,
- source.ResourceQuotaLabel,
- source.UIDLabel,
- },
- aggregator.MaxOverTime,
- func(labels map[string]string) bool {
- return labels[source.ResourceLabel] == "memory" && labels[source.UnitLabel] == "byte"
- },
- )
- }
|