async function getDiskRWData()

in middleware/controllers/nodeExporter.js [220:260]


async function getDiskRWData(req, res) {
    const { from = "now-5m", until = "now", step = 28 } = req.body;

    try {
        const queries = {
            readMerged: "rate(node_disk_reads_merged_total{device='vda'}[5m])",
            writeMerged: "rate(node_disk_writes_merged_total{device='vda'}[5m])",
        };

        const responses = await Promise.all(
            Object.entries(queries).map(async ([key, query]) => {
                const baseUrl = buildUrl(getEnv("NODE_EXPORTER_BASE_URL"), {
                    query,
                    start: from,
                    end: until,
                    step,
                });
                const response = await axios.get(baseUrl);
                return {
                    key,
                    values: response?.data?.data?.result?.[0]?.values || [],
                };
            })
        );

        const formattedData = responses.reduce((acc, { key, values }) => {
            acc[key] = values.map(([timestamp, value]) => ({
                time: new Date(timestamp * 1000).toISOString(),
                value: parseFloat(value),
            }));
            return acc;
        }, {});

        return res.send({ data: formattedData });
    } catch (error) {
        logger.error(error);
        return res.status(400).send({
            error: error.message || "An error occurred while fetching Disk Merged Data",
        });
    }
}