-
-
Save crawc/1669f655a0472e76723d9fd631c9cd75 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 <ldominguezvega@gmail.com> | |
# https://gist.github.com/lfdominguez/08de623d9f9c0fa84e6b4d5d0d25025c | |
# 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 | |
# rate -i $4 -r 1 -e -nl -Ab -a 255 -c $3 -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 | |
else | |
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" | |
fi | |
done |
Without the ticks, I updated the gist.
your hostname script works nicely. Thank you.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hey @crawc - Thank you.
This new script, has ticks at the start and end, are they needed or did GIT place them there with the insert code?
With them present, the script does not find 'done'.
I removed the ticks and my output looks like this when running:
`
./rate_to_influx.sh http://10.0.0.250:8086 pfsense 10.0.0.0/24 re1
`
my script::
https://github.com/benisai/rate-to-influxdb-pfsense/blob/main/Script%20for%20pfsense