반응형

제공: 한빛 네트워크
저자: Rich Bowen, 이대엽 역
원문: Sending Apache httpd Logs to Syslog

여러분의 아파치 서버가 매번 요청을 받을 때 마다 아파치 서버는 하나 혹은 여러 개의 로그파일에 로그내용을 만든다. 이러한 로그파일들은 방문자에 대한 통계적 분석에서부터 서버 공격에 대한 포렌식 분석에 이르기까지 다양한 목적에 있어 유용하게 이용된다.

수많은 경우에 있어 이러한 로그들을 로컬 파일시스템에 기록하게 하는 것은 아무리 줄잡아 말해도 불편한 일이다. 두 가지 구체적인 시나리오가 머리에 떠오르는데, 아마도 여러분들의 머리 속에는 다른 시나리오들도 생각날 것이다.

첫 번째 시나리오는 불행히도 내 개인적인 경험에 관한 것이다. 공격자가 서버를 손상시킬 때 그들은 종종 서버를 손상시킨 다음에 "정리"를 하곤 하는데 따라서 여러분은 그들이 어떻게 침입했는지 추정할 수 없게 된다. 만약 공격자들이 신중하다면 정리과정에는 로그파일을 삭제하여 공격자가 어떠한 기법을 사용했는지 여러분이 알 수 없게끔 하는 것도 포함된다. 만약 그들이 웹 서버 자체를 침입도구로 사용했을 경우 특히 사실인데 여기에 한술 더 떠서 단순히 몇 개의 스크립트화 시켜놓은 익스플로잇만으로 간단히 모든 로그파일들을 삭제해버린다. 이러한 경우 다른 곳에 있는 이러한 로그파일들의 사본을 갖는 것은 매우 손쉬운 일이다.

두 번째 시나리오는 아마도 가능성이 더 적긴 하지만 그냥 재미있는 것으로 보면 된다. 여러분이 한대 이상의 서버-특히 수십대에서 수백대에 이르는-를 가지고 있을 경우 로그파일의 수가 많기 때문에 그것들을 살펴보는 것은 상당히 따분한 일거리가 된다. 이러한 경우 그 로그파일들을 하나의 중앙 저장소로 결합시키는 것이 쓸모 있는 일일지도 모르겠다.

지금까지의 두 가지의 경우 모두 로그파일들을 로컬 파일 시스템에 기록하는 것 보다는 그것들을 중앙 syslog 서버로 보내는 것이 이상적이다.

syslog에 로깅하기

공교롭게도 아파치 웹 서버에 관해 아는 사람이 거의 없는 한 가지는 여러분이 단 한 줄의 설정 지시자만으로 에러 로그를 syslog에 로깅할 수 있다는 것이다:

ErrorLog syslog:local1

이게 전부다. 이것은 아파치에게 에러로그 출력을 local1이라 불리는 syslog 기능으로 보내라고 명령한다. 물론 여러분도 여러분의 syslog 서버가 이러한 로그 출력을 다른 서버-여러분의 syslog 서버-로 보내 로그파일에 기록하도록 해줄 필요가 있다.

정확히 말해 여러분이 이를 수행하는 방법은 각 syslog 구현마다 다를지도 모르겠다. 그러나 일반적인 리눅스 syslog는 /etc/syslog.conf라 불리는 파일(혹은 조금 다를 수도 있다)을 사용하여 syslog가 출력되는 방식을 설정한다.

아파치 에러로그는 표준 syslog 심각성 등급(syslog-standard severity ratings)를 사용하고 있으므로 여러분은 일반적인 syslog 설정을 사용하여 syslog 출력을 심각성 정도에 근거하여 각각의 다른 파일로 분리시킬 수 있다. 예를 들어, 만약 여러분이 치명적인 오류만을 특정 파일에 로그로 남기고자 한다면 /etc/syslog.conf 파일에 다음의 줄을 추가해 준다:

local1.crit   /var/log/apache.crit

게다가 이것은 /var/log/apache.crit 파일에 crit 및 더 높은 수준의 로그내용에 대한 로깅의 원인이 된다.

필자는 여러분이 로그내용을 다른 서버로 전송할 수 있다고 약속하였다. 다음 줄을 대신 사용하라:

local1.* @192.168.200.12

여러분도 원격 syslog 서버가 이러한 로그내용을 받아들이도록 설정할 필요가 있다. 대부분의 syslog 서버의 경우 syslog 서버의 시작 파라미터로 -r 플래그를 추가할 필요가 있다. 그러나 이것은 syslog 구현에 따라 다양하므로 여러분이 어떤 특정한 syslog 서버를 운영하고 있는지에 상관없이 문서를 참고하라.

액세스 로그 내보내기

불행히도 에러 로그만이 이 기능을 내장하고 있다. 여러분의 액세스 로그를 원격 서버에 로그로 남기는 것 또한 앞서 설명했던 연유로 정말로 유용한 일일 것이다.

여러분의 액세스 로그 역시 syslog로 보내주는 방법은 있다. 그러나 이러한 기사의 속성상 이 기능이 미래의 어느 시점에서 내장되어 이런 방법이 쓸모 없게 될지도 모르므로 아파치 웹 서버 문서화 사이트를 확인해 보는 것을 권장한다. 현재는 여러분이 해야 할 필요가 있는 것이 있는데, 두 단계에 걸친 과정이다.

먼저 로그내용을 syslog로 보낼 수 있도록 하는 스크립트를 작성한다:

    #!/usr/bin/perl
    use Sys::Syslog qw( :DEFAULT setlogsock );

    setlogsock('unix');
    openlog('apache', 'cons', 'pid', 'local2');

    while ($log = <STDIN>) {
                syslog('notice', $log);
    }
    closelog

펄로 작성된 스크립트는 Sys::Syslog 모듈을 사용하여 데이터를 syslog 서버로 전송한다. Sys::Syslog 모듈이 설치되어 있는지 확인해 보아야 하는데, 꽤 최근 버전의 펄에는 표준으로 지정되어 있을 것이다.

이 스크립트를 어딘가에 가져다 놓고 실행가능토록 만들어 둔다. 예를 들어 필자는 여러분이 이 스크립트를 /usr/local/apache/bin/apache_syslog에 가져다 놓았다고 가정한다.

다음으로 로그파일에 파이프 문법을 적용시켜 액세스 로그가 이 스크립트를 가리키도록 한다:

CustomLog |/usr/local/apache/bin/apache_syslog combined

apache_syslog 스크립트는 여러분의 웹 서버가 시작되면 실행될 것이며 로그파일의 내용을 서버로부터 받아오는 대로 처리한다. while 루프는 아파치 서버 프로세스가 살아있는 동안 계속 실행될 것이다.

이 스크립트에서 볼 수 있는 것과 같이 스크립트는 이러한 로그내용을 local2라는 이름을 가진 syslog 기능으로 전송하므로 /etc/syslog.conf에 들어있는 여러분의 syslog 서버를 다음과 같이 설정한다.

local2.*    @192.168.200.12

이 모듈에서 사용가능한 옵션에 대한 좀 더 자세한 정보를 보려면 Sys::Syslog 문서를 참조하라.

이 설정을 통해 여러분은 서버의 상태가 좋지 못하거나 치명적인 드라이브 결함이 있을 경우에도 무슨 일이 발생했는지에 대해 찾아볼 수 있는 로그파일의 원격 사본을 갖게 될 것이다.

또한 만약 여러분이 여러 개의 CustomLog 지시자를 갖고 있을 경우 여러 개의 로그파일을 가질 수 있음을 유념하라. 그러므로 여러분이 원격 로그파일에 추가하여 로컬 로그파일을 가지길 원한다면 간단히 로컬 로그파일을 가리키는 외부 CustomLog 지시자를 추가하기만 하면 된다:

CustomLog /usr/local/apache/logs/access_log combined

경고사항

물론 syslog로 로그를 남기는 데에도 몇 가지 경고사항은 있다.

첫째로 만약 여러분이 몇 대의 서버에서 중앙 syslog 서버로 로그를 남기고 있다면 여러분의 클럭과 NTP와의 동기화를 유지시키는 것이 중요하다. 여러분이 이것을 하지 않게 되면 로그파일의 로그내용들은 순서에 맞지 않게 도착한 것처럼 보이게 되며 이는 통계적인 정보를 구하기 위한 로그파일의 후처리를 하고자 할 때 곤경에 처하게 될지도 모른다. 특히 몇몇 웹 로그통계 소프트웨어는 로그파일의 내용이 순서가 엉망일 경우 오동작하게 될 것이며 로그파일의 처리를 거부할지도 모른다.

두 번째로 필자의 syslog 서버는 여러 개의 로그내용이 동일할 경우 그것들을 한 줄로 요약한다는 것을 알게 되었다. 예를 들어 특정한 존재하지 않는 파일에 대한 반복요청은 다음과 같은 결과를 만들어 낸다.

Aug 31 20:18:05 192.168.200.10 last message repeated 19 times

마지막으로 여러 대의 서버에 로그를 남기는 것이 가능한 써드파티 모듈이 있다는 것에 관해 언급하는 것은 값어치 있는 일이다. 이러한 모듈 중에서 가장 인기있는 것은 mod_log_spread인데 매우 큰 규모(여러 대의 서버)의 서버 구축에 효율적인 솔루션일 것 같다.

Rich Bowen은 아파치 소프트웨어 재단의 구성원으로서 주로 아파치 웹 서버에 대한 문서화 업무를 맡고 있다. DrBacchus, Rich's handle on IRC는 www.drbacchus.com/journal에서 찾아볼 수 있다.

반응형

'프로젝트 관련 조사 > 로그 관련' 카테고리의 다른 글

로그 별 항목 정리  (0) 2015.11.04
logstash with python  (0) 2015.11.02
Apache 로그파일의 이해  (0) 2015.10.26
원격 로그저장을 위한 syslog 설정  (4) 2015.10.26
원격 로그 서버 구축 rsyslog  (0) 2015.10.23
반응형

출처 : http://cafe.naver.com/q69/5103

 

로그파일이란 ?


 

웹 서버를 관리하는 사용자에게 있어서 시스템의 성능은 상당히 중요한 문제로 인식되고 있으며, 로그 정보 와 시스템의 모니터링은 웹 서버의 성능을 파악하는데 중요합니다. 웹 서버를 운영하는 관리자들은 아파치의 확장된 로깅기능을 이용하여 웹 서버의 활동을 살펴볼 수가 있습니다. 기본적으로 아파치에서는 다음과 같은 로그파일 등을 제공하였습니다.

 

n        에러로그

n        접속 로그

n        에이전트 로그

n        참조로그
 

에러로그에는 웹 서버 운영시에 발생되는 로그 및 CGI 와 같은 스크립트의 에러가 기록되게 되며, 우리가 생각하는 대부분의 접속 정보중의 하나인 access.log 에는 서버로부터 전송되어 지는 정보가 기록되어 집니다. 사용자가 사용한 브라우저 정보는 에이전트 로그에 쌓이며 , 참조로그는 외부의 어떤 URL 을 참조하여 들어올 경우 설정이 되어 지게 됩니다.


 

그러나, 지금 아파치 1.3.X 에 와서는 이렇게 나누어져 있는 것이 크게 의미는 없습니다. 왜냐하면, mod_log_config 모듈이 기본 access 로그를 대체하여 설정을 하게 되어져 있기 때문입니다.

 

 

자아 그럼 에러로그 파일부터 하나 하나 살펴볼까요 ?
 

에러로그 파일은 ErrorLog 지시어를 이용하여 아파치 웹 서버 운영시에 발생되는 모든 에러를 어디에 기록할지를 지정하는 것입니다. 이것은 기본으로 포함하고 있는 지시어이며, 디폴트로 설정되는 로그파일의 경로는 여러분들이 아파치를 설치한 <아파치 서버의 루트>/logs/error_log 가 됩니다. 만약 에러로그를 설정하지 않을 경우라 하더라도 다음과 같은 위치에 로그를 남기게 됩니다.
 

             ErrorLog            /var/log/httpd/error_log

 

로그파일을 남기지 않는 방법은 없나요 ?

  ErrorLog  /dev/null 와 값이 /dev/null 을 이용하시면 간단합니다.

 

유닉스를 사용해 보신 분들은 아시겠지만 시스템로그와 관련하여 로그 데몬인 syslog 가 있습니다. 이 것을 언급하는 이유는 ErrorLog 를 통하여 로그를 남기는 것이 아니라 syslog 쪽으로 로그를 리다이렉트 시킬 수도 있다는 점입니다.


 

로그를 남기는 방법에도 시스템의 syslog 와 마찬가지로 가장 하단의 debug 에서부터 최상위인 Emerg 까지 8 개의 범주를 가지고 있습니다. 로그레벨은 다음과 같이 LogLevel 을 통해 레벨을 결정하며, debug 와 같은 레벨을 선택하게 되면 아파치에서 발생하는 모든 에러메시지와 간단한 내용들도 로그에 남게 되므로, 자원의 공간 및 프로세스 타임을 낭비하는 결과를 초래하게 됩니다. 


 

             LogLevel            debug

 

다음 <표> 는 로그레벨을 나타낸 것입니다 :

로그레벨

에러의 의미

Emerg

불안정한 시스템 상황

Alert

즉각적인 조치 필요

Crit

중대한 에러

Error

비교적 중대하지 않은 에러

Warn

경고

Notice

중대한 것은 아닌 일반적인 메시지

Info

정보

Debug

디버그 레벨

 

 

다른 프로그램들과 마찬가지로 아파치 웹 서버 또한 로그 파일을 syslog 로 보낼 수 있다 하였는데 어떻게 하는 것인지 잠깐 알아보고 가겠습니다. ErrorLog 지시어에 에러 로그파일의 위치 경로를 넣었었는데, 이것 대신 syslog 문자열로 대체를 해야만 syslog에서 로그를 남길 수가 있답니다.


 

             ErrorLog syslog

 


디폴트로, 아파치 로그는 syslog에 local7 의 이름을 통해 에러가 기록되게 되며 syslogd 가 어떠한 에러 정보를 받을 것인지에 대해 지정하는 syslog.conf에서 제어가 됩니다. 전형적인 syslog.conf 는 다음과 같은 라인을 가지게 됩니다 :


 

local7.*                                         /var/log/httpd.log


물론 local7.* 과는 달리 위에서 잠깐 언급하였던 로그레벨에 기반 해서 로그를 따로 저장할 수가 있습니다. 리눅스를 포함한 유닉스 시스템은 아파치에서 사용하는 로그레벨과 같은 같은 등급의 구조를 가지고 있기 때문에 syslog.conf 에서의 적용도 같은 효과를 미치게 됩니다.


Local7.warn                                                /var/log/httpd.warn_log


Local7.debug.!=notice                                /var/log/httpd.error_log


 

이것은 warn 로그레벨이상의 정보를 httpd.warn_log에 저장하고, debug 보다 높으며 notice 이하의 내용을 httpd.error_log에 기록하게 됩니다.

웹 서버 문제 발생시에는 우선 에러로그를 먼저 살펴보세요!

아파치 웹 서버를 처음 접하시는 초보 사용자 분들이 설치를 하신후 얘기치 못한 문제에 봉착하여 에러메세지를 받고 당황하실 수 있습니다. 그러나 이러한 내용의 대부분은 에러로그를 찾아봄으로써 문제의 대부분을 해결하실 수 있답니다.


지금까지는 문제를 해결하는 데 중요한 역할을 하고 있는 에러로그 파일에 대해서 알아보았고 다음은 사용자 정보를 수집하는데 있어서 큰 역할을 담당하고 있는 접속로그를 알아보겠습니다.


 

이 로그는 여러분들께서 많이 접해보셨던 access 로그로도 알려져 있으며 서버로부터 HTTP 프로토콜을 통하여 전송된 각각의 정보들이 요약되어 기록되어져 있습니다. 이번 주제인 방문자 정보를 알아내기 위하여서는 이 정보가 중요하기도 하지만, 에러로그와 달리 이 로그는 어찌 보면 사용자 접속이 아주 많은 사이트와 같은 곳에서는 로그를 처리하기 위하여 많은 공간과 시간을 필요로 하기 때문에 필요하지 않을 수 도 있습니다. 달리 보아 생각하면 접속이 많은 경우 사업에 있어서 더 중요한 정보가 될지도 모르겠지만요 여하튼 엑세스 로그를 남기느냐 아님 그렇지 않느냐는 여러분들의 자유에 맡기도록 하겠습니다.


전송로그는 TransferLog 지시어를 사용하여 어느 위치에 로그를 남길 것인지 결정합니다 :


             TransferLog                                  /var/log/access_log


웹 서버의 접속로그인 access_log에는 CLF(Common Log Format) 기본포맷으로 내용이 저장되어 집니다. 뒤에서 다루게 될 CustomLog 에 의해 따로 로그포맷이 지정되어 지지 않으면 바로 이것을 사용한다는 것이며, 대부분의 웹 서버는 이 방식을 표준으로 사용하고 있습니다.


CLF 의 기본포맷은 각 클라이언트 요청에 한 라인으로 구성 되어 있으며, 각 라인은 공백에 의해 7 개의 아이템으로 구분되어 집니다.


             host ident authuser date request status bytes

 


각 아이템에 값이 주어지지 않을 경우에는 하이픈(-) 으로 표시되어 지며, 각 아이템이 의미하는 바는 다음 <표 > 와 같습니다.

 

아이템

의미

Host

클라이언트의 호스트이름이나 IP Address

Ident

IdentityCheck 가 enable 되어 있고, 클라이언트가 ident 에 응답을 보내면 identity 정보를 남기게 되며, 보통은 -로 대체된다.

Authuser

인증이 있을 경우 여기에 사용자 이름이 기록되게 되며, 그렇지 않을 경우 - 로 대체된다.

Date

접속한 시간과 날짜를 나타내며, 포맷은 다음과 같다 :

날짜포맷 = [day/month/year:hour:minute:second zone]

               day = 2*digit

               month = 3*letter

               year = 4*digit

               hour = 2*digit

               minute = 2*digit

               second = 2*digit

               zone = (`+' | `-') 4*digit

Request

클라이언트가 요청한 자료

Status

요청한 것에 대한 서버의 처리사항으로 상태 코드라 한다.

Bytes

헤더를 제외한 전송된 Byte 양


다음은 실제 웹 서버의 로그파일의 일부분 입니다 :


203.251.189.47 - - [03/Aug/2000:21:56:55 +0900] "GET /doc/images/sub.gif HTTP/1.1" 200 6083

203.251.189.47 - - [03/Aug/2000:21:56:55 +0900] "GET /doc/images/index.gif HTTP/1.1" 200 1540

203.251.189.47 - - [03/Aug/2000:21:57:25 +0900] "GET /doc/mod/directives.html HTTP/1.1" 200 11339

203.251.189.47 - - [03/Aug/2000:21:57:25 +0900] "GET /doc/images/home.gif HTTP/1.1" 200 1465

211.52.197.57 - - [03/Aug/2000:21:57:26 +0900] "POST /cgi-bin/bbs HTTP/1.1" 200 3840


      기본로그포맷에 대해서 살펴보았으니,  사용자에 의해 정의 될 수 있는 로그포맷에 대해서알아보겠습니다.


LogFormat 지시어를 이용하면 기본 포맷인 CLF 의 포맷을 변경할 수가 있습니다. 이 뜻은 기본 포맷방법 대신 여러분들이 좀더 이해하기 쉬운 형식으로 만들 수 있다는 것입니다.


             LogFormat          %h %l %u %t %r %>s %b


많이 쓰이지 않는 ident 와 authuser 아이템 등을 빼 놓음으로써 좀더 효율적인 로그파일을 만들어 볼 수도 있으며 다음의 예는 에이전트와 참조 로그를 한 로그파일에 만든 것 입니다.


 

LogFormat  %h %l %u %t %r %>s %b %{Referer}i %{User-Agent}i 


로그포맷에서 사용하는 포맷은 다음과 같습니다 :

포맷


의미

%a

원격지 IP 주소

%A

로컬 IP 주소

%B

HTTP 헤더를 제외하고 전송된 바이트

%b

HTTP 헤더를 제외하고 전송된 바이트. CLF 포맷에서는 , 전송된 것이 없을 경우 0 으로 표시하기 보다는 - 로 표시한다.

%{FOOBAR}e

서버에 의해 지정된 환경변수

%f         

파일 이름

%h         

원격지 호스트

%H                    

요청한 프로토콜

%{Foobar}i

Foobar 의 내용: 클라이언트에서 서버로 요청된 헤더라인으로 예를 들자면, Referer 헤더일 경우 %{Referer}i 로 사용되어 진다. 

%l         

원격지 사용자이름 (이것이 사용되어 지기 위해서는 IdentityCheck 가 반드시 enable 되어져 있어야 한다)

%m                    

요청방식

%{Foobar}o

서버에서 응답되어 지는 HTTP 헤더. 예를들면 :

%{Content-Type}o, %{Last-Modified}o

%p         

요청을 처리하는 서버의 참조적인 포트

%P        

현 요청을 처리하고 있는 아파치 자식 프로세서의 프로세스 ID

%q                     

쿼리 문자열 (쿼리가 있을 경우 ? 뒤로 쿼리문이 포함되며 그렇지 않을 경우 공백으로 처리된다)

%r         

HTTP 메소드를 포함한 요청의 첫 라인

%s         

HTTP 상태코드. 만약 클라이언트의 요청이 내부적인 리다이렉트를 발생시켰을 경우 %s 는 초기 요청의 상태코드를 %>s 는 최종상태 코드를 포함하게 된다. 일반적으로, %s 의 사용 보다는 %>s 가 유용하다.

%t         

요청한 시간과 날짜 (standard english format)

%{format}t

strftime() function 을 이용한 포맷형식에 따른 시간

[Day/Month/Year:Hours:Minutes:Seconds Time Zone]

%T        

요청을 처리하는데 걸린 시간 (초)

%u         

인증이 요청된 원격 사용자 이름

%U        

요청된 URL

%v         

요청을 처리하는 서버의 참조적인 서버 이름

%V        

UseCanonicalName 설정에 따른 서버 이름


CustomLog 는 위에서 배운 TransferLog 와 LogFormat 을 하나로 합쳐놓은 지시어라 쉽게 생각하시면 됩니다. 그럼 예를 하나 들어보겠습니다. 이것은 참조로그를 만들어 보는 것입니다.


포맷 :

CustomLog         logfile    format|nickname env=[!]environment-variable


             CustomLog        /logs/referrer_log %{Referer}I -> %U


 

여기서 꼭 알아야 할 한가지는 HostNameLookups 가 1.3.X 대에서는 기본으로 Off 로 설정되어져 있어 로그파일에는 도메인 네임 대신 IP로 로그가 남게 된다는 것입니다. 아파치 웹 서버의 성능을 위하여 이 기능은 Off로 설정하여 사용하시는 것이 바람직 하며 로그분석시에는 logresolve 를 통하여 로그파일 안의 IP를 도메인으로 변경할 수 있습니다.


 

사용방법 : logresolve [-s filename] [-c] < access_log > new_log


CustomLog 또는 LogFormat 을 이용한 방법에는 각각의 모든 요청에 대해서 항상 로그를 남기기 때문에 시간의 소비와 불필요한 정보까지 남기게 된다는 점이 있습니다. 최근에는 HTML 파일 안에 이미지 파일이 들어가는 경우가 아주 많으므로 수백 수천의 페이지가 엑세스가 되어지는 경우 그에 따른 이미지 파일 또한 같이 로그에 포함되게 된다는 점입니다.


이에 대한 해결은 아파치의 또 다른 모듈을 같이 이용하면 해결할 수 있습니다.


다음은 mod_setenvif 모듈 기능을 이용하여 응용한 것입니다.


(ㄱ)  SetEnvIf Request_URI .gif$ gif-image

(ㄴ)  CustomLog gif-requests.log common env=gif-image

(ㄷ)  CustomLog nongif-requests.log common env=!gif-image

(ㄹ)  LogFormat %h %l %u %t %r %>s %b common

(ㅁ)  SetEnvIf Request_URI .gif$ image=gif

(ㅂ)  SetEnvIf Request_URI .jpg$ image=jpg

(ㅅ)  CustomLog logs/access_log common env=!image


(ㄱ) ? (ㄷ) 까지는 Gif 이미지를 gif-requests.log 에, 그 이외의 것은 nongif-requests.log 에 저장하는 것이며,  나머지 (ㄹ)-(ㅅ) 은 CLF 포맷으로 이미지 파일인 gif,jpg 를 제외한 로그를 access_log 에 남기라는 의미입니다.


SetEnvIf Referer www.apache.kr.net apache_site_referral


www.apache.kr.net 을 통해서 들어오게 되면 apache_site_referral 변수를 설정하여 로그를 남길 수도 있습니다.


주의 !

SetEnvIf[NoCase]에 의한 환경 변수 지정은 CustomLog 와 같이 변수를 이용한 저장을 할 경우 CustomLog 지시어 전에 설정이 되어 있어야 합니다.


어떠세요 ? 아파치에서 제공하는 여러 모듈등을 응용하여 사용하니 아주 다양하게 설정할 수가 있죠. 그럼 이번에는 가상호스트를 많이 운영하시는 분들을 위하여 여러 개의 로그파일을 하나의 파일로 만드는 방법을 알려드리도록 하겠습니다.
 

             LogFormat %v [%A:%p] -> %h %l %u %t %r %>s %b virtualhost


             CustomLog logs/access_log virtualhost


이것은 기본 로그포맷 앞에 canonical name 과 IP 주소, 포트번호를 나타내는 추가적인 정보가 더 기술되어져 있습니다. 이러한 방식을 통한 운영은 모든 가상호스트 마다 개별적인 로그파일을 만들 경우 동시에 파일을 열수 있는 개수 등이 제한되어져 있는 것과 같은 경우에 효율적으로 사용할 수가 있습니다. 물론 관리자가 여러 명 이거나 할 경우에는 이러한 방식이 더 부 적당할 수도 있습니다.

 


로그파일 알맞게 잘라내기

 


웹 서버를 운영하면서 겪는 문제중의 하나가 한도 끝도 없이 커지는 로그파일 문제입니다.대부분의 많은 분들께서는 특별한 설정 없이access_log 와 같이 하나의 파일로 설정해 사용하고 계실 것으로 생각되어 집니다. 한 파일의 용량이 커지면 관리하기도 힘들고 불편한 점이 한두 가지가 아니죠 ? 그렇다면 지금 이 글을 읽어 보시고 방법을 한번 바꾸어 보시지 않겠어요?


아파치 웹 서버는 이러한 것을 염두해 두고 관련 파일을 제공해 주고 있습니다. 유심히 살펴 보신 분들은 아시겠지만 src/support 안에서 찾아보실 수 있습니다.
 

그 중의 하나인 rotatelogs 프로그램은 아파치 웹 서버를 죽이지 않고 로그파일을 나눌 수 있는 기능을 가진 간단한 프로그램이며, 다음과 같이 아파치의 파이프라인(|)기능 을 이용하여 쉽게 적용하실 수가 있습니다 :
 

             TransferLog "|rotatelogs   /path/to/logs/access_log   86400"


              마지막 86400 은 로그파일 경로                         나눠질 시간 (초) 입니다.


 

/path/to/logs/access_log.nnnn 과 같이 만들어지며 로그파일 뒤에 붙은 nnnn 은 만들어진 시간이 자동으로 뒤에 붙게 되는 것입니다. 여기 예에서는, 86400(24 시간) 초 뒤에 새로운 로그파일이 생성되어 지도록 되어 있군요.


,다른 프로그램을 알아볼까요 ? rotatelogs 와 비슷한 cronlog 라는 것이 있습니다.


사용법은 비슷하며, 일별 또는 월별로 나눌 수 있다는 장점이 있습니다.

TransferLog "|/www/sbin/cronolog /www/logs/%Y/%m/%d/access.log"
ErrorLog    "|/www/sbin/cronolog /www/logs/%Y/%m/%d/errors.log"

       (%Y,%m,%d 는 차례로 년, 월,  일을 나타냅니다.)

 


데이트 포맷방식은 유닉스의 date 포맷과 같으니 man date로 참고하여 사용하시기 바랍니다.  Cronlog를 통하여 생성된 로그는 다음과 같습니다 :

/www/logs/1997/01/01/access.log
/www/logs/1997/01/01/errors.log


 

cronlog 를 사용하기 전에 주의해야 점은 아파치 1.2 이전 버전에서는 이 것을 사용할 수 없다는 점입니다. 잊지마세요!


위에서 LogFormat을 이용하여 여러 개의 가상호스트 로그를 하나로 만드는 부분이 있었는데 기억하시죠 ? 하나의 파일에 모여있는 경우 아파치 웹 서버에서 제공해 주고 있는 split-logfile 스크립트를 이용하시면 %v를 기반으로 %v의 이름.log 와 같이 따로 로그파일을 만들 수도 있습니다.


알고 보니 제공해 주는 기능이 참 많죠. 이래서 많은 사용자들이 아파치 웹 서버를 사용하는 이유가 아닐까 생각합니다. ^^

 

cronlog는 다음의 사이트에서 구할 수 있습니다

http://www.apache.kr.net/dist/log-analyzer/cronolog-1.6.1.tar.gz


HTTP/1.1에서 정의된 에러코드는 다음 <표 > 와 같습니다.

상태코드

설명

상태코드

설명

100 

Continue

404

Not Found

101

Switching Protocols

405

Method Not Allowed

200

OK

406

Not Acceptable

201

Created

407

Proxy Authentication Require

202

Accepted

408

Request Time-out

203

Non-Authoritative Information

409

Conflict

204

No Content

410

Gone

205

Reset Content

411

Length Required

206

Partial Content

412

Precondition Failed

300

Multiple Choices

413

Request Entity Too Large

301

Moved Permanently

414

Request-URI Too Large

302

Moved Temporarily

415

Unsupported Media Type

303

See Other

500

Internal Server Error

304

Not Modified

501

Not Implemented

305

Use Proxy

502

Bad Gateway

400

Bad Request

503

Service Unavailable

401

Unauthorized

504

Gateway Time-out

402

Payment Required

505

HTTP Version not supported

403

Forbidden

색깔이 들어가 있는 부분은 HTTP 1.0 에서 지원하는 코드 입니다.


로그분석 툴 소개

 


로그파일에는 CLF 포맷을 기반으로 또는 사용자에 의해 지정된 형식으로 운영자에게 다양한 정보를 제공해 주고 있기는 하지만, 기록된 내용만 가지고서는 전체적인 통계 등을 파악하기에는 힘이 듭니다. 바로 이러한 것들을 좀더 손쉽게 처리하기 위하여 여러분들이 흔히 알고 있는 웹트랜즈와 같은 웹 서버 로그 분석 프로그램을 이용하여 다양한 정보를 한눈에 파악해 볼 수가 있습니다. 여러 다양한 웹 로그분석 프로그램 중에 자유롭게 널리 사용되어 지고 있는 WebAlizer 프로그램을 알아보고자 합니다.


알아보기 전에 한가지 알아두셔야 할 점은, 분석된 결과 자료에만 너무 의존하지 말아야 한다는 점입니다. 어떤 페이지가 얼마나 방문 되었고 하는 정보를 정확히 알려줄 수 있을까요 ? 물론 수치상으로 기록된 정보로는 그렇지만 , 프록시 캐쉬 등을 통한 경우에는 웹 서버에 직접적으로 접근하지 않으므로 로그에 기록되지 않습니다.


자 그럼 본격적인 로그분석 여행을 떠나볼까요 ?


로그분석을 본격적으로 진행하기 전에 무엇보다도 필요한 것이 있겠죠. 바로 webalizer 프로그램 소스입니다. 제가 이미 apache.kr.net/dist/log-analyzer에 넣어두었으니 다운로드 받으시기 바랍니다.


Webalizer 의 컴파일은 다음과 같은 순서로 진행하시면 됩니다.


*잠깐 ! 컴파일 하시기 전에 여러분들의 시스템에 GD 라이브러리가 설치되어져 있는지 확인해 보시기 바랍니다. GD 라이브러리는http://www.boutell.com/gd 에서 구할 수가 있습니다. GD 라이브러리가 없을 경우 libgd not found 에러를 얻게 됩니다.
 

       ./configure

       make

       make install


 

사용방법 : webalizer [options] [log_file]


로그를 분석하기 위한 방법은 다음과 같은 방법으로 아주 간단하게 수행할 수가 있습니다.


webalizer /home/httpd/logs/access_log
 

이것은 /home/httpd/logs 밑에 결과값을 출력하게 되며, -c 옵션을 이용하면 특정 설정파일을 지정하여 좀더 다양하게 결과값을 조절할 수가 있습니다.


 

             webalizer -c somehost.conf
 

이렇듯 설정파일을 지정할 수가 있기 때문에 여러 웹 사이트를 운영하는 곳에서는 그 사이트에 맞는 환경을 지정하여 로그를 분석할 수가 있기 때문에 효율적으로 운영할 수가 있습니다. 기본적으로 LogFile , OutputDir 설정 정도만 하시면 간단히 이용 하실 수 있습니다.
 

분석이 끝난 후에는 설정파일에서 지정한 OutputDir 에 분석한 내용들이 들어가게 되며, 브라우저를 통해 접속하시면 <그림> 과 같이 상세한 방문자 정보를 얻으실 수 있습니다.


또한, 스크립트를 만들어 넣어두면 주기적으로 일,월별로 로그분석을 할 수가 있습니다. 다음은 스크립트의 한 예를 다룬 것으로 여러분들의 환경에 맞추어 변경하시면 됩니다. 이 예는 webalizer 에 포함된 것으로서, 웹 서버의 작동을 중지한 다음 다시 시작하도록 되어 있으나 지금까지 위에서 배웠던 내용들을 응용하시면 사용자에게 일,월별로 로그분석을 제공해 줄 수가 있습니다.
 

< rotate_logs >



#!/bin/sh


# halt the server


kill `cat /var/lib/httpd/logs/httpd.pid`


# define backup names


OLD_ACCESS_LOG=/var/lib/httpd/logs/old/access_log.`date +%y%m%d-%H%M%S`


OLD_ERROR_LOG=/var/lib/httpd/logs/old/error_log.`date +%y%m%d-%H%M%S`


# make end of month copy for analyzer


cp /var/lib/httpd/logs/access_log /var/lib/httpd/logs/access_log.backup


# move files to archive directory


mv /var/lib/httpd/logs/access_log `echo $OLD_ACCESS_LOG`


mv /var/lib/httpd/logs/error_log  `echo $OLD_ERROR_LOG`


# restart web server


/usr/sbin/httpd


# compress the archived files


/bin/gzip $OLD_ACCESS_LOG


/bin/gzip $OLD_ERROR_LOG

반응형
반응형

시스템의 로그를 위해서, syslog를 사용하며. 해킹등에 대비해서 원격 로그저장을
생각하게 되는데, 문제는 원격 syslogd 데몬이 이걸 받아주도록 해야 하고,
관리자 권한이 없다면, 외부에서 받도록 설정할 수도 없고, 자기 서버만의 로그파일에
기록하지 못하겠죠. 그래서, 원격 서버상의 일반 사용자들도 시스템로그를 백업 받을 수
있도록 함 고쳐보았습니다.

제가 이렇게 한 이유는, 얼마전 아는 웹서비스 서버가 외국 해커에게 해킹을 당했습니다.
한번 봐달라고 해서 봤는데, 할게 없더군요. 초보 해커가 아닌이상 흔적은 있지만
정보가 될만한것은 모두 지웠습니다. 그래서, 분석할 정보가 없어서, syslog의 원격로그
기능을 생각하였지만, 로그백업서버를 운영할만한 상황도 아니고, 제것도 아닌데
운영할 필요도 없다고 생각되어 이런 툴을 만들게 되었네요.

다른 리눅스상에서 작업하는 개발자나 관리자도 유용할거라 생각되어 적어봅니다.

아래에는 syslog에 대한 설명이고, 거의 마지막 3.3 섹션에서, 일반 유저권한으로서 로그백업서버역활을 할 수 있도록 하는 부분을 언급 하였습니다.

[차례]--------------------------------------------------------------------------------

1. syslog 설명
2. syslog.conf 파일 설명
3. 원격 저장을 위한 설정
3.1 로그를 받는 쪽
3.2 로그를 보내려는 쪽
3.3 일반사용자 계정으로 로그서버 설정 과 구축



1. syslog 설명

전통적인 유닉스 시스템에서는, 시스템에서 발생하는 내용들에대해서 로깅(Logging)을 제공합니다.
물론 보안과 관리의 목적이며 이 로그 파일들은 운영체제마다 조금씩 틀리지만,
리눅스의 경우 /var/log 에 쌓이게 됩니다.

시스템 관리자는 일정 규칙에의해 설정을 하게 되며, 자신이 개발하는 프로그램에도 syslog
기능을 사용하는게 가능합니다. syslog 기능은 syslogd 를 기동시킴으로서, 작동하게 되는데 물론
항상 떠 있어야 하겠고, 사용하는 관련 파일들로는 /etc/syslog.conf 가 주로 사용되고,
/etc/sysconfig/syslog, 원격백업등을위해서 /etc/hosts 파일과, /etc/services 파일등의 편집이
필요할 수도 있습니다.


2. syslog.conf 파일 설명

이 파일은 형식이, [selector]와 [action] 으로 나눠지며, 다시 [selector]는 [facility]와 [severity]로
나눠 집니다. 여기서 facility자리는 "어떤것에대해" 정도로 생각하면되고, severity는 "우선순위"
입니다. [action]은 보통 파일이름을 지정해서, 해당파일에 쓰란거죠. 여기다 원격지를 지정하면
원격지로 보냅니다.

정리하면, [facility][severity][action]은, 어떤것에대해(facility), 어떤 심각도(severity) 로,
어떻게 해라(action) 입니다.

[facility] 리스트 -----------------------------------------

kern: 커널
user: 사용자 레벨(일반 프로세스)
mail: 메일 서브 시스템
auth: 보안, 권한 프로그램들
daemon: 다른 시스템 데몬
news: 뉴스 서브시스템
local0-7: 다른용도 사용을위해 예약
* : 모든것

(이 외에도 몇가지가 더 있습니다.)

[severity] 리스트 ----------------------------------------

0 : emergency 비상상태
1 : alert 상태
2 : critical 상태
3 : error 상태
4 : warning 상태
5 : notice 상태
6 : info 정보 메세지 (시스템 분석용)
7 : debug (프로그램 디버그할때)
none : 이것이 facility와 사용되면 해당 facility는 제외,

[action] 필드 --------------------------------------------

파일명 : 해당 파일에 기록
@호스트명 : 해당 호스트로 전송

종합해서 샘플을 풀이해보자면,

mail.debug /tmp/maillog
(mail 에대해, 상태는 debug로해서, /tmp/mailog 에 기록하라)

*.debug;mail.none @myhost
(모든것에대해, 상태는 debug로, mail은 제외하고, myhost로 전송하라)

conf설정에서 중요한것은 칸을 띄울때는 공백이 아니라, 탭으로 하여야 합니다.(중요!!!)


3. 원격 저장을 위한 설정

3.1 로그를 받는 쪽

로그백업을 원격지로 보내기위해서는, 보내려는 syslogd 를 기동시킬때,
/etc/sysconfig/syslog 파일을 열어서

SYSLOGD_OPTIonS="-m 0 -r"
처럼 바꿔줍니다. -r 이 Remote 의미 입니다. 물론 위 설정을 안바꾸고 syslogd를 기동시킬때
옵션으로 줘도 되죠.



3.2 로그를 보내려는 쪽

/etc/hosts 파일을 편집합니다. 로그 서버를 giran이라고 칭하고, 도메인이 giran.uu.net 이며,
IP를 111.111.111.111 이라면

111.111.111.111 giran.uu.net giran loghost

처럼 설정을 해둡니다. /etc/hosts 파일 형식은 참고로,
[IP-address fully-qualified-domain-name hostname "loghost"] 형식입니다.

이렇게만 해두면, 로그를 받는 서버측이 잘 작동하는것을 볼 수 있습니다.
하지만, 우리의 문제는 로그를 받는쪽 서버의 일개 계정 사용자 뿐이라는 거죠.
그래서 슈퍼유저가 아니라서, 받을수도 없고, 설정할 수도 없고, 기존 로그파일에
섞일 우려도 있고요.


3.3 일반사용자 계정으로 로그서버 설정 과 구축

A) /etc/services 파일 수정

이 기능을 사용하려면, 먼저 [보내는 쪽]에서 수정해야할게 /etc/services 파일을 열어서

syslog 514/udp

라고 되있는 부분을 1514 처럼 원하는 값으로 바꿔주세요.
(이 값은 후에나올, slog 툴에서 리슨 포트랑 일치해야 겠죠)

이렇게 하는 이유는 syslogd 는 원격지로 패킷을 보낼때, udp 514번을 이용합니다.
514번은 이미 글로벌하게 사용되는 포트이고, 우리는 사적으로 사용할 계획이니까요.

B) /etc/syslog.conf 파일 예제

*.info;mail.none;news.none /var/log/messages
*.info;mail.none;news.none @loghost

위에서, 첫줄은 보통 디폴트로 있는 구문입니다. 그 아래에 같은형식으로 적고, 파일이 아닌
호스트로 수정해주세요. 이렇게 같은걸 2줄 적는 이유는 동시에 처리되게 하려는거죠
로컬 로그파일에도 기록되고, 원격 호스트로도 보내고요.

C) /etc/hosts 파일 예제

111.111.111.111 giran.uu.net giran loghost

이것은 위에서 언급했습니다.

이렇게 해서 [로그를 보내려는 클라이언트]의 설정이 마무리 되었습니다.
서버측은 설정할게 없습니다. 단지 자신의 개인 계정에서 첨부 소스파일을 압축을 풀어
소스에서, LOG_HOME 수정후, 컴파일하여 실행시키면 됩니다.

#define LOG_HOME "/user4/starzan/slog/"
처럼 되있는 부분을 자신의 계정의 디렉토리를 지정하면 되겠네요. 만약 포트가 충돌된다면,
소스에서 역시 포트 번호를 바꾸시면 되며, C 소스파일에 대해서는 설명을 생략합니다.
소스는 저도 손가는대로 짠이후 안봐서 버그가 있을수 있으니, 직접 고쳐 사용하시던지
아니면, 적어주세요. ^^

# tar xvfz slog.tgz

# make (바이너리 만듦니다.)

# ./slog
# 죽일때는, kill [pid]

이 slog는 로그파일을 원격지 ip별로 기록합니다. 저 같은경우 이렇게 실행 함으로서
여러대의 로그파일을 관리했죠.
즉,
111.111.111.111.log
111.111.111.112.log
111.111.111.113.log
처럼 패킷이 들어오는 ip에 따라 로그에 기록합니다. 그래서 서버별로 관리 하기 좋죠.

반응형
반응형

출처:http://blog.naver.com/PostView.nhn?blogId=junix&logNo=80087440477

 

로그서버 구축

 

1. 각 서버의 모든 로그를 로그서버에 원격 보관하고 웹에서 모니터링할 수 있는 환경 구축

   1. 분산되어 있는 시스템 로그를 한곳에서 실시간 모니터링할 수 있어 서버 장애 모니터링 능력을 향상시킴

   2. 각 서버 시스템로그의 백업 효과

 

  

2. 구성

서버 : x.x.x.27

클라이언트 : 전체 서버(현재는 x.x.x.44, x.x.x..20  2대로 테스트중)

데몬 : 로그서버 rsyslog, 웹프로그램 phplogcon

 

3. 데모 :

 

 

4. 설정 메뉴얼

* 클라이언트의 로그가 로그서버의 /var/log/messages 에 저장되는 구성

   다시 이로그는 로그서버의 DB에 저장됨

 

 

클라이언트(파일로 넘기는 설정, DB에도 넘어감)

yum install rsyslog rsyslog-mysql

chkconfig syslog off

chkconfig rsyslog on

service syslog stop

------------/etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-m 0"
KLOGD_OPTIONS="-x"

 

------------/etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
*.*        @x.x.x.27

 

service rsyslog start

 

 

클라이언트(파일로 남지 않고 DB로 바로 넘기는 설정)

yum install rsyslog rsyslog-mysql

chkconfig syslog off

chkconfig rsyslog on

service syslog stop

------------/etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-m 0"
KLOGD_OPTIONS="-x"

 

------------/etc/rsyslog.conf

$ModLoad ommysql.so
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '서버IP주소', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL
*.* :ommysql:x.x.x.27,Syslog,rsyslog,1q2w3e;dbFormat
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

 

service rsyslog start

 

 

서버

yum install rsyslog rsyslog-mysql php httpd mysql-sever

chkconfig syslog off

DB설정

mysql -u root
source /usr/share/doc/rsyslog-mysql-2.0.6/createDB.sql
grant insert privileges on Syslog.* to '유저명'@'%' identified by '비밀번호';
flush privileges;
quit

service rsyslog restart

mysql -u root Syslog
select count(*) from SystemEvents;

chkconfig rsyslog on

service syslog stop

------------/etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-m 0 -r"
KLOGD_OPTIONS="-x"

 

------------/etc/rsyslog.conf

$ModLoad ommysql.so
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%FROMHOST%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL
*.* :ommysql:localhost,Syslog,rsyslog,1q2w3e;dbFormat
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

 

service rsyslog start

 

 

rsyslog 정상실행 로그
May 2 00:27:32 server rsyslogd: [origin software="rsyslogd" swVersion="2.0.6"
x-pid="10400" x-info="http://www.rsyslog.com"][x-configInfo udpReception="No" upPort="514" tcpReception="No" tcpPort="0"] restart

 

방화벽 설정
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p udp --dport 514 -s x.x.x.0/255.255.255.0 -j ACCEPT
service iptables restart

 

tcp로 로그를 전달하는 설정
서버 설정옵션에 -t514 추가
클라이언트 설정에 @@x.x.x.27 과 같이 설정(UDP는 @x.x.x.27임)
방화벽 설정추가
-A RH-Firewall-1-INPUT -p tcp --dport 514 -s x.x.x.0/255.255.255.0 -j ACCEPT


 

 

todo list

- 서버 정보가 호스트네임으로 기록되는 것을 IP주소로 남길 수 있도록 수정

  - mysql로 직접 로그를 보내는 경우 %FROMHOST%가 안먹힘

- 원격로그서버 /var/log/messages 단일 파일에 모든 서버의 로그가 기록되는 것을 각 서버별/기간별로 나누어서 저장되도록 수정

- 보안 조치

   - 웹프로그램 접근제한(id/pw 인증, apache, htaccess)

   - 특정 서버만 원격로그서버를 사용할 수 있도록 제한, iptables, x.x.x.0/255.255.255.0, udp 514

 

참고자료
원격로그서버 세팅방법 : http://iscert.springnote.com/pages/1554282
rsyslog.conf : http://www.rsyslog.com/doc-rsyslog_conf_actions.html


 

---------

 

2011.3.24

 

http://gembuls.wordpress.com/2011/02/12/how-to-install-rsyslogmysql-with-loganalyzer-on-centos/

 

 

2011.3.29

 

CentOS 5.5 で rsyslogを使ってMySQLにsyslogメッセージを書き出す
http://ossexpo.blogspot.com/2010/10/centos-55-rsyslogmysqlsyslog.html

Rsyslog+MySQL+LogAnalyzer
http://itorzorg.blogspot.com/2010/10/rsyslogmysqlloganalyzer.html


RHEL ES4 update 3 x86_64にrsyslogをインストールする
http://ysmt.blog21.fc2.com/blog-entry-308.html

 

 

 

 

 

------

 

2011.12.13

 

 

Working Apache and Rsyslog configuration

http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration

 

Splunk/Rsyslog/Apache/Ubuntu Quickstart

http://bitkickers.blogspot.com/2010/12/splunk-rsyslogapacheubuntu-quickstart.html

 

Remote logging of Apache logs

http://tipstricks.itmatrix.eu/?p=274

 

Rsyslog & PHPSyslog

http://pbraun.nethence.com/doc/net/rsyslog-phpsyslog.html

 

 

 

 

 

 

2013.2.15

 

 

 

CentOS 6.3에서 rsyslog를 간단히 remote syslog 서버로 설정 변경 방법

 

출처 : http://www.ehowstuff.com/how-to-setup-central-log-server-using-rsyslog-on-centos-6-2centos6-3/

 

 

 

/etc/rsyslog.conf 의 해당 부분을 아래와 같이 수정

 

# Provides UDP syslog reception

$ModLoad imudp.so

$UDPServerAddress 0.0.0.0

$UDPServerRun 514

 

# Provides TCP syslog reception

$ModLoad imtcp.so

$InputTCPServerRun 514

 

 

 

 

 

Kiwi SyslogGen - Syslog 테스트를 위한 로그 생성기

 

 

Kiwi SyslogGen - Test Your Kiwi Syslog Server Installation

http://www.kiwisyslog.com/downloads.aspx

 

-> 요거 좋다!!!

 

 

Kiwi SyslogGen sends Unix type Syslog messages created from the GUI to a host running a Syslog Server.

Kiwi SyslogGen can be used to test a Syslog Server setup and diagnose communication problems.

 

Features

· GUI Interface

· Sends standard Unix Syslog messages (or enhanced messages compatible with Kiwi

Syslog Server)

· Fast and simple to use

· Free to use for as long as you like

· Fully test your Syslog Server setup

· Create BSD Syslog Daemon RFC3164 compliant message headers

· Send messages using either UDP or TCP protocol

· Can send sequentially numbered messages

· Can replay syslog messages from an Ethereal capture file

 

 

 

 

 

rsyslog evaluation

http://mperedim.wordpress.com/2010/01/21/rsyslog-evaluation/

 

 

반응형

+ Recent posts