Jump to content
Калькуляторы

Кольцевой буфер для tcpdump

Нужен сабж или какая-то его разновидность.

Суть проблемы - в IPTV время от времени проскакивает неясная проблема, которую не получается воспроизвести.

Проблема проявляется относительно нечасто - иногда за сутки ни разу не случается.

Тех.поддержка хочет дампы. Но писать дампы IPTV за много часов мне просто некуда.

А нельзя ли организовать кольцевой буфер минут на 10-20, чтобы он был постоянно запущен и я его останавливал, когда проблема случится?

Share this post


Link to post
Share on other sites

Не щупали https://github.com/netoptimizer/IPTV-Analyzer ? Я к тому что может без tcpdump вовсе обойтись.

Share this post


Link to post
Share on other sites

IPTV-Analyzer интересная вещь по описанию, мне она видимо в любом случае не будет лишней.

Но все тех.поддержки очень любят дампы, поэтому хотелось бы все же найти способ организовать кольцевой буфер.

 

Тспдампом можно писать дамп определённого размера..

В принципе да.

Но по закону подлости проблема может оказаться в разных фрагментах дампа.

Share this post


Link to post
Share on other sites

apt-get install daemonlogger

 

daemonlogger -d -f /root/bpf.txt -i eth0 -l /var/log/iptv -g 0 -u 0 -n e0 -P /var/run -p dlog -S 0 -t 1h -m 100 -r -F

 

cat /root/bpf.txt:

 

tcp and port \( 80 or 8080 \)

 

#!/bin/bash
d0=`date +%d%m%g_%H%M`
d1=`date +%s`
d=`date +%d`
d2=`date +%G-%m-%d`
m=`date +%m`
find /var/log/iptv -maxdepth 1 -type f -name e0.* -mmin +1440 -printf "%f\n"|sed -e 's/e0\.//' > /var/log/iptv/$d0.list
while read line0 ; do
dy=`date +%G --date="@${line0}"`
dm=`date +%m --date="@${line0}"`
d=`date +%d --date="@${line0}"`
beg=`date +%H --date="@${line0}"`
end=`stat -c%y /var/log/iptv/e0.${line0}|awk '{print $2}'|sed -e 's/\:.*//g'`
fname=`echo "${beg}_${end}"`
[[ -d /var/log/iptv/pcap/$dy ]] || mkdir /var/log/iptv/pcap/$dy
[[ -d /var/log/iptv/pcap/$dy/$dm ]] || mkdir /var/log/iptv/pcap/$dy/$dm
[[ -d /var/log/iptv/pcap/$dy/$dm/$d ]] || mkdir /var/log/iptv/pcap/$dy/$dm/$d
if [ ! -f /var/log/iptv/pcap/$dy/$dm/$d/$fname ] ; then
cp /var/log/iptv/e0.${line0} /var/log/iptv/pcap/$dy/$dm/$d/$fname
#
find /var/log/iptv/pcap/2016/${m}/${d} -type f >> /tmp/1.txt
while read line ; do
fname=$(basename $line)
dname_0=$(dirname $line)
dname_1=`echo "${dname_0#/var/log/iptv/pcap}"`
dname_2=`echo "${dname_1}"|tr '/' ' '`
echo "${dname_2} ${fname}" >> /tmp/2.txt
done < /tmp/1.txt
cat /tmp/2.txt|sort -n > /tmp/3.txt
#
while read line1 ; do
read year mon day fl <<< ${line1}
if [ ! -f /var/log/iptv/txt/${year}/${mon}/${day}/${fl} ]
then
 if [ ! -d /var/log/iptv/txt/${year} ]
  then
   mkdir -p /var/log/iptv/txt/${year}/${mon}/${day}
  else
   if [ ! -d /var/log/iptv/txt/${year}/${mon} ]
    then
     mkdir -p /var/log/iptv/txt/${year}/${mon}/${day}
    else
     if [ ! -d /var/log/iptv/txt/${year}/${mon}/${day} ]
      then
       mkdir /var/log/iptv/txt/${year}/${mon}/${day}
     fi
   fi
 fi
touch /var/log/iptv/txt/${year}/${mon}/${day}/${fl}
tcpdump -v -n -tttt -r /var/log/iptv/pcap/${year}/${mon}/${day}/${fl} src port \(80 or 8080 \) > /tmp/4.txt
cat /tmp/4.txt|sed '$!N;s/\n/ /'|sed -e ':again;$!N;$!b again; :b; s/([^()]*)//g; t b'|tr -s ' '|cut -d ' ' --fields=1,2,6,9- > /tmp/5.txt
fi
done < /tmp/3.txt
exit 0

Edited by OK-2004

Share this post


Link to post
Share on other sites

Как дети малые.

Пишется тупо через wget / fetch.

Там можно и параметрами играть.

Если поток мультикастовый то пишется через udpxy/msd_lite.

В составе udpxy была udprec тоже типа для записи, но меня никогда не интересовало потому хз.

Если писать 1 канал то за сутки даже от хд канала дамп будет не очень большой - в пределах 100 гб.

 

Тех поддержку вряд ли заинтересует вывод tcpdump и л2-л3-л4 заголовки, хотя как знать что там у вас за проблемы.

Если по тцп то точно не нужно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.