# [Logs] Envoie de logs par le protocole http [solved]

## xelif

Bonjour à tous

J'ai une machine placée sur chez un client (avec ses propres problèmatiques de sécuritées), et j'aimerai pouvoir récupérer de mon lieu de travail les logs présent sur ma machine. 

Normalement le port 80, utilisé pour du http est ouvert c'est pour cela que nous l'avons choisis. (http est donné de manière indicative, le port 443 serait plus approprié car permettrait de crypter les infos circulant sur le net)

J'ai d'un autre coté ma machine de journalisation des informations avec une analyse des fichiers journaux provenant de plusieurs machines chez différents clients.

J'aimerai savoir si il était possible d'envoyer des logs générés par syslog-ng (entre autre) par le port 80 et via le protocole http.

J'ai bien vu que syslog permettait d'envoyer des logs sur des machines distantes en via un port paticulier (voir http://wiki.auf.org/wikiteki/Syslog-ng )

Mais cela ne suffit pas pour l'utilisation que je veux en faire. Car si le client possède un firewall effectuant une analyse des trames cela peut bloquer mes communications

Est ce que quelqu'un à déjà une solution existante pour ce genre de problèmes? (je prefererais car j'ai pas envie de coder moi même la solution ^^)

Merci d'avance pour ces réponsesLast edited by xelif on Tue Mar 23, 2010 12:27 pm; edited 1 time in total

----------

## truc

j'sais pas trop pour syslog machin, mais, tu peux avoir un cronjob qui copie les logs LAOUILFO et que le serveur http les sert. Par conte, les servir tels quels, c'est pas top, car les fichiers de log peuvent  être gros mais se compressent en général très bien, donc, pourquoi ne pas les comprosser dans le cronjob? Après, de ton coté, tu ne les récupères que de temps en temps?

Bon, c'est pas du temps réel mais bon...

----------

## guilc

syslog, si c'est pour faire du temps réel, on utilise... le protocole syslog (en UDP), rien d'autre, c'est pas fait pour.

Après, si c'est récupérer a intervalles réguliers, plutot qu'un cronjob, le post-rotate me semble le plus adapté pour y coller un SCP, push WEBDAV, ou tout autre truc imaginable. Perso, c'est que j'utilise toutes les 24h pour agréger les logs de mon cluster. (en SCP mais bon, ça s'adapte).

Pour donner une idée, voila ce que je fais pour apache :

```
/var/log/apache2/*.log {

    daily

    missingok

    rotate 52

    compress

    delaycompress

    notifempty

    create 640 root adm

    sharedscripts

    postrotate

        if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then

            /etc/init.d/apache2 reload > /dev/null

        fi

        scp -Bq -i /root/.ssh/id_rsa /var/log/apache2/*access.log-`date +"%Y%m%d"`* pepperway-pp.pepperway.fr:/var/log/apache2/`uname -n`/

    endscript

}

```

On peut tout à fait mettre ce qu'on veut à la place du scp dans le postrotate !

[EDIT]

Accessoirement, l'argument de sécurité faisaint qu'on ne laisse que HTTP ne tient pas la route 1 seconde.

Absolument aucun impératif de sécurité empêche d'ouvrir un canal syslog en UDP sur de l'IPSEC. Ca met à peu près 15mins à configurer ça entre 2 machines spécifique... Il suffit de configurer un petit tunnel ipsec en mode transport entre les 2 machines (2 fichiers de conf de 10 lignes chacun), d'autoriser uniquement le trafic IPSEC (AH et ESP) entre les 2 machines, et le trafic UDP syslog va passer tout seul comme un grand dessus, sans se poser plus de problèmes.

----------

## xelif

oki j'ai pris note de vos remarques...

@Truc il me faut du temps réèl...

@guilc

pour le fait d'envoyer en http c'est mon supérieur qui me le demande... j'ai aussi dit que c'était idiot car syslog envoyait déjà des traces de logs....

Le souci c'est que les clients pour notre produit sont aussi récalcitrants à modifier leurs passerelles/firewall...

En fait j'ai programmé le truc directement dans le programme... quand il envoie des infos au syslog il envoie aussi une requete à notre serveur web, sur le bon backend, afin de stocker le message dans une base de donnée de logs...

et j'ai pas eu à réinventer la roue... beaucoup de choses existaient deja pour le faire dans le code du programme

Merci pour vos réponses

----------

