Come specificare il file di log per memcached su RHEL / CentOS

Sto eseguendo memcached 1.4.5 su RHEL5.5. Ho installato questo utilizzando yum che ha installato lo script standard memcached in /etc/init.d e il file di configuration in /etc/sysconfig/memcached :

 PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="256" OPTIONS="" 

Tutto funziona bene con un'exception – non riesco a capire come specificare la posizione del file di registro. Vorrei mettere il file di registro in /var/log ma l'aiuto né il manuale specificano come farlo.

È ansible get questo risultato utilizzando gli script di base?

  • Ottenere OTRS per lavorare con XAMPP
  • Gestione della configuration tramite RPM?
  • Perché la mia connessione MPIO con la SAN è limitata a 1 Gbps quando si utilizza Linux?
  • Python 3,0 RPM per CentOS 5 (RHEL 5)
  • tasti ssh + RHEL5
  • Come posso controllare dalla row di command se è richiesto un riavvio su RHEL o CentOS?
  • Problema durante l'installazione del pacchetto utilizzando RPM
  • RHEL5: impedire l'installazione di pacchetti i386 su sisthemes a 64 bit?
  • 4 Solutions collect form web for “Come specificare il file di log per memcached su RHEL / CentOS”

    Un suggerimento per creare un registro di debug per memcached in un post precedente:

    Supponendo che nessuno utente abbia permessi di scrittura per / tmp, prova la seguente, rilevando la posizione di 2:


    memcached -d -m 3072 -l localhost -p 11211 -u nessuno -v 2 >> / tmp / memcached.log

    Se nessuno utente può scrivere a / var / log allora penso che sia ansible scambiare / tmp con / var / log nel command precedente.

    Modificare la linea OPTIONS in /etc/sysconfig/memcached aggiungendo ">> /var/log/memcached 2>&1" alla fine. IE

     OPTIONS="-vv >> /var/log/memcached 2>&1" 

    L'utilizzo del 2>&1 >> logfile di 2>&1 >> logfile nel 2>&1 >> logfile OPTIONS o init non è saggio, poiché il file di registro non verrà riaperto quando si verifica la rotazione del registro, supponendo che sia stato posto qualcosa in atto per verificarsi. L'implicazione di questo è che si termina con file di registro ruotati (vuoto, a seconda delle impostazioni di rotazione) ei dati effettivi del registro verranno scritti in un file per il quale non esiste alcuna voce di directory, il che significa che verrà eliminata quando il file è chiuso. Perché il file di registro venga chiuso quando è stato progettato e quindi ruotato in modo sicuro, è necessario riavviare memcached (cache di addio!).

    Utilizzare invece qualcosa come il command logger (1) per accedere a syslog (con una particolare funzionalità come local1 e avere le regole del syslog in modo appropriato (hello timestamps!),

     OPTIONS=" 2>&1 | logger -i -p local1.info -t memcached" 

    Una regola per inoltrare i messaggi in modo specifico nel syslog è opzionale, ma se utilizzi rsyslog, questo aiuterà:

     local1.debug /var/log/memcached/memcached.log 

    Non dimenticate una regola logrotate e perché stai utilizzando il logger, non devi preoccuparti di chiudere i file di registro, perché syslog lo farà per te.

     # cat /etc/logrotate.d/memcached /var/log/memcached/memcached.log { daily rotate 3 dateext missingok create 0640 root root compress delaycompress postrotate #/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP `cat /var/run/syslogd.pid` endscript } 

    FWIW, la situtazione è diversa per i sisthemes EL7 (systemd)

    Per i sisthemes systemd, si occuperà di raccogliere l'output di stderr e di registrare ciò, quindi se includete solo -v (ancora molto silenzioso) o -vv (troppo verbose), allora puoi query quei log con journalctl:

     # journalctl --since '2012-01-01' _SYSTEMD_UNIT=memcached.service -- Logs begin at Fri 2015-07-10 11:00:21 NZST, end at Mon 2015-08-03 23:36:49 NZST. -- Aug 03 23:36:49 HOSTNAME memcached[4318]: slab class 17: chunk size 3632 perslab 288 Aug 03 23:36:49 HOSTNAME memcached[4318]: slab class 18: chunk size 4544 perslab 230 ... Aug 03 23:36:49 HOSTNAME memcached[4318]: slab class 42: chunk size 1048576 perslab 1 Aug 03 23:36:49 HOSTNAME memcached[4318]: <26 server listening (auto-negotiate) Aug 03 23:36:49 HOSTNAME memcached[4318]: <27 send buffer was 212992, now 268435456 Aug 03 23:36:49 HOSTNAME memcached[4318]: <27 server listening (udp) Aug 03 23:36:49 HOSTNAME memcached[4318]: <27 server listening (udp) Aug 03 23:36:49 HOSTNAME memcached[4318]: <27 server listening (udp) Aug 03 23:36:49 HOSTNAME memcached[4318]: <27 server listening (udp) 

    Sebbene non trovi questi registri esistenti da nessuna parte in / var / log /; i registri vengono tenuti in un formato binario in modo da poter usare il file journalctl --output json ... se volete. Per ulteriori informazioni, vedere /etc/systemd/journald.conf.

    Dall'inizio alla fine (anche se per i server RHEL7 / systemd)

     # cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -vv" # cat /usr/lib/systemd/system/memcached.service [Unit] Description=Memcached Before=httpd.service After=network.target [Service] Type=simple EnvironmentFile=-/etc/sysconfig/memcached ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS [Install] WantedBy=multi-user.target # cat /etc/systemd/system/memcached.service.d/local.conf [Service] StandardOutput=syslog StandardError=syslog SyslogIdentifier=memcached SyslogFacility=local1 SyslogLevel=debug SyslogLevelPrefix=false # systemctl daemon-reload # systemctl restart memcached.service # systemctl status memcached memcached.service - Memcached Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled) Drop-In: /etc/systemd/system/memcached.service.d └─local.conf <---------- NOTE Active: active (running) since Tue 2015-08-04 01:07:50 NZST; 7s ago Main PID: 3842 (memcached) CGroup: /system.slice/memcached.service └─3842 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024 -l 127.0.0.1 -vv ... // Note: rsyslogd uses its imjournal module to read logs from journald; // make sure you have this configured if you've brought your rsyslog // config from a previous version of RHEL # echo "local1.debug /var/log/memcached/memcached.log" >> /etc/rsyslog.d/memcached.conf # mkdir /var/log/memcached # systemctl restart rsyslog.service # systemctl status rsyslog.service // Don't forget log rotation # cat /etc/logrotate.d/memcached /var/log/memcached/memcached.log { daily rotate 3 dateext missingok create 0640 root root compress delaycompress postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } 

    Memcached non fornisce un'opzione di row di command per la posizione del file di registro. Su Ubuntu, c'è uno script wrapper denominato start-memcached che analizza un /etc/memcached.conf che contiene un parametro di logfile. Purtroppo, questo non sembra esistere su CentOS / RHEL. Penso che dovresti modificare lo script init per realizzare ciò che vuoi. Sembra che sia un po 'di sorveglianza – un googling rapido dimostra che altre persone hanno anche questo problema, quindi forse la sua cosa che verranno risolti presto (o sono già state risolte e non ne sono a conoscenza). Oppure potresti provare gli script di avvio da Ubuntu.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.