【发布时间】:2013-05-01 05:06:24
【问题描述】:
我正在寻找一种方法来记录并以图形方式显示 Linux 进程随时间的 CPU 和 RAM 使用情况。由于我找不到一个简单的工具(我尝试了 zabbix 和 munin,但安装失败)我开始编写一个 shell 脚本来这样做
脚本文件通过awk解析top命令的输出,并记录成csv文件。它
- 通过ps命令找出进程的pid
- 使用 top 和 awk 记录 CPU 和内存使用情况。
这是脚本的样子
#!/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}'
我该怎么做
- 打印多个进程的资源使用情况。指定多个 awk 模式中的变量不起作用。它打印使用情况 第一个pid(上面脚本中的redis)
- 打印资源详细信息时打印当前时间戳(通过日期+“%T”)
- 打印进程名称以及资源使用情况。上述案例中的 Redis、Logstash、ElasticSearch 或 Kibana
- 将上述命令输出重定向到日志文件。我试过 > $LOG_FILE 但没有用。
想法/输入?
提前致谢。
【问题讨论】: