Question Envoi de journaux Subversion à Logstash


Mon exigence est d’envoyer des journaux de sous-version (nom d’utilisateur, numéro de révision, etc.) à logstash pour analyse (puis les stocker dans une recherche élastique et les afficher via kibana). Depuis Subversion, elle utilise sa propre base de données (FSFS) et non fichier texte brut, j'ai deux options

  1. Exécutez svn log via cron (à un intervalle de 1 min) puis envoyez ce fichier à logstash (très mauvaise idée)
  2. Subversion River utilisé, je l'ai essayé et il ne fonctionne pas car il n'est pas en mesure d'indexer les données du tout. Entre son développement, il est arrêté il y a presque 1 an. Aucune aide du tout

J'ai également pensé au script de post-commit que chaque fois qu'un utilisateur s'enregistre, il le déclenche puis stocke les journaux dans un fichier texte, mais identique au point 1.

Toute aide / idée à faire est vraiment appréciée

MODIFIER

Nous écrivons ce petit post-commit comme je l'ai mentionné au point 3 afin que, chaque fois que l'utilisateur s'enregistre, nous puissions enregistrer les métadonnées dans un fichier, puis via syslog, nous pouvons transférer ce journal au serveur logstash. L'un des inconvénients majeurs de cette approche est J'ai affaire à une TB de données et à plus de 15 enregistrements à la minute, ce fichier est très volumineux (nous pouvons utiliser logrotate), mais il est en même temps confronté à un problème de verrouillage (lorsque plusieurs utilisateurs essaient de se connecter et d'écrire dans le même fichier). qui mènera éventuellement à une situation de concurrence critique et aggravera encore la situation.Past suivant sur le crochet post-engagement, de sorte qu'il puisse être utile à d'autres personnes

 #!/bin/sh

 REPOS="$1"
 REV="$2"

 LOG="/tmp/svn.log"

 var1=/usr/bin/svnlook info -r $REV $REPOS | tr '\n' '|'`
 var2=/usr/bin/svnlook changed -r $REV $REPOS | tr '\n' ' '`
 echo "r${REV}|${var1}|${var2}\n" | tee -a ${LOG} 2>&1
 echo " " | tee -a ${LOG} 2>&1

5
2018-02-20 23:01


origine


Pourquoi le numéro 1 serait-il une mauvaise idée? Parce que ça génère tellement d'informations? Dans ce cas, votre troisième option serait une bonne option? Accrocher sur le commit, alors seules les informations pertinentes sont envoyées à logstash? - Tim Stoop
Merci Tim, En ce qui concerne l’option 1, c’est exact, car j’ai affaire à des fichiers de données. Malheureusement, l’option 3 est également rejetée. Je recherche donc de nouvelles options. - Prashant Lakhera
Pouvez-vous expliquer pourquoi l'option 3 a été rejetée? - Tim Stoop
La raison en est que je traite avec 2To de données..avec 700 + référentiel et au moins 15 + checkin / min, afin de maintenir ce gros fichier ainsi maintenir la simultanéité est vraiment difficile - Prashant Lakhera


Réponses:


Je vois au moins une option pratique: 1) Envoyez vos journaux SVN à syslog, la plupart des distributions utilisent maintenant rsyslog, voici donc un exemple pour rsyslog (5.x):

$InputFileName /${path_to}/svn.log
$InputFileTag svn:
$InputFileStateFile /var/spool/rsyslog/svn_log

$InputFileSeverity notice
$InputFileFacility local7
$InputRunFileMonitor

:syslogtag, isequal, "svn:" @@${IP_of_logstash}:$PORT
&~

Veuillez noter que cette configuration sera différente pour les nouvelles versions de rsyslog. version 8.x config:

#reading SVN logs
input(type="imfile" File="/var/log/${path_to}/svn.log"
Tag="svn:"
StateFile="/var/spool/rsyslog/svn_log"
Severity="normal"
Facility="local7")

:syslogtag, isequal, "svn:" @@${IP_of_logstash}:$PORT
&~

2) Configurer l’écouteur et l’analyseur syslog de logstash pour les journaux

Dans ce cas, les journaux ne seront pas stockés en plus dans syslog, mais transférés directement à logstash et le transport de syslog s'en chargera.


2
2018-02-26 14:32





Une possibilité pourrait être de configurer Syslog pour accepter les journaux de sous-version et l’envoyer à logstash.

liens utiles

http://logstash.net/docs/1.1.9/outputs/syslog

http://linux.die.net/man/5/syslog.conf

http://www.commandlinefu.com/commands/view/11687/send-apache-log-to-syslog-ng


0
2018-02-26 11:30