Skip to content

서버로그 관리

조회 수 22171 추천 수 0 2009.09.20 11:08:20

서버 관리

1. 로그

  • 로그의 종류
    • Solaris 2.X (11가지)
      • wtmpx/utmpx, wtmp/utmp, syslog, sulog, pacct, authlog, messages, loginlog, lastlog, access_log, error_log
    • HP-UX 9.X 이상 (9가지)
      • wtmp/utmp, btmp, syslog, sulog, pacct, messages, lastlog, access_log, error_log, shutdownlog
    • IBM AIX (9가지)
      • wtmp/utmp, syslog, sulog, pacct, messages, lastlog, access_log, error_log, failedlogin
    • Linux의 로그 (8가지)
      • wtmp/utmp, btmp, secure, pacct, messages, lastlog, access_log, error_log
    • Compaq Tru64 (9가지)
      • wtmp/utmp, syslog, pacct, messages, loginlog, lastlog, access_log, error_log, sialog
    • 1.1. utmp

      • utmp는 현재 로그인해 있는 사용자에 대한 현재 상태의 정보가 저장되어 있다.
      • wwho가 utmp를 참조한다.
        • w 명령

        $ w

         01:57:03 up 3 days, 15:03,  2 users,  load average: 0.02, 0.01, 0.00
         USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
         test     pts/0    192.168.1.25      00:27    1:07   0.21s  0.21s -bash
         test     pts/1    192.168.1.24      00:38    0.00s  0.29s  0.00s w
        • who 명령

        $ who

        test    pts/0        2008-10-31 00:27 (192.168.0.1)
        test    pts/1        2008-10-31 00:38 (192.168.0.1)

        1.2. wtmp

        • wtmp는 지금까지 사용자들의 로그인, 로그아웃 히스토리를 모두 누적 정보가 저장된다.
        • wtmp는 /var/log/wtmp 형태로 binary로 저장된다.
          • 시스템의 셧다운, 부팅 히스토리까지 포함한 중요한 로그.
          • wtmp는 last를 사용하여 확인할 수 있다.
          $  last | more
          
          유저        터미널/서비스  IP 주소                    로그인-로그아웃 시간 (기간)
          
          test       pts/17       192.168.1.25           4월  3일 09:14   로그인되어 있습니다
          test       pts/14       192.168.1.21           4월  3일 09:07 - 09:39  (00:32)
          test       pts/14       192.168.1.11           4월  2일 22:27 - 22:31  (00:04)
          test       pts/13       192.168.1.11           4월  2일 22:24 - 09:34  (11:09)
          test       pts/13       192.168.1.44           4월  1일 20:47 - 00:05  (03:18)
          test2      ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          test       ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          test2      ftp          192.168.1.30           4월  1일 16:25 - 16:25  (00:00)
          • 재부팅된 시간을 알아보려면… (id부분이 reboot로 되어 있기 때문)
          $ last reboot
          
          reboot    system boot                   Thu Feb  2 21:52
          reboot    system boot                   Thu Sep 22 17:55
          reboot    system boot                   Wed Jul 13 13:11
          reboot    system boot                   Sat Jun 25 11:38
          reboot    system boot                   Sat Jun 25 10:21
          reboot    system boot                   Thu Dec 23 19:08
          reboot    system boot                   Sun Dec  5 22:06
          • 그 밖에 last의 인자를 id, 서비스명 등으로 줄 수 있다. (뒤의 -5 는 5개까지 보이라는 의미이다.)
          $ last test2 -5

          1.3. btmp

          • 리눅스 시스템에서는 실패한 로그인 시도에 대해서 btmp 파일에 로그를 남긴다.
            • 로그인 실패에 대한 기록은 brute-force 공격과 같은 패스워드 시스템에 대한 공격에 대해 로그를 남길 수 있다.
            • /var/log/btmp로 저장되며, binary 형태의 파일이다.
            • 일반적으로 이 파일은 생성되어 있지 않은 관계로 직접 생성 시켜주어야 한다.
            • System V 계열의 유닉스에서는 로그인 시도의 실패 기록을 loginlog에 기록한다.
              • 이 파일도 생성해 주어야 한다.
              • lastb를 사용하여 확인 가능하다.
              $ lastb
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)
              root pts/0 211.60.207.244 Sun May 13 00:47 - 00:47 (00:00)

              1.4. lastlog

              • lastlog에는 모든 사용자의 사용자이름, 포트번호(터미널), 최근 접근 시간이 저장된다.
                • lastlog은 /var/log/lastlog 파일로 저장되며, 바이너리 파일로 되어 있다.
              • lastlog 명령어을 통해 정보를 확인할 수 있다.
              • $ lastlog
                
                  Username     Port                    From          Latest
                 root          tty1                                 Fri May 11 00:50:03 +0900 2001
                 bin           **Never logged in**
                 daemon        **Never logged in**
                 .
                 .
                 overhead       tty2                                Fri May 11 03:08:30 +0900 2001
                • 옵션으로 -t (시간), -f (파일), -u (username) 등을 사용할 수 있다.

                1.5. message

                • 리눅스 로그 파일에서 가장 중요한 부분으로서 로그인 기록부터 디바이스 정보,시스템 설정오류, 파일 시스템, 네트워크 세션 기록 등 많은 다양한 정보를 포함하고 있다.
                • 또한 침입자의 공격 형태가 어느 정도 기록되어 진다.
                • /var/log/message에 저장된다.
                • May 14 20:07:28 localhost sshd[12943]: Did not receive identification string form 195.238.160.231.
                  May 14 20:16:49 localhost sshd[861]: Received signal 15; terminating.
                  May 15 03:16:54 localhost sshd[861]: Server listening on 0.0.0.0 prot 22
                  May 15 03:16:54 localhost sshd[861]: Gennerating 768 bit RSA key.
                  May 15 03:16;55 localhost sshd[861]: RSA key generation complete.
                  May 15 03:22:04 localhost xinetd[885]: START: telnet pid=1157 from=211.60.207.194
                  May 15 03:22:04 localhost sshd[1160]: Did not receive identification string form
                  May 15 04:35:27 localhost xinetd[885]: START: telnet pid=2088 from=152.142.100.2 
                  May 15 04:37:18 localhost xinetd[885]: START: telnet pid=2184 from=152.142.100.2
                  May 15 04:42:35 localhost xinetd[885]: START: telnet pid=2445 from=152.142.100.2
                  May 15 05:00:49 localhost xinetd[885]: START: telnet pid=2694 from=152.142.100.2
                  May 16 04:32:51 localhost proftpd[2763] localhost
                  • messages 파일에는 데몬들의 정보들이나 시스템의 다양한 에러 등 방대한 양의 정보들을 기록하게 된다.
                    • 그러므로 특정 정보를 grep으로 필터링해서 얻는 것이 편할 수 있다.
                  • ?- MARK ?- 라는 표시는 일정 시간 간격으로 출력하는 로그이다.
                  • 2. 모니터링 프로그램

                    • 시스템 모니터링 분야와 관련 유틸
                      • sar, iostat, nmap, netcat, ntop 등은 별도로 설치를 해야 하는 모니터링 프로그램이다.
                    • CPU : top, ps, uptime, vmstat, pstree, iostat, sar
                    • 메모리 : free, vmstat, sar
                    • 디스크 I/O : df, du, quota, iostat, sar
                    • 네트워크 : ping, netstat, traceroute, tcpdump, nmap, netcat, ntop
                    • 파일 : lsof
                    • 2.1. 부팅 후 경과 시간 및 프로세스 CPU 사용률 : uptime

                      • 리눅스/솔라리스 시스템의 부팅후 경과된 시간을 초단위로 얻어옵니다.
                      • 부팅시간은 /proc/uptime의 값을 이용해서 계산합니다.
                      • 부팅경과 시간은 단순히 시스템의 부팅 시간을 얻어오는 것 외에도 프로세스의 CPU사용율 등을 계산하기 위한 용도로도 사용됩니다.
                      • 2.2. 프로세스 모니터 : ps, top

                        • ps와 top을 이용하여 모니터링을 할 경우 먼저 살펴보아야 하는 것이 디스크 액세스나 페이징을 기다리고 있는 프로세스가 있는가이다.
                        • top
                          • S : 인터럽트가 허용되는 sleep 상태
                          • D : 인터럽트가 불가능한 sleep 상태로 page fault 등을 의미하며 page fault 등을 통해 I/O중인 상태
                          • W : 상주하는 페이지가 없다는 것을 의미하며 프로세스가 스왑아웃된 상태
                            • 프로세스의 메모리 구조는 텍스트, 데이터, 스택 등으로 이루어져 있다.
                              • SIZE 는 코드, 데이터, 스택을 합친 크기를 보여준다.
                              • 가상 메모리는 커널에서 자동으로 조절하기 때문에 문제가 생길 일은 없으며 RSS를 통해서 실제 물리적 메모리에서 사용하는 메모리 양을 보여준다.
                              • ps
                                • /proc/PID/status
                                • VmSize : 가상메모리를 포함한 전체 사용량
                                • VmRSS : 물리적 메모리 사용량
                                • 2.3. 시스템 성능의 자세한 정보 : vmstat

                                  • 시스템 성능에 대한 보다 자세한 정보 확인
                                  • 프로세스, 메모리, 스왑, 입출력, 시스템 및 CPU 활동 상황에 대한 정보를 한줄로 출력한다.
                                    • vmstat에서 나오는 첫 줄은 부팅 이후의 각 통계치에 대한 평균값을 보여 준다.
                                      • r은 현재 실행중인 프로세스 수
                                      • b는 인터럽트가 불가능한 sleep 상태에 있는 프로세스로 I/O 처리를 하는 동안 블럭 처리된 프로세스
                                      • w는 강제로 스왑아웃된 프로세스 수
                                      • si, so는 스왑인, 스왑아웃 (스왑아웃필드(so)는 항상 0에 가까워야 한다.)
                                        • 스왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다.
                                        • 그러나 일정 간격을 두고 주기적으로 스왑아웃이 발생하는 것은 정상적인 일이다.
                                        • b의 수치가 높은 경우 I/O작업을 위해 CPU가 계속 대기 상태로 있는 경우이다.
                                          • 이런 경우에는 디스크 I/O 문제를 확인해야 한다.

                                        2.4. 여유 메모리 확인 : free

                                        • 여유가 있는 메모리 :free+buffers+cached

                                        2.5. 열린 파일 확인 : lsof

                                        • LSOF는 'List Open File'의 약자로, 해당 System에서 구동되고 있는 프로세스들에 의해서 열려진 파일들을 확인 할 수 있는 툴이다.
                                        • 시스템의 의심스러운 프로세스에 대한 확인이 용이하고, 설치가 비교적 쉬워 많이 이용되고 있다.
                                        • 2.6. 상세 디스크 IO 확인 : iostat, sar

                                          (다운로드 : ftp://metalab.unc.edu/pub/Linux/system/status/sysstat-4.0.1-1.i386.rpm)

                                          • iostat
                                            • Tps : 해당 디바이스에 대한 초당 전송 숫자인데, 여기서는 디바이스에 대한 I/O 요청을 말한다
                                            • Blk_read/s : 해당 디바이스에서 초당 읽은 블럭 수
                                            • Blk_wrtn/s : 해당 디바이스에서 초당 기록한 블럭 수
                                            • Blk_read : 전체 읽은 총 블럭 수
                                            • Blk_wrtn : 전체 기록한 총 블럭 수
                                            • sar
                                              • 모니터링 할 수 있는 것들
                                                • I/O 전송량, 페이징, 프로세스 생성 숫자, 블락 디바이스 활동, 인터럽트, 네트워크 통계, run 큐 및 시스템 부하 평균, 메모리와 스왑 공간 활용 통계, 메모리 통계, CPU 이용도, 특정 프로세스에 대한 CPU 이용도, <inode, 파일, 기타 커널 테이블에 대한 상태>, 시스템 스위칭 활동(context switch), 스와핑 통계, 특정 프로세스 통계, 특정 프로세스의 자식 프로세스 통계, TTY 디바이스 활동
                                              • 메모리 규모에 맞게 최대 열 수 있는 파일 갯수 (file-max)와 아이노드 개수를 조정하는데 sar를 이용하여 실제 얼마나 파일 핸들을 사용했는지 최대 file-max와 실제 사용한 파일 핸들의 비율 등도 통계를 낼 수가 있다.
                                              • 이러한 통계를 주기적으로 내어 적절하게 활용하기 바란다.
                                                • 참고로 최대 파일 핸들의 경우 4M당 256개로 잡아주고 아이노드 개수는 이의 3-4배 정도로 설정을 한다.
                                                • file-max 는 /proc/sys/fs/file-max 를 이용하여 설정하며 /proc/sys/fs/file-nr 파일을 이용 현재 할당된 파일수를 확인할 수 있다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/2656/c07/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

rsync 에러

리눅스에서 일정기간 이상된 파일 삭제하기

FreeBSD CPU 개수 확인 등.(mptable, sysctl)

콘솔에 남는 메세지로그파일로 남기기

vim 편집기 색상변경

ethtool 사용법

grep 옵션~!

find 찾아바꾸기

서버로그 관리

MRTG 로그 데이터 시간확인하기

실시간 접근정보 확인

iscsi-target 설정 에러 모음

hdparm - 하드디스크의 자세한 정보 보기

아파치 모듈 mod_status file

특정 디랙토리 인증걸기 htpasswd, htaccess

syslogd : 콘솔에 남는 메세지 로그파일로 남기기

apm설치시 configure error

리눅스 언어 인코딩 설정

sysctl 커널 파라미터

제로보드4의 데이터를 XE 로 이전하는 방법 file

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234