mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2026-05-17 00:26:36 +03:00
56 lines
1.3 KiB
Bash
56 lines
1.3 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Check the number of arguments
|
||
|
|
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
|
||
|
|
echo "Usage: $(basename $0) file1.csv [file2.csv]"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
file1="$1"
|
||
|
|
file2="$2"
|
||
|
|
|
||
|
|
# Check if the files exist
|
||
|
|
if [ ! -f "$file1" ]; then
|
||
|
|
echo "File not found: $file1"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -n "$file2" ] && [ ! -f "$file2" ]; then
|
||
|
|
echo "File not found: $file2"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Temporary file for plot data
|
||
|
|
plotdata="/tmp/tsbs_plot.dat"
|
||
|
|
|
||
|
|
if [ -z "$file2" ]; then
|
||
|
|
# === One file ===
|
||
|
|
awk -F, '/^Summary:/ {exit} NR > 1 {print $1, $2}' "$file1" > "$plotdata"
|
||
|
|
else
|
||
|
|
# === Two files ===
|
||
|
|
|
||
|
|
# Get time and per.metric/s from file1
|
||
|
|
awk -F, '/^Summary:/ {exit} NR > 1 {print $1, $2}' "$file1" > /tmp/file1.dat
|
||
|
|
# Get per.metric/s from file2
|
||
|
|
awk -F, '/^Summary:/ {exit} NR > 1 {print $2}' "$file2" > /tmp/file2.dat
|
||
|
|
# Merge by rows: time, val1, val2
|
||
|
|
paste /tmp/file1.dat /tmp/file2.dat | awk '{print $1, $2, $3}' > "$plotdata"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# === Build plot dynamically ===
|
||
|
|
gnuplot -persist <<-EOF
|
||
|
|
set datafile separator " "
|
||
|
|
set title "per.metric/s"
|
||
|
|
set xlabel "Timestamp"
|
||
|
|
set xdata time
|
||
|
|
set timefmt "%s"
|
||
|
|
set format x "%H:%M:%S"
|
||
|
|
set ylabel "per. metric/s"
|
||
|
|
set format y "%'.0f"
|
||
|
|
set grid
|
||
|
|
|
||
|
|
plot "$plotdata" using 1:2 with lines title "$(basename "$file1")" \
|
||
|
|
$( [[ -n "$file2" ]] && echo ", \\
|
||
|
|
\"$plotdata\" using 1:3 with lines title \"$(basename "$file2")\"" )
|
||
|
|
EOF
|