Discussion : Surveiller un serveur avec iptraf et rrdtools

Ceci est le fil de discussion pour le T&A Surveiller un serveur avec iptraf et rrdtools. :smiley:

Pas mal, je ne connaissais pas. C’est le genre de choses bien utiles !

Avant de plonger le nez dedans, petite question : est-ce qu’il y a moyen d’obtenir la même chose SANS héberger un CGI sur Apache ?
Je m’explique : je ne voudrais pas que ces graphes soient disponibles publiquement, ni même derrière une authentification HTTP. Je préférerais largement me connecter en SSH, créer le graphe à la demande (en dehors des répertoires Apache), et rapatrier les fichiers produits. Il s’agit bien évidemment d’un serveur public sur Internet… :wink:

Autre question (toujours avant que je me plonge dans la doc, si tu as la réponse ça m’évitera de chercher :mrgreen:) : sais-tu si le format de fichier produit par iptraf est facilement exploitable ? L’idée serait de monitorer la bande passante pour m’avertir en fonction de divers critères (aide à la détection d’attaques).

Une idée ?

[quote=“syam”]Pas mal, je ne connaissais pas. C’est le genre de choses bien utiles !

Avant de plonger le nez dedans, petite question : est-ce qu’il y a moyen d’obtenir la même chose SANS héberger un CGI sur Apache ?
Je m’explique : je ne voudrais pas que ces graphes soient disponibles publiquement, ni même derrière une authentification HTTP. Je préférerais largement me connecter en SSH, créer le graphe à la demande (en dehors des répertoires Apache), et rapatrier les fichiers produits. Il s’agit bien évidemment d’un serveur public sur Internet… :wink:

Une idée ?[/quote]

Je vais me renseigner auprès d’un ami qui le fait ainsi savoir comment il le fait :wink:

[quote=“syam”]Pas mal, je ne connaissais pas. C’est le genre de choses bien utiles !

Avant de plonger le nez dedans, petite question : est-ce qu’il y a moyen d’obtenir la même chose SANS héberger un CGI sur Apache ?
Je m’explique : je ne voudrais pas que ces graphes soient disponibles publiquement, ni même derrière une authentification HTTP. Je préférerais largement me connecter en SSH, créer le graphe à la demande (en dehors des répertoires Apache), et rapatrier les fichiers produits. Il s’agit bien évidemment d’un serveur public sur Internet… :wink:

Autre question (toujours avant que je me plonge dans la doc, si tu as la réponse ça m’évitera de chercher :mrgreen:) : sais-tu si le format de fichier produit par iptraf est facilement exploitable ? L’idée serait de monitorer la bande passante pour m’avertir en fonction de divers critères (aide à la détection d’attaques).

Une idée ?[/quote]

Salut,
Oui je pense qu’il existe des outils.
Ceci peut-être te conviendrais ? gbrrdgraphix.sourceforge.net/gbR … ation.html

Pour la deuxième question… Nolossé :mrgreen:
En fait iptraf ne stocke rien, c’est rddtool qui capte les infos de iptraf pour stocker dans une base rrd. Après il suffit de récolter les infos dans la base… Je ne peux pas t’en dire plus, c’est tout nouveau pour moi rrd…

En fait, le tutorial sur le site de RRDTool répond à mes deux questions : c’est possible et très simple…
oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html

[quote=“syam”]En fait, le tutorial sur le site de RRDTool répond à mes deux questions : c’est possible et très simple…
oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html[/quote]
Bon très bien sinon je vais me pencher sur munin ( et à ce que je vois il y a justement quelqu’un qui à quelques soucis de configuration dessus :stuck_out_tongue: ).

N’empêche un retrour d’expérience en commun avec LoL serait vraiement du luxe mais vraiment sympa afin de compléter le tutoriel déjà très bien de LoL :023

[quote=“barbbabull”][quote=“syam”]En fait, le tutorial sur le site de RRDTool répond à mes deux questions : c’est possible et très simple…
oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html[/quote]
Bon très bien sinon je vais me pencher sur munin ( et à ce que je vois il y a justement quelqu’un qui à quelques soucis de configuration dessus :stuck_out_tongue: ).

N’empêche un retrour d’expérience en commun avec LoL serait vraiement du luxe mais vraiment sympa afin de compléter le tutoriel déjà très bien de LoL :023[/quote]

:smiley: Merci c’est vraiment du basic mon truc… l’outil est puissant ! Dés que j’ai un peu de temps je complète !
J’ai vu un truc mortel : fibranet.cat/cgi-bin/monitor … olor=black
Il n’y a pas que du rrd mais, ça dépote bien au niveau de la surveillance !

Bonsoir,

Perso, j’utilise webmin + sysstats (sur mon pc… pas serveur)

(sysstats utilise rrdtool)

[quote=“Jeumeu”]Bonsoir,

Perso, j’utilise webmin + sysstats.

(sysstats utilise rrdtool)[/quote]

Salut,
Webmin n’est pas un modèle de sécurité.
Et Webminstats n’est pas dans la liste des modules standards de Webmin…
Ça fait beaucoup quand même ! Moi je ne le conseillerais pas si on me le demandais :mrgreen:

Mon T&A utilise uniquement des paquets Debian, qui viennent des dépôts Debian…

Hello
sa ma me semble utile surtout que iptraf est bien et pas trop lourd :023
certainment un truc pour mon futur serveur si j’arrive as a fini mon soft en c++

Question un peu bête, la base de données ne devient pas un peu énorme avec le temps ? Honte sur moi, je n’ai pas regardé si tu effaçais les données antérieures à une certaine date.
C’est une question que je m’étais posée quand j’avais bricolé mailgraph, qui utilise aussi une bdd round robin.

Sinon je trouve ton outil bien chouette :wink: et ça m’étonnerais pas qu’il finisse, peut-être avec des modif, sur mon serveur d’ici peu de temps.
Merci d’avoir pris le temps de nous en faire profiter.

[quote=“antalgeek”]Question un peu bête, la base de données ne devient pas un peu énorme avec le temps ? Honte sur moi, je n’ai pas regardé si tu effaçais les données antérieures à une certaine date.
C’est une question que je m’étais posée quand j’avais bricolé mailgraph, qui utilise aussi une bdd round robin.

Sinon je trouve ton outil bien chouette :wink: et ça m’étonnerais pas qu’il finisse, peut-être avec des modif, sur mon serveur d’ici peu de temps.
Merci d’avoir pris le temps de nous en faire profiter.[/quote]

Avec une tache CRON bien régler devrait te suffire à te lancer sinon :083

Salut,

C’est un des avantages du format rrd.

Comme je n’ai rien inventé, voici la source, et son opinion au sujet de la taille de la “database” :

Chez moi ça fait 563 kilos, ça n’a pas bougé en une semaine… Je ne sais pas quel est le miracle derrière ça… Si quelqu’un sait, il est le bienvenu…

Décidément il faut vraiment que je m’intéresse à ça de plus près.
Je m’en vais lire de la doc.

RRD : Round Robin Database. Ça devrait te mettre la puce à l’oreille. :wink:

Il alloue une taille fixe de donnée, et utilise cet espace de stockage à la manière d’un buffer circulaire : quand il arrive « à la fin » du fichier, il continue en écrasant progressivement ce qui se trouve au début.
Imagine une bonne vieille bande magnétique dont les deux extrémités seraient attachées ensemble : la tête de lecture indique la position courante, mais la bande n’a pas réellement de début ni de fin puisqu’elle tourne en boucle à l’infini. Sauf que, bien entendu, elle est de longueur fixe et n’offre qu’une capacité de stockage limitée, malgré qu’on puisse la faire tourner indéfiniment.

RRD : Round Robin Database. Ça devrait te mettre la puce à l’oreille. :wink:

Il alloue une taille fixe de donnée, et utilise cet espace de stockage à la manière d’un buffer circulaire : quand il arrive « à la fin » du fichier, il continue en écrasant progressivement ce qui se trouve au début.
Imagine une bonne vieille bande magnétique dont les deux extrémités seraient attachées ensemble : la tête de lecture indique la position courante, mais la bande n’a pas réellement de début ni de fin puisqu’elle tourne en boucle à l’infini. Sauf que, bien entendu, elle est de longueur fixe et n’offre qu’une capacité de stockage limitée, malgré qu’on puisse la faire tourner indéfiniment.[/quote]

:smiley: C’est drôle j’en ai rêvé, et j’ai compris cette nuit…

[quote=“syam”]Il alloue une taille fixe de donnée, et utilise cet espace de stockage à la manière d’un buffer circulaire : quand il arrive « à la fin » du fichier, il continue en écrasant progressivement ce qui se trouve au début.
[/quote]
Ce qui veut dire que l’on doit pouvoir affecter la taille que l’on veut à la création de la base.
Après lecture de la doc on a une fonction rrdresize qui fait l’affaire : on peut modifier à chaud la taille de la bdd.
Donc, lol, y’a plus qu’à modifier ton bouzin pour qu’il conserve 1 an de données :laughing:

Yop

J’ai commencé à mettre en place ta solution et je suis confronté à deux problèmes :

  • tel que exposé dans ton T&A, la bdd reste vide ce qui me semble normal vu qu’elle n’est pas alimentée. En cherchant je suis tombé sur ce site http://www.taedium.com/rrd-iptraf/ et l’auteur utilise un script perl pour alimenter sa bdd à partir des logs iptraf. Vu que tu n’en parles pas, c’est quoi l’astuce ?
  • bien entendu mon serveur ne veut pas exécuter du rcgi (bridé au perl juste) donc je ré-écris le front-end en perl

[quote=“antalgeek”]Yop

J’ai commencé à mettre en place ta solution et je suis confronté à deux problèmes :

  • tel que exposé dans ton T&A, la bdd reste vide ce qui me semble normal vu qu’elle n’est pas alimentée. En cherchant je suis tombé sur ce site http://www.taedium.com/rrd-iptraf/ et l’auteur utilise un script perl pour alimenter sa bdd à partir des logs iptraf. Vu que tu n’en parles pas, c’est quoi l’astuce ?
  • bien entendu mon serveur ne veut pas exécuter du rcgi (bridé au perl juste) donc je ré-écris le front-end en perl[/quote]
    :005 :blush: :005

Je n’en parle pas car… j’ai oublié ce détail en écrivant le T&A…
Je rectifie immédiatement… Shame on me !
Effectivement il faut un script, lancé dans crontab régulièrement, pour collecter les données et remplir la rrd…
Le site sur lequel tu es tombé est celui sur lequel j’ai copié… J’ai donné le lien quelques posts plus haut.

:arrow_right: :arrow_right: Bon je vais corriger mon T&A

[quote=“lol”]
Le site sur lequel tu es tombé est celui sur lequel j’ai copié… J’ai donné le lien quelques posts plus haut.[/quote]
Je savais bien que tu avais donné un lien…je ne retrouvais plus où :075 …du mal aujourd’hui moi

Sinon le script en perl est fini, en voici le prototype pour un port à la ouanegaine (le 12345) :

#!/usr/bin/perl -w

use RRDs;
use POSIX qw(uname);

my $host = (POSIX::uname())[1];
my $scriptname = 'tcp_services.cgi';
my $rrd = '/var/lib/rrd/tcp_services.rrd';


sub main()
{
	print "Content-Type: text/html\n\n";

	print <<HEADER;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TCP Services for $host</title>
<meta http-equiv="Refresh" content="300" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body>
HEADER

	print "<h1>TCP Services for $host</h1>\n";

	print "<p><b>Service ouanegaine</b>";
	RRDs::graph("./tcp_services-12345-6hr.png",
			"--start", '-21600',
			"--end", '-300',
			"--lazy",
			"DEF:in=$rrd:12345_in:AVERAGE",
			"DEF:out=$rrd:12345_out:AVERAGE",
			"CDEF:out_bits=out,8,*",
			"CDEF:in_bits=in,8,*",
			"AREA:in_bits#00FF00",
			"LINE1:out_bits#0000FF",
	);
	print "<br>";
	print "<img src=\"tcp_services-12222-6hr.png\">";

	print <<FOOTER;
<br><br>Da TCP services statistics page
</body></html>
FOOTER
}
main;

Bon je crée le PNG dans le rep où se trouve mon cgi et je l’affiche avec une balise img.
C’est pas ce qui se fait de mieux mais compte tenu de mon serveur http c’est déjà pas mal de pouvoir faire tout ça. J’ai du créer les fichiers à la mano pour que ça tourne, pi mettre les bons droits…
Pour les utilisateurs d’apache ou lighthttpd : on doit pouvoir faire mieux, notamment créer les png dans un /var/lib/rrd/quivabien et les balancer avec un code du type :

open(IMG, $file) or die; my $data; print $data while read(IMG, $data, 16384)>0;