Szukam sposobu na logowanie i graficzne wyświetlanie wykorzystania procesora i procesora w procesorze Linux w czasie. Ponieważ nie mogłem znaleźć prostego narzędzia (próbowałem zabbix i munin, ale instalacja się nie powiodła) zacząłem pisać skrypt powłoki, aby to zrobićSkrypt powłoki do rejestrowania wykorzystania procesora i procesora linuxowego
Plik skryptowy analizuje dane wyjściowe polecenia top przez awk i loguje do pliku csv plik. To
- domyśla się PID procesów poprzez komendę ps
- Używa top i awk zalogować procesora i pamięci.
Oto jak skrypt wygląda
#!/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}'
Jak
- Drukuj wykorzystanie zasobów dla wielu procesów. Określenie wielu zmiennych we wzorze awk nie działa. Drukuje wykorzystanie dla pierwsze PID (Redis w powyższym skrypcie)
- Drukuj aktualny timestamp podczas drukowania szczegółów zasobu (poprzez dacie + „% T”)
- Drukuj nazwę procesu wraz z wykorzystania zasobów. Redis, Logstash, ElasticSearch lub Kibana w powyższym przypadku
- Przekieruj powyższe polecenia do pliku dziennika. Próbowałem> $ LOG_FILE, ale to nie zadziałało.
Myśli/nakłady?
Z góry dziękuję.
To jest bardziej marginesie niż odpowiedź na pytanie. –
pomocna, ale nie odpowiedź :) –