この記事は2つの部分で構成されています。
キャプチャと記録
24時間、5分ごとにnmonデータを自動的にキャプチャしてからファイルを回転させたいと思います。以下のコマンドを実行し、正午12時にcronを起動する必要があるとします。
nmon -s 300 -c 288
Q1:プロセスが翌日まで実行されないようにし、新しいプロセスを開始するにはどうすればよいですか?
Q2:誰かが手動でファイルを実行し、ログファイルを上書きしないようにファイル名を指定できますか? (例:ホスト名_YYYYMMDD.nmon)
データベースのインポート
ファイルが作成されたら、それをmysqlデータベースにインポートしたいと思います。
シェルスクリプトでこれを行うことができるのか、他の言語(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
答え1
sフラグとcフラグの組み合わせを使用すると、nmonがバッチモードで実行される合計期間を制御できます。以下は、24時間にわたってnmonを実行し、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形式をサポートしていないツールにファイルをインポートできます。