Sto cercando un modo per registrare e visualizzare graficamente l'utilizzo della CPU e della RAM dei processi di Linux nel tempo. Poiché non sono riuscito a trovare uno strumento semplice (ho provato zabbix e munin ma l'installazione non è riuscita) ho iniziato a scrivere uno script di shell per farloScript di shell per la registrazione di cpu e l'utilizzo della memoria di un processo linux
Il file di script analizza l'output del comando top tramite awk e registra in un csv file. Si
- figure il PID dei processi attraverso comando ps
- Usi superiore e awk per accedere CPU e della memoria.
Ecco come lo script sembra
#!/bin/sh
#A script to log the cpu and memory usage of linux processes namely - redis, logstash, elasticsearch and kibana
REDIS_PID=$(ps -ef | grep redis | grep -v grep | awk '{print $2}')
LOGSTASH_PID=$(ps -ef | grep logstash | grep -v grep | awk '{print $2}')
ELASTICSEARCH_PID=$(ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}')
KIBANA_PID=$(ps -ef | grep kibana | grep -v grep | awk '{print $2}')
LOG_FILE=/var/log/user/usage.log
echo $LOG_FILE
top -b | awk -v redis="$REDIS_PID" -v logstash="$LOGSTASH_PID" '/redis|logstash/ {print $1","$9","$10","$12}'
Come faccio
- Stampa l'utilizzo delle risorse per più processi. La specifica di più variabili nel modello awk non funziona. Esso stampa l'utilizzo per i primi PID (Redis Nello script precedente)
- Stampa timestamp corrente durante la stampa i dettagli delle risorse (attraverso date + "% T")
- Stampa il nome del processo con l'utilizzo delle risorse. Redis, Logstash, ElasticSearch o Kibana nel caso precedente
- Reindirizzare i comandi sopra riportati in un file di registro. Ho provato> $ LOG_FILE ma non ha funzionato.
Pensieri/Input?
Grazie in anticipo.
Questo è più di un lato nota che una risposta alla domanda. –
utile ma non una risposta :) –