Browse Source

netflow fix

devel
Dmitry Novikov 7 years ago
parent
commit
5863ea1730
  1. 17
      abonapp/views.py
  2. BIN
      agent/netflow/djing_flow.tar.gz
  3. 10
      agent/netflow/netflow_collect.sh
  4. 13
      agent/netflow/netflow_handler.sh
  5. 4
      agent/netflow/start_netflow.sh

17
abonapp/views.py

@ -9,8 +9,8 @@ from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.core.exceptions import PermissionDenied, ValidationError from django.core.exceptions import PermissionDenied, ValidationError
from django.db import IntegrityError, ProgrammingError, transaction
from django.db.models import Count, Q
from django.db import IntegrityError, transaction
from django.db.models import Count
from django.http import ( from django.http import (
HttpResponse, HttpResponseBadRequest, HttpResponse, HttpResponseBadRequest,
HttpResponseRedirect HttpResponseRedirect
@ -255,7 +255,8 @@ class DebtsListView(LoginAdminPermissionMixin, OrderedFilteredList):
def get_queryset(self): def get_queryset(self):
if not hasattr(self, 'abon'): if not hasattr(self, 'abon'):
abon = get_object_or_404(models.Abon, username=self.kwargs.get('uname')) abon = get_object_or_404(models.Abon, username=self.kwargs.get('uname'))
self.abon = abonself.abon = abon
if not hasattr(self, 'abon'):
self.abon = abon
return models.InvoiceForPayment.objects.filter(abon=self.abon) return models.InvoiceForPayment.objects.filter(abon=self.abon)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -694,7 +695,7 @@ def clear_dev(request, gid: int, uname):
@json_view @json_view
def abon_ping(request, gid: int, uname): def abon_ping(request, gid: int, uname):
ip = request.GET.get('cmd_param') ip = request.GET.get('cmd_param')
status = False
status = 1
text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _('no ping') text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _('no ping')
abon = get_object_or_404(models.Abon, username=uname) abon = get_object_or_404(models.Abon, username=uname)
try: try:
@ -711,7 +712,7 @@ def abon_ping(request, gid: int, uname):
ping_result = mngr.ping(ip) ping_result = mngr.ping(ip)
if ping_result is None: if ping_result is None:
return { return {
'status': False,
'status': 1,
'dat': text 'dat': text
} }
if isinstance(ping_result, tuple): if isinstance(ping_result, tuple):
@ -723,7 +724,7 @@ def abon_ping(request, gid: int, uname):
received, sent = ping_result received, sent = ping_result
else: else:
return { return {
'status': False,
'status': 1,
'dat': text 'dat': text
} }
loses_percent = ( loses_percent = (
@ -738,7 +739,7 @@ def abon_ping(request, gid: int, uname):
text = '<span class="glyphicon glyphicon-ok"></span> %s' % _( text = '<span class="glyphicon glyphicon-ok"></span> %s' % _(
'ok ping, %(return)d/%(all)d loses' 'ok ping, %(return)d/%(all)d loses'
) % ping_result ) % ping_result
status = True
status = 0
else: else:
text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _( text = '<span class="glyphicon glyphicon-exclamation-sign"></span> %s' % _(
'no ping, %(return)d/%(all)d loses' 'no ping, %(return)d/%(all)d loses'
@ -750,7 +751,7 @@ def abon_ping(request, gid: int, uname):
text = str(e) text = str(e)
return { return {
'status': 0 if status else 1,
'status': status,
'dat': text 'dat': text
} }

BIN
agent/netflow/djing_flow.tar.gz

10
agent/netflow/netflow_collect.sh

@ -17,7 +17,6 @@ ldb = db.get('default')
print('%s %s %s %s %d' % (ldb['NAME'], ldb['USER'], print('%s %s %s %s %d' % (ldb['NAME'], ldb['USER'],
ldb['PASSWORD'], ldb['HOST'], ldb['PORT']))"` ldb['PASSWORD'], ldb['HOST'], ldb['PORT']))"`
if ! ping -c 1 ${mysql_host} &> /dev/null; then if ! ping -c 1 ${mysql_host} &> /dev/null; then
echo "Host ${mysql_host} is not accessible" echo "Host ${mysql_host} is not accessible"
fi fi
@ -33,19 +32,16 @@ do
echo "${uip}-${uid}" >> ${tmp_ipuser_file} echo "${uip}-${uid}" >> ${tmp_ipuser_file}
done done
# Сигналим коллекторам чтоб они сбросили дамп в папку /tmp/djing_flow/dump # Сигналим коллекторам чтоб они сбросили дамп в папку /tmp/djing_flow/dump
for fl in /run/flow.pid.*; do for fl in /run/flow.pid.*; do
kill -HUP `cat ${fl}` kill -HUP `cat ${fl}`
sleep 1
done done
sleep 1
# Экспортируем всё в mysql # Экспортируем всё в mysql
export LD_LIBRARY_PATH=. export LD_LIBRARY_PATH=.
flow-cat /tmp/djing_flow/dump/*.dmp | ./djing_flow -i ${tmp_ipuser_file} -cl | mysql -u ${mysql_user} -h ${mysql_host} -p -D ${mysql_database} -P ${mysql_port} --password=${mysql_passw}
flow-cat /tmp/djing_flow/dump/*/*.dmp | ./djing_flow -i ${tmp_ipuser_file} -cl | mysql -u ${mysql_user} -h ${mysql_host} -p -D ${mysql_database} -P ${mysql_port} --password=${mysql_passw}
rm -f tmp_ipuser_file rm -f tmp_ipuser_file
rm -f /tmp/djing_flow/dump/*.dmp
rm -f /tmp/djing_flow/dump/*/*.dmp

13
agent/netflow/netflow_handler.sh

@ -1,13 +1,20 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "missing port"
exit
fi
if [ -z "$2" ]; then
echo "missing filename" echo "missing filename"
exit exit
fi fi
fname=$1
fname=$2
port=$1
PATH=/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin PATH=/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
cd /tmp/djing_flow cd /tmp/djing_flow
mkdir -p dump
mv ${fname} dump/${fname}.dmp
mkdir -p dump/${port}
echo "mv ${port}/${fname} dump/${port}/${fname}.dmp" >> /tmp/mv.log
mv ${port}/${fname} dump/${port}/${fname}.dmp

4
agent/netflow/start_netflow.sh

@ -9,6 +9,6 @@ fi
port=$1 port=$1
DIRECTORY=`dirname $(readlink -e "$0")` DIRECTORY=`dirname $(readlink -e "$0")`
mkdir -p /tmp/djing_flow
mkdir -p /tmp/djing_flow/${port}
flow-capture -R ${DIRECTORY}/netflow_handler.sh -p /run/flow.pid -w /tmp/djing_flow -n1 -N0 0/0/${port}
flow-capture -R "${DIRECTORY}/netflow_handler.sh ${port}" -p /run/flow.pid -w /tmp/djing_flow/${port} -n1 -N0 0/0/${port}
Loading…
Cancel
Save