blob: 448e7a29db19f70fd33316472486e81bb16705bb [file]
import { Commit, ActionTree } from 'vuex';
import { getEndpointInfo, getApplicationInfo, getServerInfo, getServerDetail } from '@/api/dashboard';
import * as types from '../mutation-types';
interface SlowTrace {
key: String;
duration: Number;
isError: Boolean;
start: String;
traceIds: String[];
operationNames: String[];
}
interface Endpoint{
key: String;
applicationName: String;
applicationOd: String;
label: String;
}
interface SlowService {
endpoint: Endpoint;
value: Number;
}
interface ApplicationThroughput {
key: Number;
label: String;
value: Number;
}
interface Memory {
heap: Number[];
maxHeap: Number[];
maxNoHeap: Number[];
noHeap: Number[];
}
interface Gc {
oldGCTime: Number[];
oldGCCount: Number[];
youngGCCount: Number[];
youngGCTime: Number[];
}
interface P {
p99: Number[];
p95: Number[];
p90: Number[];
p75: Number[];
p50: Number[];
}
export interface State {
throughput: Number[];
responseTime: Number[];
p: P;
endpointP: P;
slowTrace: SlowTrace[];
slowService: SlowService[];
applicationThroughput: ApplicationThroughput[];
sla: Number[];
cpu: Number[];
gc: Gc;
memory: Memory;
serverResponseTime: Number[];
serverThroughput: Number[];
}
const initState: State = {
throughput: [],
responseTime: [],
p: {
p99: [],
p95: [],
p90: [],
p75: [],
p50: [],
},
endpointP: {
p99: [],
p95: [],
p90: [],
p75: [],
p50: [],
},
sla: [],
slowTrace:[],
slowService:[],
applicationThroughput:[],
cpu: [],
gc: {
oldGCTime: [],
oldGCCount: [],
youngGCCount: [],
youngGCTime: [],
},
memory: {
heap: [],
maxHeap: [],
maxNoHeap: [],
noHeap: [],
},
serverResponseTime: [],
serverThroughput: [],
};
// getters
const getters = {
// checkoutStatus: (state: State) => state.application,
};
// mutations
const mutations = {
[types.SET_ENDPOINT_INFO](state: State, data: any) {
state.throughput = data.data.throughput.values.map((i) => {
if (i.hasOwnProperty('value')) return i.value;
return i;
});
state.responseTime = data.data.responseTime.values.map((i) => {
if (i.hasOwnProperty('value')) return i.value;
return i;
});
state.sla = data.data.sla.values.map((i) => {
if (i.hasOwnProperty('value')) return i.value;
return i;
});
state.slowTrace = data.data.slowTrace.traces;
state.endpointP = data.p;
},
[types.SET_APPLICATION_INFO](state: State, data: any) {
state.slowService = data.data.slowService;
state.applicationThroughput = data.data.applicationThroughput;
state.p = data.p;
},
[types.SET_SERVER_INFO](state: State, data: any) {
state.serverResponseTime = data.serverResponseTime.values.map((i) => {
if (i.hasOwnProperty('value')) return i.value;
return i;
});
state.serverThroughput = data.serverThroughput.values.map((i) => {
if (i.hasOwnProperty('value')) return i.value;
return i;
});
},
[types.SET_SERVER_DETAIL](state: State, data: any) {
if (data.cpu.values) {
state.cpu = data.cpu.values.map(i => i.value);
state.gc = {
oldGCTime: data.oldGCTime.values.map(i => i.value),
oldGCCount:data.oldGCCount.values.map(i => i.value),
youngGCCount: data.youngGCCount.values.map(i => i.value),
youngGCTime: data.youngGCTime.values.map(i => i.value),
};
state.memory.heap = data.heap.values.map(i => (i.value / 1024 / 1024).toFixed(2));
state.memory.maxHeap = data.maxHeap.values.map(i => (i.value / 1024 / 1024).toFixed(2));
state.memory.maxNoHeap = data.maxNoheap.values.map(i => (i.value / 1024 / 1024).toFixed(2));
state.memory.noHeap = data.noheap.values.map(i => (i.value / 1024 / 1024).toFixed(2));
} else {
state.cpu = data.cpu.cost;
state.gc = data.gc;
state.memory.heap = data.memory.heap.map(i => (i / 1024 / 1024).toFixed(2));
state.memory.maxHeap = data.memory.maxHeap.map(i => (i / 1024 / 1024).toFixed(2));
state.memory.maxNoHeap = data.memory.maxNoheap.map(i => (i / 1024 / 1024).toFixed(2));
state.memory.noHeap = data.memory.noheap.map(i => (i / 1024 / 1024).toFixed(2));
}
},
[types.CLEAR_DASHBOARD](state: State) {
state.throughput = [];
state.responseTime = [];
state.sla = [];
state.slowTrace = [];
state.slowService = [];
state.p.p99 = [];
state.p.p95 = [];
state.p.p90 = [];
state.p.p75 = [];
state.p.p50 = [];
state.endpointP.p99 = [];
state.endpointP.p95 = [];
state.endpointP.p90 = [];
state.endpointP.p75 = [];
state.endpointP.p50 = [];
state.cpu = [];
state.gc = {
oldGCTime: [],
oldGCCount: [],
youngGCCount: [],
youngGCTime: [],
};
state.memory = {
heap: [],
maxHeap: [],
maxNoHeap: [],
noHeap: [],
},
state.serverResponseTime = [];
state.serverThroughput = [];
},
};
// actions
const actions: ActionTree<State, any> = {
GET_APPLICATION_INFO(context: { commit: Commit; state: State, rootState: any }) {
return getApplicationInfo(context.rootState.global.duration).then((res) => {
let p = {
p99: [],
p95: [],
p90: [],
p75: [],
p50: [],
};
if (res.data.data.getP99) {
p = {
p99: res.data.data.getP99.values.map(i => i.value),
p95: res.data.data.getP95.values.map(i => i.value),
p90: res.data.data.getP90.values.map(i => i.value),
p75: res.data.data.getP75.values.map(i => i.value),
p50: res.data.data.getP50.values.map(i => i.value),
};
}
context.commit(types.SET_APPLICATION_INFO, { data:res.data.data, p });
}).catch(() => {
context.commit(types.SET_APPLICATION_INFO, { data:{
slowService: [],
applicationThroughput: [],
}, p: {
p99: [],
p95: [],
p90: [],
p75: [],
p50: [],
},
});
});
},
GET_ENDPOINT_INFO(context: { commit: Commit; state: State, rootState: any }, params:any) {
const { applicationId, endpoint } = params;
return getEndpointInfo(context.rootState.global.duration, applicationId, endpoint).then((res) => {
let p = {
p99: [],
p95: [],
p90: [],
p75: [],
p50: [],
};
if (res.data.data.getP99) {
p = {
p99: res.data.data.getP99.values.map(i => i.value),
p95: res.data.data.getP95.values.map(i => i.value),
p90: res.data.data.getP90.values.map(i => i.value),
p75: res.data.data.getP75.values.map(i => i.value),
p50: res.data.data.getP50.values.map(i => i.value),
};
}
context.commit(types.SET_ENDPOINT_INFO, { data:res.data.data, p });
});
},
GET_SERVER_INFO(context: { commit: Commit; state: State, rootState: any }, serverId) {
return getServerInfo(context.rootState.global.duration, serverId).then((res) => {
context.commit(types.SET_SERVER_INFO, res.data.data);
});
},
GET_SERVER_DETAIL(context: { commit: Commit; state: State, rootState: any }, serverId) {
return getServerDetail(context.rootState.global.duration, serverId).then((res) => {
context.commit(types.SET_SERVER_DETAIL, res.data.data);
});
},
CLEAR_DASHBOARD(context: { commit: Commit; state: State, rootState: any }) {
context.commit(types.CLEAR_DASHBOARD);
},
};
export default {
namespaced: true,
state: initState,
getters,
actions,
mutations,
};