Last active
June 28, 2023 14:15
-
-
Save lfdominguez/08de623d9f9c0fa84e6b4d5d0d25025c to your computer and use it in GitHub Desktop.
Send traffics stats by ip from pfsense to influxdb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# Author: Luis Felipe Domínguez Vega <[email protected]> | |
# | |
# Program to use with the rate software to send to InfluxDB the | |
# rate of each IP on interface | |
# | |
# rate_to_influx <influxdb_url> <influxdb_database> <local_network> <interface> | |
# rate_to_influx http://127.0.0.1:8086 network 192.168.0.0/24 re1 | |
#- - - - - - - - - - - - - - - - - - - | |
# rate -i re1 -r 1 -e -nl -Ab -a 255 -c 192.168.0.0/24 -d | |
# | |
#192.168.0.40: 0:1424 :0:1424: 0:1: 0:1 | |
# | |
logger "$0 [I] Started rate estimator" | |
URL="$1/write?db=$2&precision=s" | |
DATA_INFLUX="" | |
PROGRAM=' | |
{ | |
base_1="network_metric,host=" | |
base_2=",direction=" | |
base_3="byte_rate=" | |
split($0, data, ":") | |
print base_1 data[1] base_2 "download " base_3 data[4] " " ts | |
print base_1 data[1] base_2 "upload " base_3 data[5] " " ts | |
printf " " | |
} | |
' | |
FLAG_TS=1 | |
rate -i $4 -r 1 -e -nl -Ab -a 255 -c $3 -d | while read -r line; do | |
FIRST_LINE=`echo $line | head -c 1` | |
if [ x"$FIRST_LINE" == x"-" ]; then | |
curl -i -s -k -o /dev/null -XPOST "$URL" --data-binary "$DATA_INFLUX" || { | |
logger "$0 [W] Can't write to InfluxDB Database" | |
} | |
DATA_INFLUX="" | |
FLAG_TS=1 | |
fi | |
if [ $FLAG_TS -eq 1 ]; then | |
TS=`date +%s` | |
FLAG_TS=0 | |
fi | |
DATA_FROM_RATE=`echo "$line" | awk -v ts="$TS" "$PROGRAM"` | |
DATA_INFLUX="$DATA_INFLUX$DATA_FROM_RATE" | |
done |
Would anyone happen to have a Grafana dashboard for this data?
How do you implement this? Can someone help me out?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I added an else to your if statement so that the dashed lines, "- - - - - - - - - - - - - - - - - - -", wouldn't get posted to InfluxDB.
https://gist.github.com/crawc/1669f655a0472e76723d9fd631c9cd75