mirror of
https://github.com/skooner-k8s/skooner.git
synced 2026-03-31 06:57:59 +00:00
Get data successfully
This commit is contained in:
@@ -62,6 +62,10 @@ export default class Menu extends Base<MenuProps, MenuStates> {
|
||||
{canView(rules, api.namespace) && (
|
||||
<MenuItem title='Namespaces' path='namespace' resource='Namespace' onClick={onClick} />
|
||||
)}
|
||||
|
||||
{canView(rules, api.namespace) && (
|
||||
<MenuItem title='PrometheusGraph' path='prometheusgraph' resource='Node' onClick={onClick} />
|
||||
)}
|
||||
</Group>
|
||||
|
||||
{/* Workloads */}
|
||||
|
||||
@@ -26,6 +26,7 @@ import PersistentVolumeClaims from './views/persistentVolumeClaims';
|
||||
import PersistentVolumes from './views/persistentVolumes';
|
||||
import Pod from './views/pod';
|
||||
import Pods from './views/pods';
|
||||
import PrometheusGraph from './views/prometheusgraph';
|
||||
import ReplicaSet from './views/replicaSet';
|
||||
import ReplicaSets from './views/replicaSets';
|
||||
import Role from './views/role';
|
||||
@@ -108,6 +109,8 @@ registerRoute('storageclass', () => <StorageClasses />);
|
||||
// @ts-ignore
|
||||
registerRoute('storageclass/:name', params => <StorageClass {...params} />);
|
||||
registerRoute('workload', () => <Workloads />);
|
||||
|
||||
registerRoute('prometheusgraph', () => <PrometheusGraph />);
|
||||
// @ts-ignore
|
||||
registerRoute('workload/cronjob/:namespace/:name', params => <CronJob {...params} />);
|
||||
// @ts-ignore
|
||||
|
||||
51
client/src/views/prometheusgraph.tsx
Normal file
51
client/src/views/prometheusgraph.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import React from 'react';
|
||||
import Base from '../components/base';
|
||||
|
||||
|
||||
const {hostname} = window.location;
|
||||
const isDev = process.env.NODE_ENV !== 'production';
|
||||
const BASE_HTTP_URL = isDev && hostname === 'localhost' ? 'http://localhost:50642' : '';
|
||||
const GRAPH_QUERIES = [
|
||||
'instance:node_cpu:ratio',
|
||||
];
|
||||
|
||||
|
||||
type Props = {
|
||||
|
||||
}
|
||||
|
||||
type State = {
|
||||
metric: string;
|
||||
result: string;
|
||||
values: Array<Array<string>>;
|
||||
}
|
||||
|
||||
export default class PrometheusGraph extends Base<Props, State> {
|
||||
componentDidMount() {
|
||||
// TODO: use proxy if ready
|
||||
const url = `${BASE_HTTP_URL}/api/v1/query_range`;
|
||||
for (let i = 0; i < GRAPH_QUERIES.length; i++) {
|
||||
const query = GRAPH_QUERIES[i];
|
||||
const params = {
|
||||
query,
|
||||
start: (Date.now() / 1000).toString(),
|
||||
end: (Date.now() / 1000 + 60 * 60).toString(), // One hour range
|
||||
step: '1',
|
||||
};
|
||||
fetch(`${url}?${new URLSearchParams(params).toString()}`).then((result) => {
|
||||
console.log(result);
|
||||
// @ts-ignore
|
||||
this.setState(prevState => ({
|
||||
...prevState,
|
||||
result,
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
return <div>
|
||||
<div>{this.state?.result && (this.state?.result)}</div>
|
||||
</div>;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user