Logstash Forwarder non si avvia con chkconfig in CentOS 5

Ho installato logstash-forwarder su una macchina CentOS 5 installandola da questo RPM:

http://download.elasticsearch.org/logstash-forwarder/packages/logstash-forwarder-0.3.1-1.x86_64.rpm 

Quando ho passato attraverso il process ho trovato lo script init fornito per CentOS / RHEL / Fedora non funzionava come previsto. Non ho ricevuto alcuna informazione quando ho eseguito i comandi e non ho iniziato il process. Ho scoperto che qualcun'altro aveva alcuni problemi simili e aveva scritto i propri , questo script funziona bene quando avvio logstash-forwarder utilizzando il servizio o il command init.d, tuttavia, ho notato che quando riavvii il server il servizio non avviare (il seguente è da subito dopo un riavvio):

  • Prestazioni del server per traffico elevato?
  • glibc 2.7 su CentOS 5.5?
  • Come aggiornare il tempo di un server CentOS da un server di tempo autorevole?
  • Individuare la posizione del file libmysqlclient.so.X in ambienti Linux
  • Come puoi installare il burattino su CentOS 7?
  • Come modificare l'IP in CentOS?
  •  # service logstash-forwarder status logstash-forwarder dead but pid file exists # chkconfig --list logstash-forwarder logstash-forwarder 0:off 1:off 2:off 3:on 4:on 5:on 6:off 

    Se poi la inizia manualmente, tutto funziona bene. Alcune ricerche mi hanno detto che dovrei avere un file qui (usando run level 3):

     # ls -la /etc/rc3.d/ | grep logstash lrwxrwxrwx 1 root root 28 Nov 5 12:33 S99logstash-forwarder -> ../init.d/logstash-forwarder 

    Quello che è in atto e viene seguito solo da smartd nell'elenco numbersco, quindi non credo che il problema è che i servizi che logstash-forwarder si basano non sono già stati licenziati. Può qualcuno consigliare quanto ulteriormente indagare per perché questo non è in fase di avvio?

    EDIT

    Ho notato che questo problema non è evidente in un sistema CentOS 6, solo su una macchina CentOS 5. Non sono sicuro di quale differenza ciò sia il fatto che i file dei templates di script init sono sostanzialmente gli stessi. Chiunque?

    ULTERIORE EDIT

    Ho dovuto modificare leggermente l'init script, questo era giusto per il fatto che stavo spedendo / var / log / messaggi al mio server logstash, ma lo script init ha fatto registrare i registri logstash ai messaggi, causando un ciclo di feedback tempo inviato un log per logstash aggiungerebbe un registro ai messaggi, che sarebbe quindi inviato a logstash. Così ho cambiato leggermente l'init script:

     #! /bin/sh # # chkconfig: 345 99 99 # description: logstash-forwarder # processname: logstash-forwarder # config: /etc/logstash-forwarder # Source function library. . /etc/init.d/functions NAME=logstash-forwarder DESC="log shipper" PATH=/sbin:/usr/sbin:/bin:/usr/bin PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME DAEMON=/opt/logstash-forwarder/bin/logstash-forwarder DAEMON_ARGS="-config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100" start() { echo -n "Starting $NAME: " daemon --pidfile $PIDFILE "nohup $DAEMON $DAEMON_ARGS >/dev/null 2>&1 &" touch /var/lock/subsys/$NAME echo $(pidofproc $NAME) > $PIDFILE echo return 0 } stop() { echo -n "Shutting down $NAME: " killproc -p $PIDFILE rm -f /var/lock/subsys/$NAME echo return 0 } case "$1" in start) start ;; stop) stop ;; status) status -p $PIDFILE $NAME ;; restart) stop start ;; *) echo "Usage: service $NAME {start|stop|status|restart}" exit 1 ;; esac exit $? 

    Questo script funziona perfettamente su CentOS 6, ma quando riavviamo in CentOS 5 ho la questione spiegata in precedenza, qualsiasi aiuto sarebbe stato molto apprezzato.

    UN ALTRO EDIT

    Ho fatto ulteriori prove e ho scoperto che quando riavvii il computer la logstash-forwarder si avvia, ma il file logstash-forwarder.pid è vuoto, quindi indovino che lo script init sta dicendo che è morto solo perché non riesce a trovare il process come non è notato nel file pid. Il seguente è da subito dopo un riavvio:

     # service logstash-forwarder status logstash-forwarder dead but pid file exists # ps -ef | grep logstash root 3297 1 2 10:20 ? 00:00:02 /opt/logstash-forwarder/bin/logstash-forwarder -config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100 -log-to-syslog root 3722 3324 0 10:22 pts/0 00:00:00 grep logstash # cat /var/run/logstash-forwarder.pid # service logstash-forwarder restart Shutting down logstash-forwarder: [FAILED] Starting logstash-forwarder: [ OK ] # cat /var/run/logstash-forwarder.pid 3748 3297 # ps -ef | grep logstash root 3297 1 2 10:20 ? 00:00:03 /opt/logstash-forwarder/bin/logstash-forwarder -config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100 -log-to-syslog root 3748 1 1 10:22 pts/0 00:00:00 /opt/logstash-forwarder/bin/logstash-forwarder -config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100 -log-to-syslog root 3767 3324 0 10:22 pts/0 00:00:00 grep logstash # service logstash-forwarder restart Shutting down logstash-forwarder: [ OK ] Starting logstash-forwarder: [ OK ] # ps -ef | grep logstash root 3788 1 5 10:22 pts/0 00:00:00 /opt/logstash-forwarder/bin/logstash-forwarder -config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100 -log-to-syslog root 3796 3324 0 10:22 pts/0 00:00:00 grep logstash # cat /var/run/logstash-forwarder.pid 3788 

    Quindi sembra che il servizio inizia, non viene effettuata alcuna voce nel file pid, riavvii il process che ottengo 2 copie del servizio in esecuzione poiché non uccide il primo process, ma la seconda volta che riavvii entrambi i processi vengono uccisi e sono tornato ad avere un process.

    Ora devo capire perché la voce del file pid non è alterata quando si avvia la macchina.

  • path di esportzione / etc / environment
  • ftp virtuale si blocca sul command di elenco
  • Installazione PECL APC - ERRORE: 'make' non rioutput
  • couchdb 1.6.0 dalla sorgente - jsapi.h: presente ma non può essere compilato
  • Cent OS: Come posso distriggersre o ridurre la sovracompensazione della memory e è sicuro di farlo?
  • Cosa significa questo errore del kernel e come devo rispondere?
  • 2 Solutions collect form web for “Logstash Forwarder non si avvia con chkconfig in CentOS 5”

    Ho finito di pubblicare la questione sulla pagina github per il progetto e ho ottenuto una risposta abbastanza rapida che mi ha indicato un'altra questione che è venuto con un altro script di init, che ho implementato. Questo sembra funzionare correttamente.

    Grazie a TrevorH nel canale CentOS IRC per l'assitanza, così come a driskell su github per farmi arrivare al nuovo script init, lo copierò qui sotto per riferimento se qualcuno ha lo stesso problema che ho con quello script sopra:

     #!/bin/bash # chkconfig: 345 80 20 # description: Logstash Forwarder # processname: logstash-forwarder # config: /etc/logstash-forwarder # pidfile: /var/run/logstash-forwarder.pid ### BEGIN INIT INFO # Provides: logstash-forwarder # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop logstash-forwarder # Description: Logstash Forwarder ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions PATH=/sbin:/usr/sbin:/bin:/usr/bin prog=logstash-forwarder DAEMON=/opt/logstash-forwarder/bin/logstash-forwarder pidfile=/var/run/$prog.pid lockfile=/var/lock/subsys/$prog # load defaults [ -e /etc/default/$prog ] && . /etc/default/$prog [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog DAEMON_ARGS="${DAEMON_ARGS:--config /etc/logstash-forwarder -spool-size 100 -log-to-syslog}" start() { echo -n $"Starting $prog: " nohup $DAEMON $DAEMON_ARGS </dev/null >/dev/null 2>&1 & retval=$? pid=$! echo $pid > $pidfile if [ rh_status_q ]; then touch $lockfile success echo fi return $retval } stop() { echo -n $"Stopping $prog: " killproc -p "$pidfile" $prog retval=$? [ -f "$pidfile" ] && rm -f $pidfile echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { stop start } reload() { restart } force_reload() { restart } rh_status() { status -p $pidfile $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; status) rh_status ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" exit 2 esac exit $? 

    Questo è stato modificato leggermente poiché lo script originale aveva .conf nell'istruzione DAEMON_ARGS che non era necessaria su CentOS 5 o 6

    EDIT

    C'erano alcuni problemi con l'init script, ma il committer lo ha aggiornato oggi, per la mia istanza ho anche bisogno di uno dei seguenti file:

     /etc/defaults/logstash-forwarder /etc/sysconfig/logstash-forwarder 

    Soddisfare:

     DAEMON_ARGS="${DAEMON_ARGS:--config /etc/logstash-forwarder/logstash-forwarder.conf -spool-size 100}" 

    Suona come logstash-forwarder non viene correttamente fermato / ucciso durante il process di arresto.

    Avete cercato manualmente di logstash-forwarder utilizzando lo script init e vedere quanto tempo effettivamente richiede che il demone sia completamente bloccato? I logs logstash-forwarder sta monitorando nella tua macchina CentOS 5, grandi file di registro rispetto a quello che la CentOS 6 sta monitorando?

    Come ultima risorsa, è ansible passare un SIGKILL a killproc per assicurarsi che i logstash-forwarder si fermino prima del riavvio.

     killproc -p $PIDFILE -9 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.