Graylog2 서버로 로그 전송


11

방금 Graylog2 서버를 설정했으며 기본 서버의 모든 로그를 graylog 서버로 보내려고합니다. 주 서버에 대한 로깅을 활성화하고에 추가 *.* @logs.example.com:1337하여 그레이 로그 서버에 로그를 보내고 /etc/rsyslog.conf있습니다.

내가 원하는 것은 Graylog2가 모든 Apache 로그, 시스템 로그 (SSH 로그인, 거부 된 로그인의 경우) 및 모니터링해야하는 다른 모든 로그를 수집하도록하는 것입니다.

Apache 로그의 경우 Rails 로그도 원합니다. 내 사이트는에 /srv/www/있고 구조는 sitename.com/public_htmlsitename.com/logs입니다. 서버에 많은 사이트가 있으며 모든 오류를보고 그중에서 멋진 그래프를 만드는 쉬운 방법을 원합니다. 그러므로 왜 Graylog2를 사용하고 싶습니다 ...

logs 폴더의 로그 파일은 access.logerror.log입니다.

Rails 로그는에 있습니다 sitename.com/public_html/log. 이 포함되어 있습니다 production.log.


여기서 질문이 무엇입니까? rsyslog를 설치 한 경우이를 사용하여 Rails / Apache 로그를 Graylog2 ( rsyslog.com/doc/imfile.html ) 로 보낼 수 있습니다.
다항

답변:


10

이것은 오래되었지만 트래픽이 적거나 중간 인 사이트에 사용하는이 방법을 쓸 것이라고 생각했습니다 (교통량이 많은 사이트에 잘 작동하는지 여부는 알 수 없음).

Apache에서는 graylog2_access액세스 로그를 GELF 형식으로 포맷 하는 CustomLog 형식을 정의한 다음 nc를 통해 로그 데이터를 파이핑하여 GELF 메시지를 Graylog2의 입력으로 보내 Graylog2를 통해 로그를 보냅니다.

다음은 사람이 읽을 수있는 사용자 지정 형식입니다.

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

Apache 설정의 경우 다음은 복사 / 붙여 넣기 버전입니다.

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

그런 다음 호스트 구성에서 :

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1 좋은 것! 우리 시스템 중 하나에서 시도해야하지만 대신 오류가 발생합니다.
Henk

@Henk-오류 로그의 형식을 수행하는 경우 알려 드리고 싶지만 아직 시간이 걸리지 않았습니다. 또한 serverfault.com/questions/582510/… 에서 나중에 실행 된 정보를 확인하십시오 .
ETL

5

이 간단한 명령을 사용하여 로그 파일을 graylog2 서버로 보낼 수도 있습니다.

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

나는 주로 로그 목적이 graylog2에서 쉽게 쿼리하기에 적합한 지 결정하기 위해 테스트 목적으로 사용합니다. 프로덕션 환경에서는 rsyslog 또는 syslog-ng를 설정하지 않아도됩니다.

Rails 로그 파일을 마무리하고 어떤 일이 발생하는지 확인할 수 있습니다.


나는이 대답의 단순함을 좋아한다 : 간단하고 추가 도구가 없다. 로그 파일 타임 스탬프에 대해 어떻게해야할지 모르겠습니다. 수행 할 작업이없고 중요하지 않습니까?
texas-bronius

2

Graylog2는 표준 syslog와 Graylog 확장 로그 형식 (일명 GELF)의 두 가지 형식의 로그 만 허용합니다. 디스크의 임의 로그는 로그를 사용하고 유용한 형식으로 변환하기 위해 일부 타사 프로세스가 필요합니다.

Logstash를 살펴 보십시오 . 대부분의 사람들은이 파일을 ElasticSearch를 사용하여 로그 파일을 인덱싱하는 도구로 생각하지만 디스크에있는 많은 파일을 테일링하여 Graylog와 같은 로깅 구성 요소로 보낼 수있는 범용 "로그 라우터"도 포함합니다.


2
Rsyslog는 로그를 쉽게 읽을 수 있습니다. rsyslog.com/doc/imfile.html
다항식

1
rsyslog는 다른 파일을 입력으로 사용할 수 있지만 logstash를 사용하면 사전 정의 된 Grok 정규식 ( logstash.net/docs/1.0.17/filters/grok 참조 )을 사용하여 로그 메시지와 평문 만이 아닙니다.
joschi

위해 rsyslog을 비교 청소기 설정과 같은 작업을 수행 할 수 있습니다 시스템 로그는-NG : loggly.com/support/sending-data/logging-from/syslog/syslog-ng/...
HVNSweeting

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.