이 기사는 두 부분으로 구성되어 있습니다.
캡처 및 기록
24시간 동안 5분마다 nmon 데이터를 자동으로 캡처한 다음 파일을 회전하고 싶습니다. 아래 명령을 실행하고 정오 12시에 cron을 시작해야 한다고 가정합니다.
nmon -s 300 -c 288
질문 1: 프로세스가 다음 날까지 계속 실행되지 않도록 하고 새 프로세스를 시작하려면 어떻게 해야 합니까?
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 형식을 지원하지 않는 도구로 파일을 가져올 수 있습니다.