Re: lug-bg: Предаване на данни между 2 машинки.
- Subject: Re: lug-bg: Предаване на данни между 2 машинки.
- From: Vasil Kolev <vasil@xxxxxxxxxx>
- Date: Tue, 29 Jun 2004 22:58:31 +0300
- Organization: Ludost Networks
На вт, 2004-06-29 в 15:41, Христофор Памятних записа:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Проблема е следния - драснах един скрипт който да събира разнообразни
> статистики от трафика на ppp интерфейсите. Идеята е по статистиките които
> събира въпросния скрипт да се чертаят графики на друга машинка. В момента се
> чудя как да прехвърля съответните числа. Оказа се че по snmp за съжаление не
> става - има ограничение за дължината на текстов низ. Сещам се за няколко идеи
> но ни една от тях ми се струва елегантана - напр. демонче което да виси на
> едикой си порт и да си признава всичко което му кажат, апаш и временни записи
> в база. Просто ми се ще да исползвам нещо съвсем стандартно от типа на snmp.
> Става дума за около 300 различни числени стойности.
Аз реши подобен проблем по следния начин - на машината, която генерира
данните, работи нещо такова в cron-а:
#!/bin/sh
# da se pogrizhim da ne se pusne vtori put sushtiq proces
if [ -f /var/run/cront.pid ]; then
if [ -d /proc/`cat /var/run/cront.pid` ] ; then
echo Cront already running!
exit 0
fi
fi
echo $$ > /var/run/cront.pid
trap "rm -f /var/run/cront.pid" exit SIGHUP SIGINT SIGTERM
# tova subira dannite
gather_data > tmp/tmpfile
stamp=`date +%s`
hn=`hostname`
# mv e atomichna operaciq na edna i sushta FS, taka che nqma shans
# neshtoto ot drugata strana da se hvane i da vzeme polovin fajl
mv tmp/tmpfile data/stat.$hn.$stamp
rm -f /var/run/cront.pid
А на събиращата машина пак в cron-а има нещо като това (тоя скрипт също
има locking, но ме мързи да го повтарям, същия е като горния):
#!/bin/bash
set -e
cd /home/stats/final
for i in `cat /etc/machinelist`; do
scp 'username@'$i':/home/stats/data/*' .
t=data.$i.*
# da pochistim starite fajlove
ssh username@$i "cd /home/stats/data && rm $t"
done
for i in *; do
parse_data $i
done
Това в общи линии ти гарантира, че няма да имаш половинчати файлове, и
че и да изтървеш един update, не е фатално Можеш съответно да си
разпределяш файловете от различни машини по директории (в моя случай не
ми трябваше, това, което събираше данните им слагаше label-и).
Може да има някаква грешка в locking механизма (т.е. да не пусне
случайно cron-а втори такъв процес, докато работи първия, и да намаже
ситуацията), но това вече лесно се оправя, има няколко много добри
механизма за целта.
Attachment:
signature.asc
Description: This is a digitally signed message part
|