当前位置:首页 > 操作系统 > Linux

linux – nmon日志记录,轮换和存储到数据库

这篇文章有两个部分.

捕获&记录

我想每隔5分钟自动捕获nmon数据24小时,然后旋转文件.我假设我需要运行下面的命令并让cron在凌晨12:00开始.

nmon -s 300 -c 288

问题1:如何在第二天开始并开始新流程之前确保此流程不会继续运行?

Q2:我可以指定文件名以防止有人手动运行它并覆盖我的日志文件吗? (即hostname_YYYYMMDD.nmon)

数据库导入

一旦文件被写入,我想将其导入到mysql数据库中.

我不确定这是否可以用shell脚本完成,或者我是否需要使用像Python这样的其他语言.

我开始编写下面的脚本,但我似乎陷入了几个方面.请随意修改到目前为止我所写的任何错误.

脚本

#!/bin/bash
# nmon_log_rot_db.sh

# Variables

# nmon
NMON = '/usr/local/bin/nmon/nmon'
# Log Directory
LOGDIR = '/var/log/nmon/'
# Hostname
HOST = '/etc/hostname'
# Date
DATE = '/usr/bin/date +%y%m%d'
# File Name
FILE = ${LOGDIR}/${HOST}-${DATE}.nmon

# Kill current nmon process
command to kill nmon_log_rot_db.sh
???

# Log to Database
# connect to database
HOSTNAME = mysqlhost;
DBUSER = dbuser;
DBPASS = dbpass;
DBNAME = dbname;


# network table
ROW_ID|datetime|hostname|iface|rx KB/s|tx KB/s

# cpu table
ROW_ID|datetime|hostname|USER%|SYS%|WAIT%|IDLE

# mem table
ROW_ID|datetime|hostname|type (system or swap)|Total|Free|Used

# disk table
ROW_ID|datetime|hostname|disk_dev|busy|read|write

# Delete old log file
rm ${OLD_FILE}

# Start nmon
${NMON} -F ${FILE} -s 300 -c 288

解决方法:

s和c标志的组合允许您控制nmon在批处理模式下运行的总时间.以下是运行nmon 24小时的示例,每60秒记录一次统计信息.

0 0 * * * /opt/nmon/nmon -f -s 60 -c 1440 -T -m /opt/nmon/nmon_logs/

在您的情况下,cron表达式将记录如下:

0 0 * * * /opt/nmon/nmon -f -s 300 -c 288 -T -m /opt/nmon/nmon_logs/

nmon二进制文件会自动将日期附加到导出的文件中,因此您不必担心文件名冲突,但是您可能希望确保在一段时间后删除旧文件.

默认命名约定是hostname_yyMMdd_HHmm.log,生成如下文件:NURSWGHBS001_151113_2300.log

然后,您可以将文件导入任何工具,而不是支持nmon格式,这是非常特殊的.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐