검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/모니터링
참조 원문 : Visualize log files using gltail on CentOS RHEL Fedora Debian Ubuntu
관련 글 : [리눅스] 접속 로그를 실시간으로 시각화해서 보여주는 Logstalgia

  gltail은 얼마 전에 소개한 Logstalgia와 비슷한 프로그램으로 SSH를 이용해 원하는 서버의 로그 파일을 실시간으로 시각화해서 보여주는 프로그램입니다. 아래는 프로그램의 주요 특징입니다.
  • 실시간
  • 다수의 서버에 있는 다수의 로그 파일 처리 가능
  • 레이아웃 설정 가능
  • 다양한 로그 파일 분석 능력(Apache, Rails, IIS, Postfix/spamd/clamd, Nginx, Squid, PostgreSQL, PureFTPD, MySQL, TShark, qmail/vmpop3d)
  • 커스텀 이벤트
  • 비율, 총, 평균 값 출력
  • 'tail'을 할 수 있다면 뭐든 시각화 가능
  • Ruby로 작성했으며 net-ssh, chipmunk, ruby-opengl을 사용
  • 무료(GPLv2)

1. 필요한 라이브러리 설치
(1) 레드햇 계열
# yum groupinstall "Development Tools"
# yum install freeglut libX11-devel mesa-libGL-devel perl-Time-HiRes freeglut-devel readline-devel libffi-devel libtool bison libxml2-devel libxslt-devel zlib zlib-devel sqlite-devel git openssl-devel
(2) 데비안 계열
# sudo apt-get install build-essential libx11-dev libgl1-mesa-dev libxext-dev freeglut3-dev freeglut3 xlibmesa-gl xlibmesa-glu libgl1-mesa-dri libgl1-mesa-glx mesa-common-dev git libssl-dev

2. Ruby와 필요한 gem 설치
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz
tar zxvf ruby-1.9.3-p392.tar.gz
cd ruby-1.9.3-p392
./configure --prefix=/usr/local --enable-shared --disable-install-doc --with-opt-dir=/usr/local/lib
make
make install
gem install chipmunk net-ssh-gateway net-ssh mkrf ftools net-ssh ruby-opengl file-tail
gem install opengl -v 0.7.0.pre1

3. github를 사용하여 gltail 설치
git clone git://github.com/Fudge/gltail.git
cd gltail

4. 설정 파일 수정
  config.yaml 파일을 열어서 모니터할 서비스를 추가합니다. 파일은 아래와 같은 형식으로 되어 있습니다.
servers:

site1:
    host: foobar.com
    user: foo
    password: topsecret
    command: tail -f -n0
    files: /var/log/apache/access_log
    parser: apache
    color: 0.2, 1.0, 0.2, 1.0
rails:
    host: anotherfunsite.com
    user: anotherfunuser
    port: 222
    command: tail -f -n0
    files: /var/www/apps/funapp/current/log/production.log
    parser: rails
    color: 0.2, 0.2, 1.0, 1.0
dev:
    host: clockingit.com
    source: local
    files: /var/www/clockingit/logs/production.log
    parser: rails
    color: 0.2, 0.2, 1.0, 1.0

(이하 생략)

4. gltail 실행
  설정 파일을 사용해 gltail을 실행합니다.
cd bin
./gl_tail ../config.yaml
  사용할 수 있는 옵션은 아래 명령어로 볼 수 있습니다.
./gl_tail ../config.yaml -h
  분석할 수 있는 로그의 종류는 아래 명령어로 볼 수 있습니다.
./gl_tail ../config.yaml -p

출처 : http://linuxdrops.com

2013/07/15 12:06 2013/07/15 12:06
Posted
Filed under 프로그램과 명령어/모니터링
참조 원문 : Apache / Nginx: Visualize Web Server Access Log In Real Time

  Logstalgia는 웹사이트 접속 로그를 직관적으로 보여주는 툴로 Apache, Lighttpd, Nginx의 접속 로그를 분석할 수 있습니다. OpenGL을 지원하는 비디오 카드가 필요하기 때문에 상용 서버에서 사용하기 힘들 것이라 생각할 수도 있지만 ssh를 이용하면 원격 서버에서 로그 파일을 읽어서 보는 것이 가능하기 때문에 큰 문제는 없습니다.

(출처 : 참조 원문 사이트)

1. 필요조건
  1. OpenGL을 지원하는 비디오 카드
  2. 리눅스 OS.

2. 설치(우분투 기준)
(1) 바이너리 패키지를 이용한 방법
$ sudo apt-get install logstalgia
(2) 소스 코드를 이용한 방법
$ sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libpcre3-dev libftgl-dev libpng12-dev libjpeg62-dev
$ cd /tmp
$ wget https://logstalgia.googlecode.com/files/logstalgia-1.0.3.tar.gz
$ tar xvf logstalgia-1.0.3.tar.gz
$ cd logstalgia
$ ./configure
$ make
$ sudo make install

3. 사용법
# 디폴트 설정으로 로그 파일 분석
$ logstalgia /var/www/apache2/access.log

# 표준 입력으로 로그 읽기
$ tail -f
/var/www/apache2/access.log | logstalgia --sync

# 원격 서버에서 로그 파일 분석
ssh 계정명@서버명 tail -f
/var/www/apache2/access.log | logstalgia --sync

# 결과물을 비디오 파일로 저장
$ logstalgia -1280x720 --output-ppm-stream output.ppm
/var/www/apache2/access.log

# 원격 서버에서 결과물을 비디오 파일로 저장
$ ssh
계정명@서버명 tail -f /var/www/apache2/access.log | logstalgia -1280x720 --output-ppm-stream --sync output.ppm

# ffmpeg를 사용해서 .ppm 파일을 mp4 파일로 변환
$ ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i output.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 logvideo.mp4

4. 단축키
  • n : 다음 로그 항목으로 점프
  • +/- : 시뮬레이션 속도 조정
  • </> : 시간 단위 조정
  • Esc : 종료
2013/07/13 23:32 2013/07/13 23:32
Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Setting Up Logrotate on RedHat Linux

1. 소개
  Logrotate는 로그가 많이 쌓이는 상용 서버를 관리하는 관리자를 위한 유틸리티로 디스크 공간을 아끼면서 시스템이 용량 부족으로 뻗는 것을 방지합니다. 일반적으로 이런 문제를 막는 방법은 /var 마운트 포인트를 별도의 파티션이나 로지컬 볼륨으로 설정하는 것이지만 logrotate는 로그 파일을 일정 조건에 따라 다음 파일로 순환시키고 관리하여 해결합니다. 기본적으로 logrotate는 /etc/cron.daily/에 있는 cron 파일을 통해 하루에 한 번씩 실행됩니다.
$ ls -al /etc/cron.daily/logrotate
-rwxr-xr-x 1 root root 372 12월  1  2012 /etc/cron.daily/logrotate

2. Logrotate 설정
  Logrotate를 설정하려면 아래 두 파일을 수정해야 합니다.
  • /etc/logrotate.conf
  • /etc/logrotate.d/ 디렉토리에 있는 서비스별 설정 파일
  /etc/logrotate.conf 파일은 일반 및 디폴트 설정을 담고 있습니다. 어떤 로그 파일에 대한 설정에서 관련 항목이 없다면 그 항목은 이 파일에 있는 내용을 따릅니다. 아래는 파일 내용의 예입니다.
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

# system-specific logs may be configured here
  • weekly : 로그 파일을 주 단위로 순환시킨다.
  • rotate 4 : 4주 분량의 로그 파일을 보관한다.
  • create : 순환 후 새로운 빈 로그 파일을 생성한다.
  • include : 해당 디렉토리에 있는 파일들을 읽어서 적용한다.
  /etc/logrotate.d/ 디렉토리에는 각 서비스별 설정 파일이 있습니다.

3. 새로운 서비스의 로그를 logrotate의 관리하에 두기
  /var/log/sample.log라는 로그 파일이 있고 이 파일을 매일 순환시키길 원한다고 가정하면 /etc/logrotate.d/ 디렉토리에 새로운 파일을 생성(파일명은 원하는 것으로 생성하나 보통은 서비스명을 사용)하여 아래의 내용을 작성하여 저장합니다.
/var/log/linuxcareer.log {
    missingok
    notifempty
    compress
    size 20k
    daily
    create 0600 root root
}
  참고로 같은 디렉토리에 있는 다수의 로그 파일에 같은 설정을 적용하길 원한다면 와일드카드(*)를 사용할 수 있습니다. 예를 들어 파일명에 /var/log/mylogs/*.log 라고 적는다면 /var/log/mylogs/ 디렉토리 안에 .log 확장자를 가진 모든 파일을 순환시킵니다.

  위의 예제에 있는 각 항목에 대한 설명은 아래와 같습니다.
  • missingok : 로그 파일이 없어도 에러를 출력하지 않습니다.
  • notifempty : 파일이 비어있다면 순환하지 않습니다.
  • compress : 순환 대상을 gzip으로 압축합니다.
  • size : 로그 파일의 크기가 20k보다 클 때만 순환합니다.
  • daily : 매일 순환합니다.
  • create : 퍼미션은 600, 소유자와 소유 그룹은 root로 새로운 로그 파일을 생성합니다.
  그 외에도 많은 옵션이 존재하며 man logrotate를 통해 확인할 수 있습니다.


2013/07/12 15:44 2013/07/12 15:44
Posted
Filed under 쉘 스크립트
참조 원문 : Log Parser
#!/bin/bash

script=$(basename $0)_errors
log1=/var/log/messages
log2=/var/log/secure
log3=/var/log/dmesg

mydate=$(date +%b\ %d)

for log in $log{1,2,3}
do
if [ -e $log ] && [ -s $log ]
then
echo
echo BEGIN $log
grep -E "$mydate" $log | grep -E 'Device|fail'  2> $script
echo END $log
echo
fi
done
  필요한대로 수정한 후 cron으로 매일 23시 55분에 실행하면 적당할 것 같군요. 변수로 지정한 로그 파일들에서 당일 생성된 항목 중 지정한 키워드(위의 경우 Device나 fail)가 검출되면 해당 라인을 미리 정한 파일에 집어넣습니다. 간단해서 설명할 것도 없군요. 결과는 아래처럼 나오겠지요.
BEGIN /var/log/messages
Aug 31 01:21:43 mail kernel: pnp: Device 00:05 does not support disabling.
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hda, opened
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hda, not found in smartd database.
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hda, lacks SMART capability
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hda, to proceed anyway, use '-T permissive' Directive.
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hdc, opened
Aug 31 01:21:53 mail smartd[2046]: Device: /dev/hdc, packet devices [this device CD/DVD] not SMART capable
END /var/log/messages

BEGIN /var/log/secure
Aug 31 01:21:48 mail sshd[1872]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
END /var/log/secure

BEGIN /var/log/dmesg
END /var/log/dmesg
  근데 많이 부실하긴 하네요. 나중에 좀 더 견고한 걸 올려야겠습니다.


2013/06/20 17:33 2013/06/20 17:33