)
15 | }
16 | }
17 |
18 | // does this call still make sense when useEffect runs on the initial load?
19 | // populateArray();
20 |
21 | useEffect(() => {
22 | // for cleanup function
23 | let hasBeenCalled = false;
24 | // poopulate each pod array for the table
25 | if (!hasBeenCalled) {
26 | populateArray();
27 | }
28 | // called cleanup function to prevent looping
29 | return () => {
30 | hasBeenCalled = true;
31 | }
32 | }, [props.currentPods, props.currentUrl]); // update current pods when curent pods or url changes
33 |
34 |
35 | return(
36 |
37 |
38 |
pod name
39 | node
40 | status
41 | restarts
42 | age
43 |
44 |
45 | {podsArray}
46 |
47 |
48 | )
49 | }
50 |
51 | export default AllPodInfo;
--------------------------------------------------------------------------------
/electron/main.ts:
--------------------------------------------------------------------------------
1 | import { app, BrowserWindow } from 'electron';
2 | import * as path from 'path';
3 | import installExtension, { REACT_DEVELOPER_TOOLS } from "electron-devtools-installer";
4 | import { protocol } from "electron";
5 |
6 |
7 |
8 | function createWindow() {
9 | const win = new BrowserWindow({
10 | width: 800,
11 | height: 600,
12 | webPreferences: {
13 | // contextIsolation: false,
14 | preload: path.join(__dirname, 'preload.js'),
15 | webSecurity: false,
16 | nodeIntegration: true
17 | }
18 | })
19 |
20 | if (app.isPackaged) {
21 | // 'build/index.html'
22 | win.loadURL(`file://${__dirname}/../index.html`);
23 | } else {
24 | win.loadURL('http://localhost:3000/index.html');
25 |
26 | win.webContents.openDevTools();
27 |
28 | // Hot Reloading on 'node_modules/.bin/electronPath'
29 | require('electron-reload')(__dirname, {
30 | electron: path.join(__dirname,
31 | '..',
32 | '..',
33 | 'node_modules',
34 | '.bin',
35 | 'electron' + (process.platform === "win32" ? ".cmd" : "")),
36 | forceHardReset: true,
37 | hardResetMethod: 'exit'
38 | });
39 | }
40 | }
41 |
42 | app.whenReady().then(() => {
43 | console.log('path: ', app.getPath('userData'))
44 | // DevTools
45 | installExtension(REACT_DEVELOPER_TOOLS)
46 | .then((name) => console.log(`Added Extension: ${name}`))
47 | .catch((err) => console.log('An error occurred: ', err));
48 |
49 | protocol.registerFileProtocol('file', (request, callback) => {
50 | const pathname = decodeURI(request.url.replace('file:///', ''));
51 | callback(pathname);
52 | });
53 |
54 | createWindow();
55 |
56 | app.on('activate', () => {
57 | if (BrowserWindow.getAllWindows().length === 0) {
58 | createWindow();
59 | }
60 | });
61 |
62 | app.on('window-all-closed', () => {
63 | if (process.platform !== 'darwin') {
64 | app.quit();
65 | }
66 | });
67 | });
68 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ekkremis",
3 | "version": "1.0.0",
4 | "author": "Team sQuadro53",
5 | "description": "Kubernetes status dashboard in a React-TypeScript-Electron app with Electron Builder",
6 | "homepage": ".",
7 | "main": "build/electron/main.js",
8 | "private": true,
9 | "dependencies": {
10 | "@testing-library/jest-dom": "^5.16.5",
11 | "@testing-library/react": "^13.4.0",
12 | "@testing-library/user-event": "^14.4.3",
13 | "@types/electron-devtools-installer": "^2.2.2",
14 | "@types/jest": "^29.0.3",
15 | "@types/node": "^18.7.20",
16 | "@types/query-string": "^6.3.0",
17 | "@types/react": "^18.0.21",
18 | "@types/react-dom": "^18.0.6",
19 | "@types/react-router-dom": "^5.3.3",
20 | "electron-devtools-installer": "^3.2.0",
21 | "electron-reload": "^1.5.0",
22 | "fs": "^0.0.1-security",
23 | "path": "^0.12.7",
24 | "react": "^18.2.0",
25 | "react-dom": "^18.2.0",
26 | "react-router-dom": "^6.4.3",
27 | "react-scripts": "5.0.1",
28 | "typescript": "^4.8.3",
29 | "yarn": "^1.22.19"
30 | },
31 | "scripts": {
32 | "start": "react-scripts start",
33 | "build": "react-scripts build",
34 | "test": "react-scripts test",
35 | "postinstall": "electron-builder install-app-deps",
36 | "electron:dev": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://127.0.0.1:3000 && tsc -p electron -w\" \"wait-on http://127.0.0.1:3000 && tsc -p electron && electron .\"",
37 | "electron:build": "yarn build && tsc -p electron && electron-builder",
38 | "eject": "react-scripts eject"
39 | },
40 | "build": {
41 | "extends": null,
42 | "files": [
43 | "build/**/*"
44 | ],
45 | "directories": {
46 | "buildResources": "assets"
47 | }
48 | },
49 | "eslintConfig": {
50 | "extends": [
51 | "react-app",
52 | "react-app/jest"
53 | ]
54 | },
55 | "devDependencies": {
56 | "concurrently": "^7.4.0",
57 | "cross-env": "^7.0.3",
58 | "electron": "^20.2.0",
59 | "electron-builder": "^23.3.3",
60 | "wait-on": "^6.0.1"
61 | },
62 | "browserslist": {
63 | "production": [
64 | ">0.2%",
65 | "not dead",
66 | "not op_mini all"
67 | ],
68 | "development": [
69 | "last 1 chrome version",
70 | "last 1 firefox version",
71 | "last 1 safari version"
72 | ]
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/components/modalComps/ErrorModal.tsx:
--------------------------------------------------------------------------------
1 | import App from "../../App";
2 | import React, { useState } from "react";
3 | import "../../styles/errorModal.css";
4 |
5 | import { getPendingReason } from '../../utils';
6 |
7 | type ErrorProps = {
8 | show: boolean,
9 | toggleErrorModal: () => void;
10 | podName: string,
11 | currentUrl: string
12 | }
13 |
14 | // ErrorModal is a popup modal within each PodInfo component that displays error info
15 | const ErrorModal = (props: ErrorProps) => {
16 | // ran checks if getPendingReason has been ran to be able to toggle off the Loading component.
17 | const [ran, setRan] = useState(false);
18 | // logInfo will store the fetched error info if available. If logInfo remains falsey, then no errors will be displayed
19 | const [logInfo, setLogInfo] = useState();
20 | // noError is another option to store a default 'no errors found!' message. If an error is found, then it will change to 'yes error'. This could be a redundant stateful object.
21 | const [noError, setNoError] = useState('no errors found!');
22 |
23 | // showModalClassName toggles the classname of the component to toggle the css property display between 'block' and 'none'.
24 | const showModalClassName = props.show ? "modal display-block" : "modal display-none";
25 |
26 | // The ErrorModal will invoke getPendingReason to grab the pod status waiting reason
27 | getPendingReason('actual', setRan, setLogInfo, setNoError, props.podName, props.currentUrl);
28 |
29 | return (
30 |
31 |
32 | {ran ?
33 | :
34 |
35 | }
36 |
37 | Close
38 |
39 |
40 |
41 | )
42 | }
43 |
44 | // This is a Logs component that will display error logs within the ErrorModal
45 | const Logs = (props: any) => {
46 | // render different sh*t based on noError prop
47 |
48 | return (
49 |
50 | {props.logInfo ?
51 |
{props.logInfo} :
52 | NO ERRORS LOL
53 | }
54 |
55 | )
56 | }
57 |
58 | // This is a Loading component that will display a 'LOADING' message while the fetch for the pod status waiting reason is happening.
59 | const Loading = () => {
60 |
61 | return (
62 |
63 |
LOADING
64 |
65 | )
66 | }
67 |
68 | export default ErrorModal;
69 |
--------------------------------------------------------------------------------
/src/components/statelessComps/PodInfo.tsx:
--------------------------------------------------------------------------------
1 | // importing dependencies
2 | import React, { useState } from 'react';
3 | // importing other components
4 | import ChartsModal from '../modalComps/ChartsModal';
5 | import ErrorModal from '../modalComps/ErrorModal';
6 |
7 | // type for props for podInfo
8 | type podType = {
9 | podName: string,
10 | podNamespace: string,
11 | podStatus: string,
12 | podRestart: number,
13 | podAge: number,
14 | podReason?: string,
15 | currentUrl: string
16 | }
17 | // component for individual pod info
18 | const PodInfo = (props: podType) => {
19 |
20 | const [showChartsModal, setShowChartsModal] = useState(false);
21 |
22 | const toggleChartsModal = () => {
23 | setShowChartsModal(!showChartsModal);
24 | }
25 |
26 |
27 | const [showErrorModal, setShowErrorModal] = useState(false);
28 |
29 | const toggleErrorModal = () => {
30 | setShowErrorModal(!showErrorModal);
31 | }
32 |
33 | return(
34 |
35 |
{props.podName}
36 | {props.podNamespace}
37 | {props.podStatus}
38 | {props.podRestart}
39 | {props.podAge}
40 | charts
41 | logs
42 |
43 |
44 |
45 | )
46 | }
47 |
48 | export default PodInfo;
49 |
50 | // function getPodInfo(url: string, setPods: any) {
51 | // const promql = '/api/v1/query?query=';
52 | // let query = '(kube_pod_status_phase)==1';
53 | // const finalUrl = url + promql + query;
54 | // fetch(finalUrl)
55 | // .then(data => data.json())
56 | // .then(data => {
57 | // // format the data
58 | // let resultArray = data.data.result;
59 | // let resultObject :any = {"pending": {}, "running": {}, "successful": {}, "unkown": {}, "failed": {}};
60 | // for (let i=0; i {
10 | function handleClick(setAllPods: any) {
11 | console.log('inside handleClick')
12 | // document.getElementById() returns the type HTMLElement which does not contain a value property. The subtype HTMLInputElement does however contain the value property.
13 | const inputElement = (document.getElementById('endpoint-url') as HTMLInputElement);
14 | let inputValue = inputElement.value
15 | // const url = inputValue.toString() + '/metrics'
16 | if (inputValue) props.setCurrentUrl(inputValue);
17 | else inputValue = 'http://localhost:9090';
18 |
19 | inputElement.value = '';
20 | // this is the get real data from localhost 9090
21 | getPodInfo("actual", setAllPods, inputValue);
22 |
23 | // this uses mock data
24 | // getPodInfo("mock", setAllPods);
25 |
26 | // declare a resultObject -> {"pending": {}, "running": {}, "succeeded": {}, "unknown": {}, "failed": {}};
27 | // call our first fetch function to update result object, pass in resultObject as an argument
28 | // second fetch
29 | // third fetch
30 | // setAllPods(resultObject)
31 |
32 | }
33 |
34 | let placeholder = ' enter your url here';
35 | // if (props.currentUrl) placeholder = props.currentUrl;
36 |
37 | return(
38 |
39 |
40 |
41 |
42 |
/metrics
43 | {handleClick(props.setAllPods)}}
47 | />
48 | {/* {handleClick(props.setAllPods)}}>update url */}
49 |
50 |
51 |
55 |
59 |
60 |
61 | )
62 | }
63 |
64 | export default TopBar;
--------------------------------------------------------------------------------
/src/styles/dashboard.css:
--------------------------------------------------------------------------------
1 | .dashboard {
2 | width: 100%;
3 | height: 200%;
4 | }
5 |
6 | .top-bar {
7 | position: fixed;
8 | top: 0;
9 | display: flex;
10 | align-items: center;
11 | justify-content: space-around;
12 | transition: 0.5s;
13 | width: 100%;
14 | height: 75px;
15 | border: 1.2px solid #ec633677;
16 | box-shadow: 0 2px 3px #E2E0E1, 0 1px 3px #ec6336b5;
17 | }
18 |
19 | .header-logo {
20 | position: fixed;
21 | left: 0;
22 | margin-top: 5px;
23 | margin-left: 50px;
24 | }
25 |
26 | .main {
27 | display: flex;
28 | justify-content: center;
29 | margin-top: 75px;
30 | height: 100%;
31 | }
32 |
33 | .query-bar {
34 | position: fixed;
35 | left: 0;
36 | margin-left: 20px;
37 | margin-top: 10px;
38 | height: 800px;
39 | max-width: 250px;
40 | margin-right: 100px;
41 | }
42 |
43 | .right-side {
44 | margin-left: 300px;
45 | position: relative;
46 | }
47 |
48 | .display {
49 | border: 1.2px solid #ec633677;
50 | box-shadow: 0 4px 6px #E2E0E1, 0 1px 3px #ec6336b5;
51 | flex: 0.3;
52 | height: 200px;
53 | width: 550px;
54 | margin-top: 50px;
55 | }
56 |
57 | .display img {
58 | height: 200px;
59 | width: 550px;
60 | margin-top: -58px;
61 | }
62 |
63 | .pods-header {
64 | height: 35px;
65 | width: 100%;
66 | display: flex;
67 | border: none;
68 | border-radius: 5px;
69 | background-color: rgb(222, 145, 41);
70 | transition: 0.5s;
71 | margin-top: 30px;
72 | margin-bottom: -15px;
73 | }
74 |
75 | .pods-header h5 {
76 | padding-left: 10px;
77 | margin: 30px;
78 | margin-top: 10px;
79 | color: white;
80 | }
81 |
82 | .all-pod-info {
83 | border: 1.2px solid #ec633677;
84 | border-radius: 5px;
85 | flex: 0.3;
86 | height: 290px;
87 | width: 650px;
88 | margin-top: 20px;
89 | overflow-y: auto
90 | }
91 |
92 | .pod-info {
93 | height: 50px;
94 | width: 97%;
95 | display: flex;
96 | justify-content: center;
97 | background-color: #E2E0E1;
98 | border: 1.2px solid #ec633677;
99 | border-radius: 5px;
100 | margin: 5px;
101 | padding-bottom: 10px;
102 | padding-top: -10px;
103 | }
104 |
105 | .pod-info h5 {
106 | margin-left: 20px;
107 | margin-right: 20px;
108 | text-align: center;
109 | }
110 |
111 | @media only screen and (max-width: 600px) {
112 | .right-side {
113 | margin-left: 180px;
114 | }
115 | .query-bar {
116 | margin-left: 5px;
117 | width: 220px;
118 | }
119 | .header-logo {
120 | position: fixed;
121 | left: 0;
122 | margin-top: 5px;
123 | margin-left: 2px;
124 | }
125 | .display {
126 | width: 200px;
127 | }
128 | .all-pod-info {
129 | width: 200px;
130 | }
131 | .pods-header {
132 | width: 190px;
133 | }
134 | }
135 |
136 |
--------------------------------------------------------------------------------
/src/components/Dashboard.tsx:
--------------------------------------------------------------------------------
1 | // importing dependencies
2 | import React, { useState, useEffect } from 'react';
3 | // importing other components
4 | import '../styles/dashboard.css';
5 | import QueryBar from './statelessComps/QueryBar';
6 | import AllPodInfo from './statelessComps/AllPodInfo';
7 | import TopBar from './statelessComps/TopBar';
8 | import Display from './statelessComps/Display';
9 | // importing functions from utils
10 | import { getPodInfo } from '../utils';
11 |
12 |
13 | // import mock data
14 | // import mockData from '../mock_data.json' assert { type: 'JSON' };
15 | // mockData = mockData.json();
16 | let mockData: any = {"pending": {}, "running": {}, "succeeded": {}, "unknown": {}, "failed": {}}
17 |
18 | // fetch('../mock_data.json')
19 | // .then(response => response.json())
20 | // .then(data => mockData = data.data)
21 | // .catch(error => console.log(error));
22 |
23 | // the parent componeent that holds all states and puts all other components together
24 | const Dashboard = () => {
25 | // state for current URL
26 | const [currentUrl, setCurrentUrl] = useState('http://localhost:9090');
27 | // state for current active nav bar category
28 | const [status, setStatus] = useState('summary');
29 | // state for current pods for display - initialized by each button click - creates a subset of allPods based on status
30 | const [currentPods, setCurrentPods] = useState({
31 | "pendingPod1": { "podName": "pending pod 1", "node": "minikube", "status": "pending", "restarts": 0, "age": "53 minutes" },
32 | "pendingPod2": { "podName": "pending pod 2", "node": "minikube", "status": "pending", "restarts": 0, "age": "53 minutes" },
33 | "pendingPod3": { "podName": "pending pod 3", "node": "minikube", "status": "pending", "restarts": 0, "age": "53 minutes" }
34 | });
35 | // all pods looks like this: {"pending": {}, "running": {}, "succeeded": {}, "unknown": {}, "failed": {}}
36 | const [allPods, setAllPods] = useState(mockData);
37 |
38 | // function to convert all pod data to summary format
39 | async function generateSummary() {
40 | // array of keys of allPods
41 | let keysArray = Object.keys(allPods);
42 | let resultObject = {};
43 | for (let i = 0; i < keysArray.length; i++) {
44 | Object.assign(resultObject, allPods[keysArray[i]])
45 | }
46 | // return an object that's in an accepted format by currentPods
47 | return resultObject;
48 | }
49 |
50 | // failed attempt to get the data to render on first load...
51 | // if (!status) setStatus('summary');
52 |
53 | useEffect(() => {
54 | // for the cleanup function
55 | let hasBeenRun = false;
56 | if (!hasBeenRun) {
57 | // reshape all pod data to fit status - resets current pods
58 | if (status !== 'summary') setCurrentPods(allPods[status]);
59 | else {
60 | (async () => {
61 | getPodInfo("actual", setAllPods, currentUrl);
62 | const summary: any = await generateSummary();
63 | console.log(summary);
64 | setCurrentPods(summary);
65 | })();
66 | }
67 | }
68 | console.log(currentPods);
69 | // cleanup function to aviod looping
70 | return () => {
71 | hasBeenRun = true;
72 | }
73 | }, [status, currentUrl]); // update current pods when status or url changes
74 |
75 |
76 | return(
77 |
89 | )
90 | }
91 |
92 | export default Dashboard;
93 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Ekkremis
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Optomize your Kubernetes pod lifecycle. Built with React Typescript with Electron/Node.js runtime.
10 |
11 |
12 |
13 |
14 | ## Table of Contents
15 |
16 | - [Introduction](#introduction)
17 | - [Features](#features)
18 | - [Feedback](#feedback)
19 | - [Contributors](#contributors)
20 | - [Alerts Setup](#alerts-setup)
21 | - [Dashboard Build](#dashboard-build)
22 | - [Acknowledgments](#acknowledgments)
23 |
24 |
25 | ## Introduction
26 |
27 | Some Kubernetes pods can't be scheduled and get stuck in a pending phase of the pod lifecycle.
28 |
29 |
30 |
31 |
32 |
33 | The status of pending pods has to be manually queried to proceed with resolving them, which slows down the deployment workflow.
34 |
35 | This repository contains the code for Ekkremis: a prometheus-based alertmanager to resolve kubernetes pods pending issues. Ekkremis leverages prometheus data scraping and reports back when issues interfere with scheduling along with tailored solutions. Additionally, Ekkremis has an optional lifecycle dashboard where DevOps engineers will find a consolidated view of pod metrics by state. Solutions provided by Ekkremis (greek for pending) increases Kubernetes deployment efficiency by providing updates on pending and other unhealthy pods to get them up and running faster.
36 |
37 | ## Requirements
38 | - Prometheus (can run demo without)
39 | - npm (web view only)
40 | - yarn (web or electron app)
41 |
42 | ## Features
43 |
44 | A few of the things you can do with Ekkremis:
45 |
46 | * Reduce manual queries to find unhealthy or pending pods
47 | * Receive alerts by email or slack when your pods are stuck in pending
48 | * Implement tailored solutions suggested by Ekkremis to get your pods up and running
49 |
50 |
51 | **Optional Ekkremis Lifecycle Dashboard.**
52 |
53 | Lots of great screenshots coming!
54 |
55 |
63 |
64 |
65 | ## Alerts Setup
66 |
69 |
70 | ## Dashboard Build Process
71 |
72 |
73 | **Initial Setup**
74 | - Clone or download the repo
75 | - `npm install` to install dependencies
76 |
77 | **If running Ekkremis on Web App**
78 | - `npm run build` to create a build folder
79 |
80 | **If running Ekkremis on Electron App**
81 | - install yarn if you don't already have it (required for the following steps)
82 | - `npm run postinstall` to install electron-specific dependencies
83 | - `npm run electron:build` to build the Electron app for current platform and current architecture using default target
84 |
85 | **Once running the app**
86 | - Add your prometheus metrics endpoint for Kubernetes pods to the metrics input (Ekkremis defaults to http://localhost:9090)
87 | - Navigate between pod status metric displays through the navigation bar on the left
88 | - Gain more information about individual unhealthy or pending pods by selecting the 'error' and 'charts' buttons
89 | - Implement solutions suggested in Ekkremis for pending pods
90 |
91 | ## Running the DEMO with Mock Data
92 |
93 | - Add this mock promethus endpoint to the metrics input
94 |
95 | ## Feedback
96 |
97 | If something is not behaving intuitively, it is a bug and should be reported.
98 | Report it here by creating an issue: https://github.com/oslabs-beta/ekkremis/issues
99 |
100 | Help us fix the problem as quickly as possible by following [Mozilla's guidelines for reporting bugs.](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines#General_Outline_of_a_Bug_Report)
101 |
102 | Feel free to send us feedback on [Twitter](https://twitter.com/gitpointapp) or [file an issue](https://github.com/gitpoint/git-point/issues/new). Feature requests are always welcome. If you wish to contribute, please take a quick look at the [guidelines](./CONTRIBUTING.md)!
103 |
104 | If there's anything you'd like to chat about, please feel free to join our [Gitter chat](https://gitter.im/git-point)!
105 |
106 | ## Contributors
107 |
108 | This project is brought to you by these [awesome contributors](./CONTRIBUTORS.md).
109 |
110 | Please take a look at the [contributing guidelines](./CONTRIBUTING.md) for a detailed process on how to build your application as well as troubleshooting information.
111 |
112 | ## Acknowledgments
113 |
114 | Thanks to tech accelerator [OSLabs-Beta](https://github.com/oslabs-beta) for supporting this project.
115 |
116 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 |
2 | // import { app } from 'electron';
3 | import path from 'path';
4 |
5 | /*
6 | This function is a test to see if mock data can be fetched from a local json file, in order to reuse the fetch functionality for actual Prometheus metrics.
7 | The fetch funtionality works for the json file when hardcoded as 'file:///Users/z/codesmith/Ekkremis/src/mock_data.json'.
8 | Still need to find a way to dynamically build the file path to the mock data.
9 | The app tries to fetch from localhost unless specifying 'file://'.
10 | __dirname returns '/' from within this file.
11 | Within main.ts, app.getPath('userData') returns the path that can be combined with 'file://' + app.getPath('userData') + '/src/mock_data.json'.
12 | */
13 |
14 | export function test() {
15 | // console.log(__dirname) // returns '/'
16 | // const string = ('file:///Users/z/codesmith/Ekkremis/src/mock_data.json')
17 | const string = 'file://' + 'static';
18 | console.log(string);
19 | fetch(string)
20 | .then(data => data.json())
21 | .then(data => {
22 | console.log(data)
23 | })
24 | }
25 |
26 | // UseCase allows for only two accepted types for data source useCase, 'mock' & 'actual' .
27 | type UseCase = "mock" | "actual";
28 |
29 | // getPodInfo fetches the current phase of the pods along with total restarts and age in hours.
30 | export function getPodInfo(useCase: UseCase, setAllPods: any, url?: string) {
31 | // this promql is the initial portion of the Prometheus query string.
32 | const promql = '/api/v1/query?query=';
33 |
34 | // These are queries for the current phase of the pods along with total restarts and age in seconds.
35 | let statusPhaseQuery = '(kube_pod_status_phase)==1';
36 | let restartQuery = '(kube_pod_container_status_restarts_total)';
37 | let ageQuery = '(kube_pod_start_time)';
38 |
39 | let finalStatusUrl: string = '';
40 | let finalRestartUrl: string = '';
41 | let finalAgeUrl: string = '';
42 | if (useCase==='actual') {
43 | finalStatusUrl = url + promql + statusPhaseQuery;
44 | finalRestartUrl = url + promql + restartQuery;
45 | finalAgeUrl = url + promql + ageQuery;
46 | }
47 | console.log('sendQuery invoked', finalStatusUrl)
48 |
49 | // Three separate fetch requests are made here to build up a restart object that stores restarts and the pod age converted from seconds to hours.
50 | // The last fetch request gets the pod status object and then maps the restarts and age to each pod before setting the allPods state.
51 | let resultObject :any = {"pending": {}, "running": {}, "succeeded": {}, "unknown": {}, "failed": {}};
52 | let restartObject :any = {};
53 | fetch(finalRestartUrl)
54 | .then(data => data.json())
55 | .then(data => {
56 | let resultArray;
57 | if (useCase==='mock') resultArray = data[restartQuery].data.result;
58 | else if (useCase==='actual') resultArray = data.data.result;
59 | for (let i=0; i {
66 | fetch(finalAgeUrl)
67 | .then(data => data.json())
68 | .then(data => {
69 | let resultArray;
70 | if (useCase==='mock') resultArray = data[restartQuery].data.result;
71 | else if (useCase==='actual') resultArray = data.data.result;
72 | const currentTime = Math.floor(Date.now() / 1000);
73 | for (let i=0; i {
80 | fetch(finalStatusUrl)
81 | .then(data => data.json())
82 | .then(data => {
83 | // format the data
84 | let resultArray;
85 | if (useCase==='mock') resultArray = data[statusPhaseQuery].data.result;
86 | else if (useCase==='actual') resultArray = data.data.result;
87 | for (let i=0; i data.json())
122 | .then(data => {
123 | if (data.data.result.length===0) {
124 | // setRan to true so the Log component renders in place of the Loading component.
125 | setRan(true);
126 | return 'no';
127 | };
128 | const reason = data.data.result[0].metric.reason;
129 | // Set the error log reason to be the reason.
130 | setLogInfo(reason);
131 | // Set the noError state to have an error.
132 | setNoError('yes error');
133 | // setRan to true so the Log component renders in place of the Loading component.
134 | setRan(true);
135 | })
136 | }
137 |
--------------------------------------------------------------------------------
/src/mock_data.json:
--------------------------------------------------------------------------------
1 | {
2 | "(kube_pod_status_phase)==1": {
3 | "status": "success",
4 | "data": {
5 | "resultType": "vector",
6 | "result": [
7 | {
8 | "metric": {
9 | "__name__": "kube_pod_status_phase",
10 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
11 | "job": "kube-state-metrics",
12 | "namespace": "default",
13 | "phase": "Pending",
14 | "pod": "cowclicker-7dbd496458-rpznx",
15 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
16 | },
17 | "value": [1667258442.939, "1"]
18 | },
19 | {
20 | "metric": {
21 | "__name__": "kube_pod_status_phase",
22 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
23 | "job": "kube-state-metrics",
24 | "namespace": "default",
25 | "phase": "Pending",
26 | "pod": "cowclicker-7dbd496458-fvq9w",
27 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
28 | },
29 | "value": [1667258442.939, "1"]
30 | },
31 | {
32 | "metric": {
33 | "__name__": "kube_pod_status_phase",
34 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
35 | "job": "kube-state-metrics",
36 | "namespace": "default",
37 | "phase": "Pending",
38 | "pod": "cowclicker-4dbe896458-dmqfq",
39 | "uid": "45269121-81db-462a-bc2f-e42c355b7153"
40 | },
41 | "value": [1667258442.939, "1"]
42 | },
43 | {
44 | "metric": {
45 | "__name__": "kube_pod_status_phase",
46 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
47 | "job": "kube-state-metrics",
48 | "namespace": "default",
49 | "phase": "Pending",
50 | "pod": "cowclicker-7dbd496458-dmscq",
51 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
52 | },
53 | "value": [1667258442.939, "1"]
54 | },
55 | {
56 | "metric": {
57 | "__name__": "kube_pod_status_phase",
58 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
59 | "job": "kube-state-metrics",
60 | "namespace": "default",
61 | "phase": "Running",
62 | "pod": "cowclicker-7dbd496458-dmscq",
63 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
64 | },
65 | "value": [1667258442.939, "1"]
66 | },
67 | {
68 | "metric": {
69 | "__name__": "kube_pod_status_phase",
70 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
71 | "job": "kube-state-metrics",
72 | "namespace": "default",
73 | "phase": "Running",
74 | "pod": "cowclicker-7dbd496458-fvq9w",
75 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
76 | },
77 | "value": [1667258442.939, "1"]
78 | },
79 | {
80 | "metric": {
81 | "__name__": "kube_pod_status_phase",
82 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
83 | "job": "kube-state-metrics",
84 | "namespace": "default",
85 | "phase": "Running",
86 | "pod": "cowclicker-7dbd496458-rpznx",
87 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
88 | },
89 | "value": [1667258442.939, "1"]
90 | },
91 | {
92 | "metric": {
93 | "__name__": "kube_pod_status_phase",
94 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
95 | "job": "kube-state-metrics",
96 | "namespace": "kube-system",
97 | "phase": "Running",
98 | "pod": "coredns-565d847f94-g2m7t",
99 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
100 | },
101 | "value": [1667258442.939, "1"]
102 | },
103 | {
104 | "metric": {
105 | "__name__": "kube_pod_status_phase",
106 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
107 | "job": "kube-state-metrics",
108 | "namespace": "kube-system",
109 | "phase": "Running",
110 | "pod": "etcd-minikube",
111 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
112 | },
113 | "value": [1667258442.939, "1"]
114 | },
115 | {
116 | "metric": {
117 | "__name__": "kube_pod_status_phase",
118 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
119 | "job": "kube-state-metrics",
120 | "namespace": "kube-system",
121 | "phase": "Running",
122 | "pod": "kube-apiserver-minikube",
123 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
124 | },
125 | "value": [1667258442.939, "1"]
126 | },
127 | {
128 | "metric": {
129 | "__name__": "kube_pod_status_phase",
130 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
131 | "job": "kube-state-metrics",
132 | "namespace": "kube-system",
133 | "phase": "Running",
134 | "pod": "kube-controller-manager-minikube",
135 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
136 | },
137 | "value": [1667258442.939, "1"]
138 | },
139 | {
140 | "metric": {
141 | "__name__": "kube_pod_status_phase",
142 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
143 | "job": "kube-state-metrics",
144 | "namespace": "kube-system",
145 | "phase": "Running",
146 | "pod": "kube-proxy-hmwlw",
147 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
148 | },
149 | "value": [1667258442.939, "1"]
150 | },
151 | {
152 | "metric": {
153 | "__name__": "kube_pod_status_phase",
154 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
155 | "job": "kube-state-metrics",
156 | "namespace": "kube-system",
157 | "phase": "Running",
158 | "pod": "kube-scheduler-minikube",
159 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
160 | },
161 | "value": [1667258442.939, "1"]
162 | },
163 | {
164 | "metric": {
165 | "__name__": "kube_pod_status_phase",
166 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
167 | "job": "kube-state-metrics",
168 | "namespace": "kube-system",
169 | "phase": "Running",
170 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
171 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
172 | },
173 | "value": [1667258442.939, "1"]
174 | },
175 | {
176 | "metric": {
177 | "__name__": "kube_pod_status_phase",
178 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
179 | "job": "kube-state-metrics",
180 | "namespace": "kube-system",
181 | "phase": "Running",
182 | "pod": "metrics-server-769cd898cd-wchcp",
183 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
184 | },
185 | "value": [1667258442.939, "1"]
186 | },
187 | {
188 | "metric": {
189 | "__name__": "kube_pod_status_phase",
190 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
191 | "job": "kube-state-metrics",
192 | "namespace": "kube-system",
193 | "phase": "Running",
194 | "pod": "storage-provisioner",
195 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
196 | },
197 | "value": [1667258442.939, "1"]
198 | },
199 | {
200 | "metric": {
201 | "__name__": "kube_pod_status_phase",
202 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
203 | "job": "kube-state-metrics",
204 | "namespace": "kubernetes-dashboard",
205 | "phase": "Running",
206 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
207 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
208 | },
209 | "value": [1667258442.939, "1"]
210 | },
211 | {
212 | "metric": {
213 | "__name__": "kube_pod_status_phase",
214 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
215 | "job": "kube-state-metrics",
216 | "namespace": "kubernetes-dashboard",
217 | "phase": "Running",
218 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
219 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
220 | },
221 | "value": [1667258442.939, "1"]
222 | },
223 | {
224 | "metric": {
225 | "__name__": "kube_pod_status_phase",
226 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
227 | "job": "kube-state-metrics",
228 | "namespace": "monitoring",
229 | "phase": "Running",
230 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
231 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
232 | },
233 | "value": [1667258442.939, "1"]
234 | },
235 | {
236 | "metric": {
237 | "__name__": "kube_pod_status_phase",
238 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
239 | "job": "kube-state-metrics",
240 | "namespace": "default",
241 | "phase": "Failed",
242 | "pod": "experimental-pod-1",
243 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
244 | },
245 | "value": [1667258442.939, "1"]
246 | },
247 | {
248 | "metric": {
249 | "__name__": "kube_pod_status_phase",
250 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
251 | "job": "kube-state-metrics",
252 | "namespace": "metrics",
253 | "phase": "Failed",
254 | "pod": "experimental-metrics-pod-1",
255 | "uid": "d4804b22-a05p-4dc2-b724-810a58ac671f"
256 | },
257 | "value": [1667258442.939, "1"]
258 | },
259 | {
260 | "metric": {
261 | "__name__": "kube_pod_status_phase",
262 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
263 | "job": "kube-state-metrics",
264 | "namespace": "default",
265 | "phase": "Succeeded",
266 | "pod": "experimental-pod-2",
267 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
268 | },
269 | "value": [1667258442.939, "1"]
270 | },
271 | {
272 | "metric": {
273 | "__name__": "kube_pod_status_phase",
274 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
275 | "job": "kube-state-metrics",
276 | "namespace": "metrics",
277 | "phase": "Succeeded",
278 | "pod": "experimental-metrics-pod-2",
279 | "uid": "d4804b22-a05p-4dc2-b724-810a58ac671f"
280 | },
281 | "value": [1667258442.939, "1"]
282 | },
283 | {
284 | "metric": {
285 | "__name__": "kube_pod_status_phase",
286 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
287 | "job": "kube-state-metrics",
288 | "namespace": "default",
289 | "phase": "Unknown",
290 | "pod": "experimental-pod-3",
291 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
292 | },
293 | "value": [1667258442.939, "1"]
294 | }
295 | ]
296 | }
297 | },
298 | "(kube_pod_container_status_waiting_reason)": {
299 | "status": "success",
300 | "data": {
301 | "resultType": "vector",
302 | "result": [
303 | {
304 | "metric": {
305 | "__name__": "kube_pod_container_status_waiting_reason",
306 | "container": "cowclicker-test4",
307 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
308 | "job": "kube-state-metrics",
309 | "namespace": "default",
310 | "pod": "cowclicker-97d4s",
311 | "reason": "ImagePullBackOff",
312 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
313 | },
314 | "value": [1667666054.08, "1"]
315 | },
316 | {
317 | "metric": {
318 | "__name__": "kube_pod_container_status_waiting_reason",
319 | "container": "cowclicker-test4",
320 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
321 | "job": "kube-state-metrics",
322 | "namespace": "default",
323 | "pod": "cowclicker-k82f7",
324 | "reason": "ImagePullBackOff",
325 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
326 | },
327 | "value": [1667666054.08, "1"]
328 | },
329 | {
330 | "metric": {
331 | "__name__": "kube_pod_container_status_waiting_reason",
332 | "container": "cowclicker-test4",
333 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
334 | "job": "kube-state-metrics",
335 | "namespace": "default",
336 | "pod": "cowclicker-xlsmq",
337 | "reason": "ImagePullBackOff",
338 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
339 | },
340 | "value": [1667666054.08, "1"]
341 | }
342 | ]
343 | }
344 | },
345 | "(kube_pod_container_status_restarts_total)": {
346 | "status": "success",
347 | "data": {
348 | "resultType": "vector",
349 | "result": [
350 | {
351 | "metric": {
352 | "__name__": "kube_pod_container_status_restarts_total",
353 | "container": "coredns",
354 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
355 | "job": "kube-state-metrics",
356 | "namespace": "kube-system",
357 | "pod": "coredns-565d847f94-g2m7t",
358 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
359 | },
360 | "value": [1667666222.644, "17"]
361 | },
362 | {
363 | "metric": {
364 | "__name__": "kube_pod_container_status_restarts_total",
365 | "container": "cowclicker",
366 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
367 | "job": "kube-state-metrics",
368 | "namespace": "default",
369 | "pod": "cowclicker-7dbd496458-dmscq",
370 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
371 | },
372 | "value": [1667666222.644, "14"]
373 | },
374 | {
375 | "metric": {
376 | "__name__": "kube_pod_container_status_restarts_total",
377 | "container": "cowclicker",
378 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
379 | "job": "kube-state-metrics",
380 | "namespace": "default",
381 | "pod": "cowclicker-7dbd496458-fvq9w",
382 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
383 | },
384 | "value": [1667666222.644, "14"]
385 | },
386 | {
387 | "metric": {
388 | "__name__": "kube_pod_container_status_restarts_total",
389 | "container": "cowclicker",
390 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
391 | "job": "kube-state-metrics",
392 | "namespace": "default",
393 | "pod": "cowclicker-7dbd496458-rpznx",
394 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
395 | },
396 | "value": [1667666222.644, "14"]
397 | },
398 | {
399 | "metric": {
400 | "__name__": "kube_pod_container_status_restarts_total",
401 | "container": "cowclicker-test4",
402 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
403 | "job": "kube-state-metrics",
404 | "namespace": "default",
405 | "pod": "cowclicker-97d4s",
406 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
407 | },
408 | "value": [1667666222.644, "0"]
409 | },
410 | {
411 | "metric": {
412 | "__name__": "kube_pod_container_status_restarts_total",
413 | "container": "cowclicker-test4",
414 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
415 | "job": "kube-state-metrics",
416 | "namespace": "default",
417 | "pod": "cowclicker-k82f7",
418 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
419 | },
420 | "value": [1667666222.644, "0"]
421 | },
422 | {
423 | "metric": {
424 | "__name__": "kube_pod_container_status_restarts_total",
425 | "container": "cowclicker-test4",
426 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
427 | "job": "kube-state-metrics",
428 | "namespace": "default",
429 | "pod": "cowclicker-xlsmq",
430 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
431 | },
432 | "value": [1667666222.644, "0"]
433 | },
434 | {
435 | "metric": {
436 | "__name__": "kube_pod_container_status_restarts_total",
437 | "container": "dashboard-metrics-scraper",
438 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
439 | "job": "kube-state-metrics",
440 | "namespace": "kubernetes-dashboard",
441 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
442 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
443 | },
444 | "value": [1667666222.644, "16"]
445 | },
446 | {
447 | "metric": {
448 | "__name__": "kube_pod_container_status_restarts_total",
449 | "container": "etcd",
450 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
451 | "job": "kube-state-metrics",
452 | "namespace": "kube-system",
453 | "pod": "etcd-minikube",
454 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
455 | },
456 | "value": [1667666222.644, "17"]
457 | },
458 | {
459 | "metric": {
460 | "__name__": "kube_pod_container_status_restarts_total",
461 | "container": "kube-apiserver",
462 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
463 | "job": "kube-state-metrics",
464 | "namespace": "kube-system",
465 | "pod": "kube-apiserver-minikube",
466 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
467 | },
468 | "value": [1667666222.644, "17"]
469 | },
470 | {
471 | "metric": {
472 | "__name__": "kube_pod_container_status_restarts_total",
473 | "container": "kube-controller-manager",
474 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
475 | "job": "kube-state-metrics",
476 | "namespace": "kube-system",
477 | "pod": "kube-controller-manager-minikube",
478 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
479 | },
480 | "value": [1667666222.644, "18"]
481 | },
482 | {
483 | "metric": {
484 | "__name__": "kube_pod_container_status_restarts_total",
485 | "container": "kube-proxy",
486 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
487 | "job": "kube-state-metrics",
488 | "namespace": "kube-system",
489 | "pod": "kube-proxy-hmwlw",
490 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
491 | },
492 | "value": [1667666222.644, "17"]
493 | },
494 | {
495 | "metric": {
496 | "__name__": "kube_pod_container_status_restarts_total",
497 | "container": "kube-scheduler",
498 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
499 | "job": "kube-state-metrics",
500 | "namespace": "kube-system",
501 | "pod": "kube-scheduler-minikube",
502 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
503 | },
504 | "value": [1667666222.644, "17"]
505 | },
506 | {
507 | "metric": {
508 | "__name__": "kube_pod_container_status_restarts_total",
509 | "container": "kube-state-metrics",
510 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
511 | "job": "kube-state-metrics",
512 | "namespace": "kube-system",
513 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
514 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
515 | },
516 | "value": [1667666222.644, "21"]
517 | },
518 | {
519 | "metric": {
520 | "__name__": "kube_pod_container_status_restarts_total",
521 | "container": "kubernetes-dashboard",
522 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
523 | "job": "kube-state-metrics",
524 | "namespace": "kubernetes-dashboard",
525 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
526 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
527 | },
528 | "value": [1667666222.644, "26"]
529 | },
530 | {
531 | "metric": {
532 | "__name__": "kube_pod_container_status_restarts_total",
533 | "container": "metrics-server",
534 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
535 | "job": "kube-state-metrics",
536 | "namespace": "kube-system",
537 | "pod": "metrics-server-769cd898cd-wchcp",
538 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
539 | },
540 | "value": [1667666222.644, "48"]
541 | },
542 | {
543 | "metric": {
544 | "__name__": "kube_pod_container_status_restarts_total",
545 | "container": "prometheus",
546 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
547 | "job": "kube-state-metrics",
548 | "namespace": "monitoring",
549 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
550 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
551 | },
552 | "value": [1667666222.644, "12"]
553 | },
554 | {
555 | "metric": {
556 | "__name__": "kube_pod_container_status_restarts_total",
557 | "container": "storage-provisioner",
558 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
559 | "job": "kube-state-metrics",
560 | "namespace": "kube-system",
561 | "pod": "storage-provisioner",
562 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
563 | },
564 | "value": [1667666222.644, "36"]
565 | }
566 | ]
567 | }
568 | },
569 | "(kube_pod_container_resource_requests)": {
570 | "status": "success",
571 | "data": {
572 | "resultType": "vector",
573 | "result": [
574 | {
575 | "metric": {
576 | "__name__": "kube_pod_container_resource_requests",
577 | "container": "coredns",
578 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
579 | "job": "kube-state-metrics",
580 | "namespace": "kube-system",
581 | "node": "minikube",
582 | "pod": "coredns-565d847f94-g2m7t",
583 | "resource": "cpu",
584 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586",
585 | "unit": "core"
586 | },
587 | "value": [1667666307.868, "0.1"]
588 | },
589 | {
590 | "metric": {
591 | "__name__": "kube_pod_container_resource_requests",
592 | "container": "coredns",
593 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
594 | "job": "kube-state-metrics",
595 | "namespace": "kube-system",
596 | "node": "minikube",
597 | "pod": "coredns-565d847f94-g2m7t",
598 | "resource": "memory",
599 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586",
600 | "unit": "byte"
601 | },
602 | "value": [1667666307.868, "73400320"]
603 | },
604 | {
605 | "metric": {
606 | "__name__": "kube_pod_container_resource_requests",
607 | "container": "etcd",
608 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
609 | "job": "kube-state-metrics",
610 | "namespace": "kube-system",
611 | "node": "minikube",
612 | "pod": "etcd-minikube",
613 | "resource": "cpu",
614 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec",
615 | "unit": "core"
616 | },
617 | "value": [1667666307.868, "0.1"]
618 | },
619 | {
620 | "metric": {
621 | "__name__": "kube_pod_container_resource_requests",
622 | "container": "etcd",
623 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
624 | "job": "kube-state-metrics",
625 | "namespace": "kube-system",
626 | "node": "minikube",
627 | "pod": "etcd-minikube",
628 | "resource": "memory",
629 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec",
630 | "unit": "byte"
631 | },
632 | "value": [1667666307.868, "104857600"]
633 | },
634 | {
635 | "metric": {
636 | "__name__": "kube_pod_container_resource_requests",
637 | "container": "kube-apiserver",
638 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
639 | "job": "kube-state-metrics",
640 | "namespace": "kube-system",
641 | "node": "minikube",
642 | "pod": "kube-apiserver-minikube",
643 | "resource": "cpu",
644 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486",
645 | "unit": "core"
646 | },
647 | "value": [1667666307.868, "0.25"]
648 | },
649 | {
650 | "metric": {
651 | "__name__": "kube_pod_container_resource_requests",
652 | "container": "kube-controller-manager",
653 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
654 | "job": "kube-state-metrics",
655 | "namespace": "kube-system",
656 | "node": "minikube",
657 | "pod": "kube-controller-manager-minikube",
658 | "resource": "cpu",
659 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867",
660 | "unit": "core"
661 | },
662 | "value": [1667666307.868, "0.2"]
663 | },
664 | {
665 | "metric": {
666 | "__name__": "kube_pod_container_resource_requests",
667 | "container": "kube-scheduler",
668 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
669 | "job": "kube-state-metrics",
670 | "namespace": "kube-system",
671 | "node": "minikube",
672 | "pod": "kube-scheduler-minikube",
673 | "resource": "cpu",
674 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475",
675 | "unit": "core"
676 | },
677 | "value": [1667666307.868, "0.1"]
678 | },
679 | {
680 | "metric": {
681 | "__name__": "kube_pod_container_resource_requests",
682 | "container": "metrics-server",
683 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
684 | "job": "kube-state-metrics",
685 | "namespace": "kube-system",
686 | "node": "minikube",
687 | "pod": "metrics-server-769cd898cd-wchcp",
688 | "resource": "cpu",
689 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e",
690 | "unit": "core"
691 | },
692 | "value": [1667666307.868, "0.1"]
693 | },
694 | {
695 | "metric": {
696 | "__name__": "kube_pod_container_resource_requests",
697 | "container": "metrics-server",
698 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
699 | "job": "kube-state-metrics",
700 | "namespace": "kube-system",
701 | "node": "minikube",
702 | "pod": "metrics-server-769cd898cd-wchcp",
703 | "resource": "memory",
704 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e",
705 | "unit": "byte"
706 | },
707 | "value": [1667666307.868, "209715200"]
708 | },
709 | {
710 | "metric": {
711 | "__name__": "kube_pod_container_resource_requests",
712 | "container": "prometheus",
713 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
714 | "job": "kube-state-metrics",
715 | "namespace": "monitoring",
716 | "node": "minikube",
717 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
718 | "resource": "cpu",
719 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f",
720 | "unit": "core"
721 | },
722 | "value": [1667666307.868, "0.5"]
723 | },
724 | {
725 | "metric": {
726 | "__name__": "kube_pod_container_resource_requests",
727 | "container": "prometheus",
728 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
729 | "job": "kube-state-metrics",
730 | "namespace": "monitoring",
731 | "node": "minikube",
732 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
733 | "resource": "memory",
734 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f",
735 | "unit": "byte"
736 | },
737 | "value": [1667666307.868, "500000000"]
738 | }
739 | ]
740 | }
741 | },
742 | "(kube_pod_status_reason)": {
743 | "status": "success",
744 | "data": {
745 | "resultType": "vector",
746 | "result": [
747 | {
748 | "metric": {
749 | "__name__": "kube_pod_status_reason",
750 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
751 | "job": "kube-state-metrics",
752 | "namespace": "default",
753 | "pod": "cowclicker-7dbd496458-dmscq",
754 | "reason": "Evicted",
755 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
756 | },
757 | "value": [1667666608.16, "0"]
758 | },
759 | {
760 | "metric": {
761 | "__name__": "kube_pod_status_reason",
762 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
763 | "job": "kube-state-metrics",
764 | "namespace": "default",
765 | "pod": "cowclicker-7dbd496458-dmscq",
766 | "reason": "NodeAffinity",
767 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
768 | },
769 | "value": [1667666608.16, "0"]
770 | },
771 | {
772 | "metric": {
773 | "__name__": "kube_pod_status_reason",
774 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
775 | "job": "kube-state-metrics",
776 | "namespace": "default",
777 | "pod": "cowclicker-7dbd496458-dmscq",
778 | "reason": "NodeLost",
779 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
780 | },
781 | "value": [1667666608.16, "0"]
782 | },
783 | {
784 | "metric": {
785 | "__name__": "kube_pod_status_reason",
786 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
787 | "job": "kube-state-metrics",
788 | "namespace": "default",
789 | "pod": "cowclicker-7dbd496458-dmscq",
790 | "reason": "Shutdown",
791 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
792 | },
793 | "value": [1667666608.16, "0"]
794 | },
795 | {
796 | "metric": {
797 | "__name__": "kube_pod_status_reason",
798 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
799 | "job": "kube-state-metrics",
800 | "namespace": "default",
801 | "pod": "cowclicker-7dbd496458-dmscq",
802 | "reason": "UnexpectedAdmissionError",
803 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
804 | },
805 | "value": [1667666608.16, "0"]
806 | },
807 | {
808 | "metric": {
809 | "__name__": "kube_pod_status_reason",
810 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
811 | "job": "kube-state-metrics",
812 | "namespace": "default",
813 | "pod": "cowclicker-7dbd496458-fvq9w",
814 | "reason": "Evicted",
815 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
816 | },
817 | "value": [1667666608.16, "0"]
818 | },
819 | {
820 | "metric": {
821 | "__name__": "kube_pod_status_reason",
822 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
823 | "job": "kube-state-metrics",
824 | "namespace": "default",
825 | "pod": "cowclicker-7dbd496458-fvq9w",
826 | "reason": "NodeAffinity",
827 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
828 | },
829 | "value": [1667666608.16, "0"]
830 | },
831 | {
832 | "metric": {
833 | "__name__": "kube_pod_status_reason",
834 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
835 | "job": "kube-state-metrics",
836 | "namespace": "default",
837 | "pod": "cowclicker-7dbd496458-fvq9w",
838 | "reason": "NodeLost",
839 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
840 | },
841 | "value": [1667666608.16, "0"]
842 | },
843 | {
844 | "metric": {
845 | "__name__": "kube_pod_status_reason",
846 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
847 | "job": "kube-state-metrics",
848 | "namespace": "default",
849 | "pod": "cowclicker-7dbd496458-fvq9w",
850 | "reason": "Shutdown",
851 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
852 | },
853 | "value": [1667666608.16, "0"]
854 | },
855 | {
856 | "metric": {
857 | "__name__": "kube_pod_status_reason",
858 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
859 | "job": "kube-state-metrics",
860 | "namespace": "default",
861 | "pod": "cowclicker-7dbd496458-fvq9w",
862 | "reason": "UnexpectedAdmissionError",
863 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
864 | },
865 | "value": [1667666608.16, "0"]
866 | },
867 | {
868 | "metric": {
869 | "__name__": "kube_pod_status_reason",
870 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
871 | "job": "kube-state-metrics",
872 | "namespace": "default",
873 | "pod": "cowclicker-7dbd496458-rpznx",
874 | "reason": "Evicted",
875 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
876 | },
877 | "value": [1667666608.16, "0"]
878 | },
879 | {
880 | "metric": {
881 | "__name__": "kube_pod_status_reason",
882 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
883 | "job": "kube-state-metrics",
884 | "namespace": "default",
885 | "pod": "cowclicker-7dbd496458-rpznx",
886 | "reason": "NodeAffinity",
887 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
888 | },
889 | "value": [1667666608.16, "0"]
890 | },
891 | {
892 | "metric": {
893 | "__name__": "kube_pod_status_reason",
894 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
895 | "job": "kube-state-metrics",
896 | "namespace": "default",
897 | "pod": "cowclicker-7dbd496458-rpznx",
898 | "reason": "NodeLost",
899 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
900 | },
901 | "value": [1667666608.16, "0"]
902 | },
903 | {
904 | "metric": {
905 | "__name__": "kube_pod_status_reason",
906 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
907 | "job": "kube-state-metrics",
908 | "namespace": "default",
909 | "pod": "cowclicker-7dbd496458-rpznx",
910 | "reason": "Shutdown",
911 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
912 | },
913 | "value": [1667666608.16, "0"]
914 | },
915 | {
916 | "metric": {
917 | "__name__": "kube_pod_status_reason",
918 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
919 | "job": "kube-state-metrics",
920 | "namespace": "default",
921 | "pod": "cowclicker-7dbd496458-rpznx",
922 | "reason": "UnexpectedAdmissionError",
923 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
924 | },
925 | "value": [1667666608.16, "0"]
926 | },
927 | {
928 | "metric": {
929 | "__name__": "kube_pod_status_reason",
930 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
931 | "job": "kube-state-metrics",
932 | "namespace": "default",
933 | "pod": "cowclicker-97d4s",
934 | "reason": "Evicted",
935 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
936 | },
937 | "value": [1667666608.16, "0"]
938 | },
939 | {
940 | "metric": {
941 | "__name__": "kube_pod_status_reason",
942 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
943 | "job": "kube-state-metrics",
944 | "namespace": "default",
945 | "pod": "cowclicker-97d4s",
946 | "reason": "NodeAffinity",
947 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
948 | },
949 | "value": [1667666608.16, "0"]
950 | },
951 | {
952 | "metric": {
953 | "__name__": "kube_pod_status_reason",
954 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
955 | "job": "kube-state-metrics",
956 | "namespace": "default",
957 | "pod": "cowclicker-97d4s",
958 | "reason": "NodeLost",
959 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
960 | },
961 | "value": [1667666608.16, "0"]
962 | },
963 | {
964 | "metric": {
965 | "__name__": "kube_pod_status_reason",
966 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
967 | "job": "kube-state-metrics",
968 | "namespace": "default",
969 | "pod": "cowclicker-97d4s",
970 | "reason": "Shutdown",
971 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
972 | },
973 | "value": [1667666608.16, "0"]
974 | },
975 | {
976 | "metric": {
977 | "__name__": "kube_pod_status_reason",
978 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
979 | "job": "kube-state-metrics",
980 | "namespace": "default",
981 | "pod": "cowclicker-97d4s",
982 | "reason": "UnexpectedAdmissionError",
983 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
984 | },
985 | "value": [1667666608.16, "0"]
986 | },
987 | {
988 | "metric": {
989 | "__name__": "kube_pod_status_reason",
990 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
991 | "job": "kube-state-metrics",
992 | "namespace": "default",
993 | "pod": "cowclicker-k82f7",
994 | "reason": "Evicted",
995 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
996 | },
997 | "value": [1667666608.16, "0"]
998 | },
999 | {
1000 | "metric": {
1001 | "__name__": "kube_pod_status_reason",
1002 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1003 | "job": "kube-state-metrics",
1004 | "namespace": "default",
1005 | "pod": "cowclicker-k82f7",
1006 | "reason": "NodeAffinity",
1007 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
1008 | },
1009 | "value": [1667666608.16, "0"]
1010 | },
1011 | {
1012 | "metric": {
1013 | "__name__": "kube_pod_status_reason",
1014 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1015 | "job": "kube-state-metrics",
1016 | "namespace": "default",
1017 | "pod": "cowclicker-k82f7",
1018 | "reason": "NodeLost",
1019 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
1020 | },
1021 | "value": [1667666608.16, "0"]
1022 | },
1023 | {
1024 | "metric": {
1025 | "__name__": "kube_pod_status_reason",
1026 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1027 | "job": "kube-state-metrics",
1028 | "namespace": "default",
1029 | "pod": "cowclicker-k82f7",
1030 | "reason": "Shutdown",
1031 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
1032 | },
1033 | "value": [1667666608.16, "0"]
1034 | },
1035 | {
1036 | "metric": {
1037 | "__name__": "kube_pod_status_reason",
1038 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1039 | "job": "kube-state-metrics",
1040 | "namespace": "default",
1041 | "pod": "cowclicker-k82f7",
1042 | "reason": "UnexpectedAdmissionError",
1043 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
1044 | },
1045 | "value": [1667666608.16, "0"]
1046 | },
1047 | {
1048 | "metric": {
1049 | "__name__": "kube_pod_status_reason",
1050 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1051 | "job": "kube-state-metrics",
1052 | "namespace": "default",
1053 | "pod": "cowclicker-xlsmq",
1054 | "reason": "Evicted",
1055 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1056 | },
1057 | "value": [1667666608.16, "0"]
1058 | },
1059 | {
1060 | "metric": {
1061 | "__name__": "kube_pod_status_reason",
1062 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1063 | "job": "kube-state-metrics",
1064 | "namespace": "default",
1065 | "pod": "cowclicker-xlsmq",
1066 | "reason": "NodeAffinity",
1067 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1068 | },
1069 | "value": [1667666608.16, "0"]
1070 | },
1071 | {
1072 | "metric": {
1073 | "__name__": "kube_pod_status_reason",
1074 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1075 | "job": "kube-state-metrics",
1076 | "namespace": "default",
1077 | "pod": "cowclicker-xlsmq",
1078 | "reason": "NodeLost",
1079 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1080 | },
1081 | "value": [1667666608.16, "0"]
1082 | },
1083 | {
1084 | "metric": {
1085 | "__name__": "kube_pod_status_reason",
1086 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1087 | "job": "kube-state-metrics",
1088 | "namespace": "default",
1089 | "pod": "cowclicker-xlsmq",
1090 | "reason": "Shutdown",
1091 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1092 | },
1093 | "value": [1667666608.16, "0"]
1094 | },
1095 | {
1096 | "metric": {
1097 | "__name__": "kube_pod_status_reason",
1098 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1099 | "job": "kube-state-metrics",
1100 | "namespace": "default",
1101 | "pod": "cowclicker-xlsmq",
1102 | "reason": "UnexpectedAdmissionError",
1103 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1104 | },
1105 | "value": [1667666608.16, "0"]
1106 | },
1107 | {
1108 | "metric": {
1109 | "__name__": "kube_pod_status_reason",
1110 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1111 | "job": "kube-state-metrics",
1112 | "namespace": "kube-system",
1113 | "pod": "coredns-565d847f94-g2m7t",
1114 | "reason": "Evicted",
1115 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1116 | },
1117 | "value": [1667666608.16, "0"]
1118 | },
1119 | {
1120 | "metric": {
1121 | "__name__": "kube_pod_status_reason",
1122 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1123 | "job": "kube-state-metrics",
1124 | "namespace": "kube-system",
1125 | "pod": "coredns-565d847f94-g2m7t",
1126 | "reason": "NodeAffinity",
1127 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1128 | },
1129 | "value": [1667666608.16, "0"]
1130 | },
1131 | {
1132 | "metric": {
1133 | "__name__": "kube_pod_status_reason",
1134 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1135 | "job": "kube-state-metrics",
1136 | "namespace": "kube-system",
1137 | "pod": "coredns-565d847f94-g2m7t",
1138 | "reason": "NodeLost",
1139 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1140 | },
1141 | "value": [1667666608.16, "0"]
1142 | },
1143 | {
1144 | "metric": {
1145 | "__name__": "kube_pod_status_reason",
1146 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1147 | "job": "kube-state-metrics",
1148 | "namespace": "kube-system",
1149 | "pod": "coredns-565d847f94-g2m7t",
1150 | "reason": "Shutdown",
1151 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1152 | },
1153 | "value": [1667666608.16, "0"]
1154 | },
1155 | {
1156 | "metric": {
1157 | "__name__": "kube_pod_status_reason",
1158 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1159 | "job": "kube-state-metrics",
1160 | "namespace": "kube-system",
1161 | "pod": "coredns-565d847f94-g2m7t",
1162 | "reason": "UnexpectedAdmissionError",
1163 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1164 | },
1165 | "value": [1667666608.16, "0"]
1166 | },
1167 | {
1168 | "metric": {
1169 | "__name__": "kube_pod_status_reason",
1170 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1171 | "job": "kube-state-metrics",
1172 | "namespace": "kube-system",
1173 | "pod": "etcd-minikube",
1174 | "reason": "Evicted",
1175 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1176 | },
1177 | "value": [1667666608.16, "0"]
1178 | },
1179 | {
1180 | "metric": {
1181 | "__name__": "kube_pod_status_reason",
1182 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1183 | "job": "kube-state-metrics",
1184 | "namespace": "kube-system",
1185 | "pod": "etcd-minikube",
1186 | "reason": "NodeAffinity",
1187 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1188 | },
1189 | "value": [1667666608.16, "0"]
1190 | },
1191 | {
1192 | "metric": {
1193 | "__name__": "kube_pod_status_reason",
1194 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1195 | "job": "kube-state-metrics",
1196 | "namespace": "kube-system",
1197 | "pod": "etcd-minikube",
1198 | "reason": "NodeLost",
1199 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1200 | },
1201 | "value": [1667666608.16, "0"]
1202 | },
1203 | {
1204 | "metric": {
1205 | "__name__": "kube_pod_status_reason",
1206 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1207 | "job": "kube-state-metrics",
1208 | "namespace": "kube-system",
1209 | "pod": "etcd-minikube",
1210 | "reason": "Shutdown",
1211 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1212 | },
1213 | "value": [1667666608.16, "0"]
1214 | },
1215 | {
1216 | "metric": {
1217 | "__name__": "kube_pod_status_reason",
1218 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1219 | "job": "kube-state-metrics",
1220 | "namespace": "kube-system",
1221 | "pod": "etcd-minikube",
1222 | "reason": "UnexpectedAdmissionError",
1223 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1224 | },
1225 | "value": [1667666608.16, "0"]
1226 | },
1227 | {
1228 | "metric": {
1229 | "__name__": "kube_pod_status_reason",
1230 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1231 | "job": "kube-state-metrics",
1232 | "namespace": "kube-system",
1233 | "pod": "kube-apiserver-minikube",
1234 | "reason": "Evicted",
1235 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
1236 | },
1237 | "value": [1667666608.16, "0"]
1238 | },
1239 | {
1240 | "metric": {
1241 | "__name__": "kube_pod_status_reason",
1242 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1243 | "job": "kube-state-metrics",
1244 | "namespace": "kube-system",
1245 | "pod": "kube-apiserver-minikube",
1246 | "reason": "NodeAffinity",
1247 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
1248 | },
1249 | "value": [1667666608.16, "0"]
1250 | },
1251 | {
1252 | "metric": {
1253 | "__name__": "kube_pod_status_reason",
1254 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1255 | "job": "kube-state-metrics",
1256 | "namespace": "kube-system",
1257 | "pod": "kube-apiserver-minikube",
1258 | "reason": "NodeLost",
1259 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
1260 | },
1261 | "value": [1667666608.16, "0"]
1262 | },
1263 | {
1264 | "metric": {
1265 | "__name__": "kube_pod_status_reason",
1266 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1267 | "job": "kube-state-metrics",
1268 | "namespace": "kube-system",
1269 | "pod": "kube-apiserver-minikube",
1270 | "reason": "Shutdown",
1271 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
1272 | },
1273 | "value": [1667666608.16, "0"]
1274 | },
1275 | {
1276 | "metric": {
1277 | "__name__": "kube_pod_status_reason",
1278 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1279 | "job": "kube-state-metrics",
1280 | "namespace": "kube-system",
1281 | "pod": "kube-apiserver-minikube",
1282 | "reason": "UnexpectedAdmissionError",
1283 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
1284 | },
1285 | "value": [1667666608.16, "0"]
1286 | },
1287 | {
1288 | "metric": {
1289 | "__name__": "kube_pod_status_reason",
1290 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1291 | "job": "kube-state-metrics",
1292 | "namespace": "kube-system",
1293 | "pod": "kube-controller-manager-minikube",
1294 | "reason": "Evicted",
1295 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
1296 | },
1297 | "value": [1667666608.16, "0"]
1298 | },
1299 | {
1300 | "metric": {
1301 | "__name__": "kube_pod_status_reason",
1302 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1303 | "job": "kube-state-metrics",
1304 | "namespace": "kube-system",
1305 | "pod": "kube-controller-manager-minikube",
1306 | "reason": "NodeAffinity",
1307 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
1308 | },
1309 | "value": [1667666608.16, "0"]
1310 | },
1311 | {
1312 | "metric": {
1313 | "__name__": "kube_pod_status_reason",
1314 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1315 | "job": "kube-state-metrics",
1316 | "namespace": "kube-system",
1317 | "pod": "kube-controller-manager-minikube",
1318 | "reason": "NodeLost",
1319 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
1320 | },
1321 | "value": [1667666608.16, "0"]
1322 | },
1323 | {
1324 | "metric": {
1325 | "__name__": "kube_pod_status_reason",
1326 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1327 | "job": "kube-state-metrics",
1328 | "namespace": "kube-system",
1329 | "pod": "kube-controller-manager-minikube",
1330 | "reason": "Shutdown",
1331 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
1332 | },
1333 | "value": [1667666608.16, "0"]
1334 | },
1335 | {
1336 | "metric": {
1337 | "__name__": "kube_pod_status_reason",
1338 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1339 | "job": "kube-state-metrics",
1340 | "namespace": "kube-system",
1341 | "pod": "kube-controller-manager-minikube",
1342 | "reason": "UnexpectedAdmissionError",
1343 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
1344 | },
1345 | "value": [1667666608.16, "0"]
1346 | },
1347 | {
1348 | "metric": {
1349 | "__name__": "kube_pod_status_reason",
1350 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1351 | "job": "kube-state-metrics",
1352 | "namespace": "kube-system",
1353 | "pod": "kube-proxy-hmwlw",
1354 | "reason": "Evicted",
1355 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
1356 | },
1357 | "value": [1667666608.16, "0"]
1358 | },
1359 | {
1360 | "metric": {
1361 | "__name__": "kube_pod_status_reason",
1362 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1363 | "job": "kube-state-metrics",
1364 | "namespace": "kube-system",
1365 | "pod": "kube-proxy-hmwlw",
1366 | "reason": "NodeAffinity",
1367 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
1368 | },
1369 | "value": [1667666608.16, "0"]
1370 | },
1371 | {
1372 | "metric": {
1373 | "__name__": "kube_pod_status_reason",
1374 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1375 | "job": "kube-state-metrics",
1376 | "namespace": "kube-system",
1377 | "pod": "kube-proxy-hmwlw",
1378 | "reason": "NodeLost",
1379 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
1380 | },
1381 | "value": [1667666608.16, "0"]
1382 | },
1383 | {
1384 | "metric": {
1385 | "__name__": "kube_pod_status_reason",
1386 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1387 | "job": "kube-state-metrics",
1388 | "namespace": "kube-system",
1389 | "pod": "kube-proxy-hmwlw",
1390 | "reason": "Shutdown",
1391 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
1392 | },
1393 | "value": [1667666608.16, "0"]
1394 | },
1395 | {
1396 | "metric": {
1397 | "__name__": "kube_pod_status_reason",
1398 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1399 | "job": "kube-state-metrics",
1400 | "namespace": "kube-system",
1401 | "pod": "kube-proxy-hmwlw",
1402 | "reason": "UnexpectedAdmissionError",
1403 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
1404 | },
1405 | "value": [1667666608.16, "0"]
1406 | },
1407 | {
1408 | "metric": {
1409 | "__name__": "kube_pod_status_reason",
1410 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1411 | "job": "kube-state-metrics",
1412 | "namespace": "kube-system",
1413 | "pod": "kube-scheduler-minikube",
1414 | "reason": "Evicted",
1415 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
1416 | },
1417 | "value": [1667666608.16, "0"]
1418 | },
1419 | {
1420 | "metric": {
1421 | "__name__": "kube_pod_status_reason",
1422 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1423 | "job": "kube-state-metrics",
1424 | "namespace": "kube-system",
1425 | "pod": "kube-scheduler-minikube",
1426 | "reason": "NodeAffinity",
1427 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
1428 | },
1429 | "value": [1667666608.16, "0"]
1430 | },
1431 | {
1432 | "metric": {
1433 | "__name__": "kube_pod_status_reason",
1434 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1435 | "job": "kube-state-metrics",
1436 | "namespace": "kube-system",
1437 | "pod": "kube-scheduler-minikube",
1438 | "reason": "NodeLost",
1439 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
1440 | },
1441 | "value": [1667666608.16, "0"]
1442 | },
1443 | {
1444 | "metric": {
1445 | "__name__": "kube_pod_status_reason",
1446 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1447 | "job": "kube-state-metrics",
1448 | "namespace": "kube-system",
1449 | "pod": "kube-scheduler-minikube",
1450 | "reason": "Shutdown",
1451 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
1452 | },
1453 | "value": [1667666608.16, "0"]
1454 | },
1455 | {
1456 | "metric": {
1457 | "__name__": "kube_pod_status_reason",
1458 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1459 | "job": "kube-state-metrics",
1460 | "namespace": "kube-system",
1461 | "pod": "kube-scheduler-minikube",
1462 | "reason": "UnexpectedAdmissionError",
1463 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
1464 | },
1465 | "value": [1667666608.16, "0"]
1466 | },
1467 | {
1468 | "metric": {
1469 | "__name__": "kube_pod_status_reason",
1470 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1471 | "job": "kube-state-metrics",
1472 | "namespace": "kube-system",
1473 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
1474 | "reason": "Evicted",
1475 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
1476 | },
1477 | "value": [1667666608.16, "0"]
1478 | },
1479 | {
1480 | "metric": {
1481 | "__name__": "kube_pod_status_reason",
1482 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1483 | "job": "kube-state-metrics",
1484 | "namespace": "kube-system",
1485 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
1486 | "reason": "NodeAffinity",
1487 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
1488 | },
1489 | "value": [1667666608.16, "0"]
1490 | },
1491 | {
1492 | "metric": {
1493 | "__name__": "kube_pod_status_reason",
1494 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1495 | "job": "kube-state-metrics",
1496 | "namespace": "kube-system",
1497 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
1498 | "reason": "NodeLost",
1499 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
1500 | },
1501 | "value": [1667666608.16, "0"]
1502 | },
1503 | {
1504 | "metric": {
1505 | "__name__": "kube_pod_status_reason",
1506 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1507 | "job": "kube-state-metrics",
1508 | "namespace": "kube-system",
1509 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
1510 | "reason": "Shutdown",
1511 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
1512 | },
1513 | "value": [1667666608.16, "0"]
1514 | },
1515 | {
1516 | "metric": {
1517 | "__name__": "kube_pod_status_reason",
1518 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1519 | "job": "kube-state-metrics",
1520 | "namespace": "kube-system",
1521 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
1522 | "reason": "UnexpectedAdmissionError",
1523 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
1524 | },
1525 | "value": [1667666608.16, "0"]
1526 | },
1527 | {
1528 | "metric": {
1529 | "__name__": "kube_pod_status_reason",
1530 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1531 | "job": "kube-state-metrics",
1532 | "namespace": "kube-system",
1533 | "pod": "metrics-server-769cd898cd-wchcp",
1534 | "reason": "Evicted",
1535 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
1536 | },
1537 | "value": [1667666608.16, "0"]
1538 | },
1539 | {
1540 | "metric": {
1541 | "__name__": "kube_pod_status_reason",
1542 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1543 | "job": "kube-state-metrics",
1544 | "namespace": "kube-system",
1545 | "pod": "metrics-server-769cd898cd-wchcp",
1546 | "reason": "NodeAffinity",
1547 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
1548 | },
1549 | "value": [1667666608.16, "0"]
1550 | },
1551 | {
1552 | "metric": {
1553 | "__name__": "kube_pod_status_reason",
1554 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1555 | "job": "kube-state-metrics",
1556 | "namespace": "kube-system",
1557 | "pod": "metrics-server-769cd898cd-wchcp",
1558 | "reason": "NodeLost",
1559 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
1560 | },
1561 | "value": [1667666608.16, "0"]
1562 | },
1563 | {
1564 | "metric": {
1565 | "__name__": "kube_pod_status_reason",
1566 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1567 | "job": "kube-state-metrics",
1568 | "namespace": "kube-system",
1569 | "pod": "metrics-server-769cd898cd-wchcp",
1570 | "reason": "Shutdown",
1571 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
1572 | },
1573 | "value": [1667666608.16, "0"]
1574 | },
1575 | {
1576 | "metric": {
1577 | "__name__": "kube_pod_status_reason",
1578 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1579 | "job": "kube-state-metrics",
1580 | "namespace": "kube-system",
1581 | "pod": "metrics-server-769cd898cd-wchcp",
1582 | "reason": "UnexpectedAdmissionError",
1583 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
1584 | },
1585 | "value": [1667666608.16, "0"]
1586 | },
1587 | {
1588 | "metric": {
1589 | "__name__": "kube_pod_status_reason",
1590 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1591 | "job": "kube-state-metrics",
1592 | "namespace": "kube-system",
1593 | "pod": "storage-provisioner",
1594 | "reason": "Evicted",
1595 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
1596 | },
1597 | "value": [1667666608.16, "0"]
1598 | },
1599 | {
1600 | "metric": {
1601 | "__name__": "kube_pod_status_reason",
1602 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1603 | "job": "kube-state-metrics",
1604 | "namespace": "kube-system",
1605 | "pod": "storage-provisioner",
1606 | "reason": "NodeAffinity",
1607 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
1608 | },
1609 | "value": [1667666608.16, "0"]
1610 | },
1611 | {
1612 | "metric": {
1613 | "__name__": "kube_pod_status_reason",
1614 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1615 | "job": "kube-state-metrics",
1616 | "namespace": "kube-system",
1617 | "pod": "storage-provisioner",
1618 | "reason": "NodeLost",
1619 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
1620 | },
1621 | "value": [1667666608.16, "0"]
1622 | },
1623 | {
1624 | "metric": {
1625 | "__name__": "kube_pod_status_reason",
1626 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1627 | "job": "kube-state-metrics",
1628 | "namespace": "kube-system",
1629 | "pod": "storage-provisioner",
1630 | "reason": "Shutdown",
1631 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
1632 | },
1633 | "value": [1667666608.16, "0"]
1634 | },
1635 | {
1636 | "metric": {
1637 | "__name__": "kube_pod_status_reason",
1638 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1639 | "job": "kube-state-metrics",
1640 | "namespace": "kube-system",
1641 | "pod": "storage-provisioner",
1642 | "reason": "UnexpectedAdmissionError",
1643 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
1644 | },
1645 | "value": [1667666608.16, "0"]
1646 | },
1647 | {
1648 | "metric": {
1649 | "__name__": "kube_pod_status_reason",
1650 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1651 | "job": "kube-state-metrics",
1652 | "namespace": "kubernetes-dashboard",
1653 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
1654 | "reason": "Evicted",
1655 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
1656 | },
1657 | "value": [1667666608.16, "0"]
1658 | },
1659 | {
1660 | "metric": {
1661 | "__name__": "kube_pod_status_reason",
1662 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1663 | "job": "kube-state-metrics",
1664 | "namespace": "kubernetes-dashboard",
1665 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
1666 | "reason": "NodeAffinity",
1667 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
1668 | },
1669 | "value": [1667666608.16, "0"]
1670 | },
1671 | {
1672 | "metric": {
1673 | "__name__": "kube_pod_status_reason",
1674 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1675 | "job": "kube-state-metrics",
1676 | "namespace": "kubernetes-dashboard",
1677 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
1678 | "reason": "NodeLost",
1679 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
1680 | },
1681 | "value": [1667666608.16, "0"]
1682 | },
1683 | {
1684 | "metric": {
1685 | "__name__": "kube_pod_status_reason",
1686 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1687 | "job": "kube-state-metrics",
1688 | "namespace": "kubernetes-dashboard",
1689 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
1690 | "reason": "Shutdown",
1691 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
1692 | },
1693 | "value": [1667666608.16, "0"]
1694 | },
1695 | {
1696 | "metric": {
1697 | "__name__": "kube_pod_status_reason",
1698 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1699 | "job": "kube-state-metrics",
1700 | "namespace": "kubernetes-dashboard",
1701 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
1702 | "reason": "UnexpectedAdmissionError",
1703 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
1704 | },
1705 | "value": [1667666608.16, "0"]
1706 | },
1707 | {
1708 | "metric": {
1709 | "__name__": "kube_pod_status_reason",
1710 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1711 | "job": "kube-state-metrics",
1712 | "namespace": "kubernetes-dashboard",
1713 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
1714 | "reason": "Evicted",
1715 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
1716 | },
1717 | "value": [1667666608.16, "0"]
1718 | },
1719 | {
1720 | "metric": {
1721 | "__name__": "kube_pod_status_reason",
1722 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1723 | "job": "kube-state-metrics",
1724 | "namespace": "kubernetes-dashboard",
1725 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
1726 | "reason": "NodeAffinity",
1727 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
1728 | },
1729 | "value": [1667666608.16, "0"]
1730 | },
1731 | {
1732 | "metric": {
1733 | "__name__": "kube_pod_status_reason",
1734 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1735 | "job": "kube-state-metrics",
1736 | "namespace": "kubernetes-dashboard",
1737 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
1738 | "reason": "NodeLost",
1739 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
1740 | },
1741 | "value": [1667666608.16, "0"]
1742 | },
1743 | {
1744 | "metric": {
1745 | "__name__": "kube_pod_status_reason",
1746 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1747 | "job": "kube-state-metrics",
1748 | "namespace": "kubernetes-dashboard",
1749 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
1750 | "reason": "Shutdown",
1751 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
1752 | },
1753 | "value": [1667666608.16, "0"]
1754 | },
1755 | {
1756 | "metric": {
1757 | "__name__": "kube_pod_status_reason",
1758 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1759 | "job": "kube-state-metrics",
1760 | "namespace": "kubernetes-dashboard",
1761 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
1762 | "reason": "UnexpectedAdmissionError",
1763 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
1764 | },
1765 | "value": [1667666608.16, "0"]
1766 | },
1767 | {
1768 | "metric": {
1769 | "__name__": "kube_pod_status_reason",
1770 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1771 | "job": "kube-state-metrics",
1772 | "namespace": "monitoring",
1773 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
1774 | "reason": "Evicted",
1775 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
1776 | },
1777 | "value": [1667666608.16, "0"]
1778 | },
1779 | {
1780 | "metric": {
1781 | "__name__": "kube_pod_status_reason",
1782 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1783 | "job": "kube-state-metrics",
1784 | "namespace": "monitoring",
1785 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
1786 | "reason": "NodeAffinity",
1787 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
1788 | },
1789 | "value": [1667666608.16, "0"]
1790 | },
1791 | {
1792 | "metric": {
1793 | "__name__": "kube_pod_status_reason",
1794 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1795 | "job": "kube-state-metrics",
1796 | "namespace": "monitoring",
1797 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
1798 | "reason": "NodeLost",
1799 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
1800 | },
1801 | "value": [1667666608.16, "0"]
1802 | },
1803 | {
1804 | "metric": {
1805 | "__name__": "kube_pod_status_reason",
1806 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1807 | "job": "kube-state-metrics",
1808 | "namespace": "monitoring",
1809 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
1810 | "reason": "Shutdown",
1811 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
1812 | },
1813 | "value": [1667666608.16, "0"]
1814 | },
1815 | {
1816 | "metric": {
1817 | "__name__": "kube_pod_status_reason",
1818 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1819 | "job": "kube-state-metrics",
1820 | "namespace": "monitoring",
1821 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
1822 | "reason": "UnexpectedAdmissionError",
1823 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
1824 | },
1825 | "value": [1667666608.16, "0"]
1826 | }
1827 | ]
1828 | }
1829 | },
1830 | "(sum(kube_pod_container_resource_limits{resource='cpu'}) - sum(kube_node_status_capacity{resource='cpu'}))": {
1831 | "status": "success",
1832 | "data": {
1833 | "resultType": "vector",
1834 | "result": [
1835 | {
1836 | "metric": {},
1837 | "value": [1667666812.015, "-7"]
1838 | }
1839 | ]
1840 | }
1841 | },
1842 | "sum(kube_pod_container_resource_limits{resource='memory'}) - sum(kube_node_status_capacity{resource='memory'})": {
1843 | "status": "success",
1844 | "data": {
1845 | "resultType": "vector",
1846 | "result": [
1847 | {
1848 | "metric": {},
1849 | "value": [1667666857.624, "-6989185024"]
1850 | }
1851 | ]
1852 | }
1853 | },
1854 | "min_over_time(sum by (namespace, pod) (kube_pod_status_phase{phase=~'Pending|Unknown|Failed'})[15m:1m]) > 0": {
1855 | "status": "success",
1856 | "data": {
1857 | "resultType": "vector",
1858 | "result": [
1859 | {
1860 | "metric": {
1861 | "namespace": "default",
1862 | "pod": "cowclicker-xlsmq"
1863 | },
1864 | "value": [1667667001.836, "1"]
1865 | },
1866 | {
1867 | "metric": {
1868 | "namespace": "default",
1869 | "pod": "cowclicker-97d4s"
1870 | },
1871 | "value": [1667667001.836, "1"]
1872 | },
1873 | {
1874 | "metric": {
1875 | "namespace": "default",
1876 | "pod": "cowclicker-k82f7"
1877 | },
1878 | "value": [1667667001.836, "1"]
1879 | }
1880 | ]
1881 | }
1882 | },
1883 | "(kube_pod_start_time)": {
1884 | "status": "success",
1885 | "data": {
1886 | "resultType": "vector",
1887 | "result": [
1888 | {
1889 | "metric": {
1890 | "__name__": "kube_pod_start_time",
1891 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1892 | "job": "kube-state-metrics",
1893 | "namespace": "default",
1894 | "pod": "cowclicker-7dbd496458-dmscq",
1895 | "uid": "09269111-81db-462a-bc2f-e42c355b7153"
1896 | },
1897 | "value": [
1898 | 1667674455.495,
1899 | "1666651186"
1900 | ]
1901 | },
1902 | {
1903 | "metric": {
1904 | "__name__": "kube_pod_start_time",
1905 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1906 | "job": "kube-state-metrics",
1907 | "namespace": "default",
1908 | "pod": "cowclicker-7dbd496458-fvq9w",
1909 | "uid": "9d970f48-f193-4b1a-b2b7-e1b584d6604d"
1910 | },
1911 | "value": [
1912 | 1667674455.495,
1913 | "1666651181"
1914 | ]
1915 | },
1916 | {
1917 | "metric": {
1918 | "__name__": "kube_pod_start_time",
1919 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1920 | "job": "kube-state-metrics",
1921 | "namespace": "default",
1922 | "pod": "cowclicker-7dbd496458-rpznx",
1923 | "uid": "01a73c03-993c-4cf1-96e5-e76974ac2ca0"
1924 | },
1925 | "value": [
1926 | 1667674455.495,
1927 | "1666651178"
1928 | ]
1929 | },
1930 | {
1931 | "metric": {
1932 | "__name__": "kube_pod_start_time",
1933 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1934 | "job": "kube-state-metrics",
1935 | "namespace": "default",
1936 | "pod": "cowclicker-97d4s",
1937 | "uid": "db0994e8-f6dd-43ac-a2aa-a0b3e4a71fa8"
1938 | },
1939 | "value": [
1940 | 1667674455.495,
1941 | "1667266957"
1942 | ]
1943 | },
1944 | {
1945 | "metric": {
1946 | "__name__": "kube_pod_start_time",
1947 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1948 | "job": "kube-state-metrics",
1949 | "namespace": "default",
1950 | "pod": "cowclicker-k82f7",
1951 | "uid": "d314f9fc-009b-4bf3-aced-493cce8920ff"
1952 | },
1953 | "value": [
1954 | 1667674455.495,
1955 | "1667266957"
1956 | ]
1957 | },
1958 | {
1959 | "metric": {
1960 | "__name__": "kube_pod_start_time",
1961 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1962 | "job": "kube-state-metrics",
1963 | "namespace": "default",
1964 | "pod": "cowclicker-xlsmq",
1965 | "uid": "84fc4668-591d-4ba0-9c62-8419bfeab5a0"
1966 | },
1967 | "value": [
1968 | 1667674455.495,
1969 | "1667266957"
1970 | ]
1971 | },
1972 | {
1973 | "metric": {
1974 | "__name__": "kube_pod_start_time",
1975 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1976 | "job": "kube-state-metrics",
1977 | "namespace": "kube-system",
1978 | "pod": "coredns-565d847f94-g2m7t",
1979 | "uid": "2907549c-33cd-4a3e-90b6-a16c39547586"
1980 | },
1981 | "value": [
1982 | 1667674455.495,
1983 | "1666312099"
1984 | ]
1985 | },
1986 | {
1987 | "metric": {
1988 | "__name__": "kube_pod_start_time",
1989 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
1990 | "job": "kube-state-metrics",
1991 | "namespace": "kube-system",
1992 | "pod": "etcd-minikube",
1993 | "uid": "cdfeba8a-a60f-4b25-86b9-de5eb1e106ec"
1994 | },
1995 | "value": [
1996 | 1667674455.495,
1997 | "1667606098"
1998 | ]
1999 | },
2000 | {
2001 | "metric": {
2002 | "__name__": "kube_pod_start_time",
2003 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2004 | "job": "kube-state-metrics",
2005 | "namespace": "kube-system",
2006 | "pod": "kube-apiserver-minikube",
2007 | "uid": "106b7ff2-5823-4ca0-a1ed-391e84752486"
2008 | },
2009 | "value": [
2010 | 1667674455.495,
2011 | "1667665254"
2012 | ]
2013 | },
2014 | {
2015 | "metric": {
2016 | "__name__": "kube_pod_start_time",
2017 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2018 | "job": "kube-state-metrics",
2019 | "namespace": "kube-system",
2020 | "pod": "kube-controller-manager-minikube",
2021 | "uid": "1743d56c-880b-47d9-8242-4dd3fca10867"
2022 | },
2023 | "value": [
2024 | 1667674455.495,
2025 | "1667665254"
2026 | ]
2027 | },
2028 | {
2029 | "metric": {
2030 | "__name__": "kube_pod_start_time",
2031 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2032 | "job": "kube-state-metrics",
2033 | "namespace": "kube-system",
2034 | "pod": "kube-proxy-hmwlw",
2035 | "uid": "bd789cec-581e-4f34-90ae-a0fce69fd225"
2036 | },
2037 | "value": [
2038 | 1667674455.495,
2039 | "1666312099"
2040 | ]
2041 | },
2042 | {
2043 | "metric": {
2044 | "__name__": "kube_pod_start_time",
2045 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2046 | "job": "kube-state-metrics",
2047 | "namespace": "kube-system",
2048 | "pod": "kube-scheduler-minikube",
2049 | "uid": "1cf660bc-b784-41a4-af88-5cf7b25a1475"
2050 | },
2051 | "value": [
2052 | 1667674455.495,
2053 | "1667604769"
2054 | ]
2055 | },
2056 | {
2057 | "metric": {
2058 | "__name__": "kube_pod_start_time",
2059 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2060 | "job": "kube-state-metrics",
2061 | "namespace": "kube-system",
2062 | "pod": "kube-state-metrics-5897f6cf77-x98z6",
2063 | "uid": "6ce32cc6-4354-431d-ba53-996f9be4849d"
2064 | },
2065 | "value": [
2066 | 1667674455.495,
2067 | "1666636104"
2068 | ]
2069 | },
2070 | {
2071 | "metric": {
2072 | "__name__": "kube_pod_start_time",
2073 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2074 | "job": "kube-state-metrics",
2075 | "namespace": "kube-system",
2076 | "pod": "metrics-server-769cd898cd-wchcp",
2077 | "uid": "51a8d048-c425-4bf6-9ed3-648c3ece793e"
2078 | },
2079 | "value": [
2080 | 1667674455.495,
2081 | "1666480244"
2082 | ]
2083 | },
2084 | {
2085 | "metric": {
2086 | "__name__": "kube_pod_start_time",
2087 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2088 | "job": "kube-state-metrics",
2089 | "namespace": "kube-system",
2090 | "pod": "storage-provisioner",
2091 | "uid": "1a37b3bd-b946-424c-9219-b764a09ee0b1"
2092 | },
2093 | "value": [
2094 | 1667674455.495,
2095 | "1666312098"
2096 | ]
2097 | },
2098 | {
2099 | "metric": {
2100 | "__name__": "kube_pod_start_time",
2101 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2102 | "job": "kube-state-metrics",
2103 | "namespace": "kubernetes-dashboard",
2104 | "pod": "dashboard-metrics-scraper-b74747df5-x8z7k",
2105 | "uid": "9e28954b-9cba-48f0-90ab-808d52ebbef1"
2106 | },
2107 | "value": [
2108 | 1667674455.495,
2109 | "1666312207"
2110 | ]
2111 | },
2112 | {
2113 | "metric": {
2114 | "__name__": "kube_pod_start_time",
2115 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2116 | "job": "kube-state-metrics",
2117 | "namespace": "kubernetes-dashboard",
2118 | "pod": "kubernetes-dashboard-57bbdc5f89-4hrl7",
2119 | "uid": "54223b8b-c0c7-49b9-98f3-e63789021c6d"
2120 | },
2121 | "value": [
2122 | 1667674455.495,
2123 | "1666312207"
2124 | ]
2125 | },
2126 | {
2127 | "metric": {
2128 | "__name__": "kube_pod_start_time",
2129 | "instance": "kube-state-metrics.kube-system.svc.cluster.local:8080",
2130 | "job": "kube-state-metrics",
2131 | "namespace": "monitoring",
2132 | "pod": "prometheus-deployment-6c8c5bb6cc-rjvg4",
2133 | "uid": "c8804b27-a08e-4dc4-b704-700a58ac671f"
2134 | },
2135 | "value": [
2136 | 1667674455.495,
2137 | "1667243217"
2138 | ]
2139 | }
2140 | ]
2141 | }
2142 | }
2143 | }
2144 |
--------------------------------------------------------------------------------