Come monitorare e registrare l'utilizzo di processi di memory / CPU nel tempo?

Sto cercando un modo per diagnosticare problemi, come la morte di swap, where un process di memory balooning riempie lo swap e uccide l'intera macchina (come apache).

Sto già utilizzando cactus e posso impostare nagios (anche se preferisco non) o munin ma per quanto posso dire che non possono registrare l'utilizzo del programma individuale – solo lo stato complessivo.

  • Espandere lo spazio su disco su Ubuntu 10.04 (Guest VMWare)
  • Recupera database mysql - mysql / mysqldump fornisce "tabella <database>. <Tablename> non esiste (1146)"
  • I limiti del descrittore di file Ulimit non vengono applicati per un process particolare
  • Software thin-client open source
  • Scopri il server DNS per una connessione DHCP in Linux
  • Ho cancellato libssl.so.10
  • So che posso rotolare uno script che >> a qualche file each 30s, ma vorrei vedere se esiste già una soluzione matura esistente.

    Ancora una volta, idealmente:

    • registrare l'utilizzo di memory dei processi each N secondi
    • registra l'utilizzo della CPU each N secondi
    • grafici di supporto e storia
    • media di supporto – come mysqld ha utilizzato 43% CPU nell'ultimo giorno e media 400MB di memory
    • essere libero e open source

    I nomi dei processi non sono e non dovrebbero essere conosciuti in anticipo: l'idea è di lasciarlo controllare e poi dare un'occhiata ai primi autori.

    Il mio sistema è Linux (OpenSUSE).

  • Eccezioni di Nginx limit_req_zone ip
  • Blocco note / Modifica equivalente per la row di command di Linux
  • Kernel Linux: i pacchetti di networking in output sono bloccati?
  • Come faccio a interpretare i messaggi MCE?
  • Spostamento del tempo ospiti KVM sul riavvio dell'host
  • Linux - Connessione SSH rifiutata a causa della non esistenza di / dev / urandom
  • 11 Solutions collect form web for “Come monitorare e registrare l'utilizzo di processi di memory / CPU nel tempo?”

    Si desidera solo i primi autori, considerare l'esecuzione top con un intervallo relativamente lungo (60 secondi più) in modalità batch. Potrebbe essere necessario eseguire più di una top per catturare i principali autori in più risorse. Ho configurato i sisthemes per eseguire la top per alcuni loops quando una risorsa era stata utilizzata.

    Si consiglia di eseguire sar in modalità batch per catturare l'utilizzo delle risorse. Mi rendo conto che questo è basato su server, ma è utile determinare i momentjs in cui si verificano problemi.

    Esegui munin e abilita le notifiche. Questo può darti la possibilità di entrare e guardare il server che scende. Potrebbe essere ansible correggere il problema prima che scenda.

    Per perdite di memory, un aumento costante dell'uso di swap indica un problema. Una volta ho guardato un server lentamente muoiono per un periodo di giorni. Il servizio problematico è stato un programma che controlla altri processi per perdite di memory. L'amministratore del sistema continuava a insistere sul fatto che l'uso di swap crescente non era un problema, finché il server non rispondeva.

    Potrebbe essere rilevato che la rilevazione di anomalia di cfengine può essere utilizzata per triggersre uno script per catturare lo stato del sistema quando le cose vanno male. Puoi richiedere molte informazioni oltre ai soli processi che utilizzano la maggior parte delle risorse. Per un improvviso afstream di utilizzo è ansible richiedere un elenco di connessioni di networking (per indirizzo non nome). L'utilizzo della memory è utile.

    sysstat è fatto praticamente esattamente per il tuo tipo di scopo.

    Ho usato in cima prima:

    http://freshmeat.net/projects/atop/

    "Atop è un monitor ASCII a schermo integer che è in grado di riportre l'attività di tutti i processi (anche se i processi sono terminati durante l'intervallo), la logging quotidiana dell'attività del sistema e del process per l'analisi a lungo termine, evidenziando le risorse di sistema sovraccaricate utilizzando colors, ecc. A intervalli regolari, mostra l'attività a livello di sistema correlata alla CPU, memory, swap, dischi e livelli di networking e per each process attivo viene mostrato l'utilizzo della CPU, la crescita della memory, la priorità, il nome utente, e uscire dal codice ".

    Hai provato a collectd?
    È molto potente e personalizzabile.
    Ha un sacco di plugin e potrebbe essere integrato con nagios.

    http://collectd.org/features.shtml

    Centreon in cima a Nagios, Nagios accoppiato con NRPE. È quindi ansible scrivere script personalizzati per segnalare i dati in qualsiasi formato che si desidera NRPE. Nagios poi sfoglia i dati da server remoti con NRPE e Centreon fa un bel grafico e aggiunge una tonnellata di flessibilità dell'utente. Lo usiamo su http://beyondhosting.net Ho un model di contenitore VZ con il setup di centreon + nagios già se lo desideri.

    Grafici centreon costruisce hostthenpost.org/tyler/2010-07-23_1719.png

    nmon è un ottimo strumento che fa quello che stai cercando. Sviluppato per AIX e Linux. Produce una tonnellata di output dettagliata e facile da mettere in rapporti. Se lo si esegue, c'è un wiki IBM che dispone di un sacco di documentazione e di utilità aggiuntive per l'analisi dei dati.

    La densità del server fa esattamente quello che descrivi.

    Lo uso su uno dei nostri server di produzione e sono molto felice di questo. La funzionalità top è la capacità di visualizzare i grafici, fare clic su un picco e vedere il consumo di CPU / memory server in quel momento corrente, inclusi tutti i processi in esecuzione. Lo chiamano istantanee .

    È in continuo miglioramento. Una delle caratteristiche più recenti è la rilevazione anomalie , che consente di individuare facilmente le anomalie. È anche ansible impostare vari soglie

    http://studyhat.blogspot.com/2010/08/user-activity-view-processes-display.html

    hanno guardare sopra il piccolo codice di collegamento che ti dà fuori messo di memory CPU ecc.

    Le risposte mi hanno suggerito quando ho fatto una domanda simile:

    Icapan disse :

    Munin è il modo più semplice per get grafici di uptime con il minimo sforzo nell'installazione e nella configuration. Uso anche in cima all'uso di CPU aggregata per qualche process, ma non è quello che hai chiesto.

    David Spillet ha dichiarato :

    Io uso il collectd per registrare il carico di sistema tra un certo numero di altri parametri. Memorizza i dati nei negozi RRD che possono essere grafici e analizzati in altro modo utilizzando i molti strumenti e script disponibili. Utilizzo una versione modificata di questo script per la mia grafica ( output di esempio ).

    Collectd ha plugin per il monitoraggio di un sacco di cose (tutto ciò che viene richiesto e alcune cose in cima), e la creazione di un proprio non dovrebbe essere difficile se hai bisogno di qualcosa di specializzato, quindi fa uno strumento molto flessibile. La configuration dei grafici in rrd.cgi è un process molto manuale, anche se non difficile, anche se si potrebbe trovare uno strumento più conveniente per lavorare con i file RRD gestiti da collectd.

    Potresti anche controllare Nagios o OpenNMS .

    Munin farà tutto ciò di cui hai bisogno fuori dalla scatola senza richiedere Nagios o qualsiasi altro strumento. Sono disponibili RPM per OpenSUSE.

    Forse il buon vecchio OProfile fa quello che ti serve? È un profiler a livello di sistema basato su kernel con solo un piccolo (paio di percento) sovraccarico.

    Poi c'è un eccellente script Perl, PSMon , che ti permette di impostare tutti i tipi di CPU / limiti di memory. Se questi vengono superati, psmon registrerà un errore e / o uccide il process di offesa.

    Questi ultimi non potrebbero produrre rapporti di profilazione, ma se decide di uccidere lo stesso process più e più volte, probabilmente hai trovato il bastardo brutto che stavi cercando. 🙂

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