탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
시스템 관리 설명서: 고급 관리 Oracle Solaris 10 8/11 Information Library (한국어) |
Oracle Solaris OS의 시스템 계산 소프트웨어는 사용자 연결 시간, 프로세스에 부과된 CPU 시간 및 디스크 사용량에 대한 데이터를 수집하고 기록할 수 있는 일련의 프로그램입니다. 이 데이터를 수집한 후에는 보고서를 생성하고 시스템 사용량에 대한 요금을 부과할 수 있습니다.
매일 또는 매월 단위로 시스템 계산을 사용할 수 있습니다. 또는 사용자별 디스크 사용량을 추적할 수 있습니다.
계산 프로그램을 사용하여 다음 작업을 수행할 수 있습니다.
시스템 사용량 모니터
성능 문제를 찾아서 수정하기
시스템 보안 유지
시스템 계산 프로그램을 설정한 후에는 대부분 스스로 실행됩니다.
먼저 계산 시작 스크립트를 루트의 crontab 파일에 입력하면 자동 계산이 설정됩니다. 그러면 계산 시작 스크립트를 cron 명령에 의해 자동으로 시작할 수 있습니다.
다음 개요는 시스템 계산 프로세스를 설명합니다.
시스템 시작과 종료 사이에, 시스템 사용에 대한 원시 데이터(예: 사용자 로그인, 실행 프로세스, 데이터 저장소)가 계산 파일에 수집됩니다.
정기적으로(대개 하루에 한 번), /usr/lib/acct/runacct 스크립트가 다양한 계산 파일을 처리하고 누적 요약 파일과 일별 계산 보고서를 생성합니다. 그 다음, /usr/lib/acct/prdaily 스크립트가 일별 보고서를 인쇄합니다.
runacct 스크립트에 대한 자세한 내용은 runacct 스크립트를 참조하십시오.
매월, monacct 스크립트를 실행하여 누적된 runacct 요약 파일을 처리하고 인쇄할 수 있습니다. monacct 스크립트로 생성된 요약 보고서는 매월 단위로 또는 다른 회계 기간에 사용자 요금을 청구하는 효율적인 수단입니다.
시스템 계산 소프트웨어는 데이터를 요약 파일과 보고서로 구성하는 C 언어 프로그램 및 셸 스크립트를 제공합니다. 이러한 프로그램은 /usr/lib/acct 디렉토리에 있습니다. 계산 보고서는 /var/adm/acct 디렉토리에 있습니다.
일별 계산을 통해 다음 4가지 유형의 감사를 수행할 수 있습니다.
연결 계산
프로세스 계산
디스크 계산
요금 계산
사용자가 로그인한 시간 길이
tty 회선 사용 현황
시스템의 재부트 횟수
계산 소프트웨어가 설정/해제된 횟수
이 연결 세션 정보를 제공하기 위해 시스템이 다음 데이터를 저장합니다.
시간 조정 레코드
부트 시간
계산 소프트웨어가 설정/해제된 횟수
실행 레벨의 변경 사항
사용자 프로세스 만들기(login 프로세스와 init 프로세스)
프로세스의 종료
이러한 레코드는 date, init, login, ttymon, acctwtmp와 같은 시스템 프로그램 출력에서 생성됩니다. 이들은 /var/adm/wtmpx 파일에 저장됩니다.
wtmpx 파일의 항목은 다음 정보를 포함할 수 있습니다.
로그인 이름
장치 이름
프로세스 ID
항목 유형
입력 시간을 나타내는 시간 기록
프로세스 계산을 통해 시스템에서 실행되는 각 프로세스에 대해 다음 데이터를 추적할 수 있습니다.
프로세스를 사용하는 사용자의 사용자 ID 및 그룹 ID
프로세스의 시작 시간 및 경과 시간
프로세스의 CPU 시간(사용자 시간과 시스템 시간)
프로세스에서 사용된 메모리 양
프로세스에서 실행된 명령
프로세스를 제어하는 tty
프로세스를 종료할 때마다 exit 프로그램이 이 정보를 수집하여 /var/adm/pacct 파일에 기록합니다.
디스크 계산을 통해 각 사용자가 디스크에 보관한 파일에 대해 다음 데이터를 수집하고 형식을 지정할 수 있습니다.
사용자의 사용자 이름 및 사용자 ID
사용자 파일에서 사용된 블록 수
이 데이터는 /var/spool/cron/crontabs/root 파일에 추가한 항목으로 결정된 간격마다 /usr/lib/acct/dodisk 셸 스크립트에 의해 수집됩니다. 이번에는 dodisk 스크립트가 acctdisk 및 acctdusg 명령을 호출합니다. 이러한 명령은 로그인 이름별로 디스크 사용량을 수집합니다.
주의 - dodisk 스크립트를 실행하여 수집된 정보는 /var/adm/acct/nite/disktacct 파일에 저장됩니다. 다음에 dodisk 스크립트를 실행할 때 이 정보를 겹쳐 씁니다. 따라서 dodisk 스크립트를 같은 날 두 번 실행하지 않도록 주의하십시오. |
acctdusg 명령이 무작위로 쓰여진 파일에 요금을 과다 청구하여 파일에 손해를 입힐 수 있습니다. 이 문제는 acctdusg 명령이 파일 크기를 결정할 때 파일의 간접 블록을 읽지 않기 때문에 발생합니다. 오히려 acctdusg 명령은 파일의 inode에서 현재 파일 크기 값을 검사하여 파일 크기를 결정합니다.
chargefee 유틸리티는 사용자에 제공된 특수 서비스의 과금을 /var/adm/fee 파일에 저장합니다. 특수 서비스는 파일 복원 같은 것입니다. 파일의 각 항목은 사용자 로그인 이름, 사용자 ID, 요금으로 구성됩니다. 이 파일을 매일 runacct 스크립트로 검사하여 새 항목을 계산 레코드로 병합합니다. 사용자 요금 청구를 위한 chargefee 스크립트 실행 지침은 사용자 요금을 청구하는 방법을 참조하십시오.
다음은 일별 계산의 작동 원리를 단계별로 요약한 것입니다.
시스템을 다중 사용자 모드로 전환하면 /usr/lib/acct/startup 프로그램이 실행됩니다. startup 프로그램이 일별 계산을 호출하는 여러 다른 프로그램을 실행합니다.
acctwtmp 프로그램이 "boot" 레코드를 /var/adm/wtmpx 파일에 추가합니다. 이 레코드에서 시스템 이름이 wtmpx 레코드의 사용자 이름으로 표시됩니다. 다음 표는 원시 계산 데이터의 수집 방법과 저장 위치를 요약한 것입니다.
|
-on 옵션으로 호출된 turnacct 스크립트가 프로세스 계산을 시작합니다. 특별히 turnacct 스크립트가 accton 프로그램을 /var/adm/pacct 인수와 함께 실행합니다.
제거 셸 스크립트가 runacct 스크립트에 의해 sum 디렉토리에 남은 저장된 pacct 및 wtmpx 파일을 "정리"합니다.
login 및 init 프로그램이 /var/adm/wtmpx 파일에 레코드를 작성하여 연결 세션을 기록합니다. 날짜 변경 사항(날짜를 인수와 함께 사용)도 /var/adm/wtmpx 파일에 기록됩니다. acctwtmp 명령을 사용한 재부트 및 종료도 /var/adm/wtmpx 파일에 기록됩니다.
프로세스가 끝날 때 커널이 /var/adm/pacct 파일에 acct.h 형식을 사용하여 프로세스당 하나의 레코드를 작성합니다.
매 시간마다, cron 명령이 ckpacct 스크립트를 실행하여 /var/adm/pacct 파일의 크기를 검사합니다. 파일이 500개 블록(기본값)을 넘으면 turnacct switch 명령이 실행됩니다. (프로그램이 pacct 파일을 pacctn 파일로 이동하고 새 파일을 만듭니다.) 이러한 레코드를 처리할 때 실패가 발생한 경우 runacct 스크립트를 재시작하려는 순간 여러 개의 작은 pacct 파일 사용의 장점이 발휘됩니다.
runacct 스크립트가 매일 밤 cron 명령으로 실행됩니다. runacct 스크립트가 계산 파일을 처리하여 사용자 이름별 명령 요약과 사용량 요약을 생성합니다. 계산 파일 /var/adm/pacctn , /var/adm/wtmpx, /var/adm/fee, /var/adm/acct/nite/disktacct가 처리됩니다.
/usr/lib/acct/prdaily 스크립트가 runacct 스크립트에 의해 매일 단위로 실행되어 /var/adm/acct/sum/rprtMMDD 파일에 일별 계산 정보를 기록합니다.
monacct 스크립트를 매월 단위로(또는 모든 회계 기간의 끝과 같이 사용자가 지정한 간격마다) 실행해야 합니다. monacct 스크립트가 runacct 스크립트에 의해 매일 업데이트된 sum 디렉토리에 저장된 데이터를 기반으로 하는 보고서를 만듭니다. 보고서를 만든 후에 monacct 스크립트가 sum 디렉토리를 "정리"하여 새로운 runacct 데이터를 위해 디렉토리의 파일을 준비합니다.
shutdown 명령을 사용하여 시스템을 종료하면 shutacct 스크립트가 자동으로 실행됩니다. shutacct 스크립트가 /var/adm/wtmpx 파일에 이유 레코드를 기록하고 프로세스 계산을 끕니다.