it-swarm-ko.tech

여러 서버에서 여러 로그 파일을 집계하는 가장 좋은 방법

여러 HP-UX 서버에 분산 된 여러 텍스트 로그 파일을 모니터링하는 간단한 방법이 필요합니다. 여러 분산 레거시 시스템의 텍스트 및 XML 로그 파일이 혼합되어 있습니다. 현재 우리는 서버로 ssh하고 tail -f grep 추적 할 로그가 많은 경우에는 확장되지 않습니다.

로그는 다른 형식이며 폴더의 파일 (일부 크기에 도달하면 자동으로 회전)이므로 원격으로 수집하고 서로 다르게 구문 분석해야합니다.

필자의 초기 생각은 각 파일 유형에 대해 사용자 정의 파일 판독기를 사용하여 각 서버에서 실행할 수있는 간단한 데몬 프로세스를 만들어 소켓을 통해 네트워크를 통해 내보낼 수있는 공통 형식으로 파싱하는 것이 었습니다. 로컬로 실행되는 다른 뷰어 프로그램은이 소켓에 연결되고 구문 분석 된 로그를 간단한 탭 GUI로 표시하거나 콘솔에 집계합니다.

이런 식으로 구현하려면 어떤 로그 형식을 변환하려고합니까?

다른 쉬운 방법이 있습니까? Chainsaw 와 함께 사용하기 위해 로그 파일을 log4j 형식으로 변환해야합니까, 아니면 원격 소켓에 연결할 수있는 더 나은 로그 뷰어가 있습니까? 다른 로그 질문 에서 제안한대로 BareTail 을 사용할 수 있습니까? 이것은 대규모 분산 시스템 이 아니며 모든 응용 프로그램이 UDP 브로드 캐스트를 사용하거나 JMS 큐에 메시지를 넣도록 현재 로깅 구현을 변경하는 것은 옵션이 아닙니다.

40
Claes Mogren

옵션 :

  1. SocketAppender를 사용하여 모든 로그를 하나의 서버로 직접 보냅니다. (이로 인해 서버 성능이 저하되고 단일 실패 지점이 추가 될 수 있습니다.)
  2. 스크립트를 사용하여 데이터를 집계하십시오. scp, ssh 및 인증 키를 사용하여 로그인 프롬프트없이 스크립트가 모든 서버에서 데이터를 가져올 수 있습니다.
2

아마도 실시간 로그 감시를위한 가장 가벼운 솔루션은 tail -f와 동시에 Dancer 's Shell 을 사용하는 것입니다.

dsh -Mac -- tail -f /var/log/Apache/*.log
  • -a는 ~/.dsh/machines.list에 정의한 모든 컴퓨터 이름에 해당합니다.
  • -c는 tail을 동시에 실행하기위한 것입니다.
  • -M은 호스트 이름 앞에 모든 출력 행을 추가합니다.
21
mrm

아래와 같은 간단한 Shell 스크립트를 사용합니다. 분명히 다른 파일 이름에 대해 말하고 어느 상자를 찾을 지 결정해야하지만 기본 아이디어를 얻으려면 약간 조정해야합니다. 우리의 경우 여러 상자의 같은 위치에 파일을 마무리합니다. 암호를 입력하는 대신 저장된 키를 통한 SSH 인증이 필요합니다.

#!/bin/bash
FILE=$1
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do
     ssh $box tail -f $FILE &
done

^ C를 사용하여 테일링을 종료 할 수 없다는 Mike Funk의 의견에 대해서는 위의 multitails.sh 파일에 저장하고 그 끝에 다음을 추가했습니다. 이렇게하면 테일링이 끝나면 kill_multitails.sh 파일이 생성되고 자체적으로 삭제됩니다.

# create a bash script to kill off 
# all the tails when you're done
# run kill_multitails.sh when you're finished

echo '#!/bin/sh' > kill_multitails.sh
chmod 755 kill_multitails.sh
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids
Perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids
cat kill_multitails_ids >> kill_multitails.sh
echo "echo 'running ps for it'" >> kill_multitails.sh
echo "ps -awx | grep $FILE" >> kill_multitails.sh
echo "rm kill_multitails.sh" >> kill_multitails.sh
rm kill_multitails_ids


wait
12
masukomi

Logscape -가격표없이 splunk처럼

5
JzJ

로그 파일에 쉽게 액세스 할 수 있도록 정확하게이 목적으로 vsConsole을 작성한 다음 앱 모니터링 및 버전 추적을 추가했습니다. 당신이 어떻게 생각하는지 알고 싶습니다. http://vs-console.appspot.com/

2
prule

멀티 테일 또는

" chip 는 시스템 관리자 및 개발자를위한 로컬 및 원격 로그 구문 분석 및 모니터링 도구입니다.
스와치, 티, 테일, 그렙, ccze 및 메일 기능을 추가하여 하나로 묶습니다. "

예 :.

chip -f -m0 = 'RUN'-s0 = 'red'-m1 = '. *'-s1 user1 @ remote_ip1 : '/ var/log/log1/var/log/log2/var/log/log3 user2 @ remote_ip2 : '/ var/log/log1/var/log/log2/var/log/log3' '| egrep "RUN | ==> /"

모든 로그 파일에서 'RUN | ==> /'패턴을 사전 필터링하여 -m0 패턴의 발생을 빨간색으로 강조 표시합니다.

2
Joao Figueiredo

Chainsaw에서 사용할 수있는 다양한 수신자 (VFSLogFilePatternReceiver를 사용하여 ssh, SocketReceiver, UDPReceiver, CustomSQLDBReceiver 등을 통해 파일을 테일링)를 제공 한 다음 기본 탭 ID를 변경하거나 다음을 제공하여 '사용자 정의 표현식 로그 패널'을 작성하여 로그를 단일 탭으로 집계 할 수 있습니다. 다양한 소스 탭의 이벤트와 일치하는 표현식입니다.

1
Scott

XpoLog Java의 경우

1
tom

gltail-여러 서버에서 Ruby, SSH 및 OpenGL을 사용하여 서버 트래픽, 이벤트 및 통계를 실시간으로 시각화

1
Albert T. Wong

Awstats는 여러 Apache 로그 파일을 병합 할 수있는 Perl 스크립트를 제공합니다. 이 스크립트는 메모리 사용량이 매우 적으므로 로그 파일이 메모리에로드되지 않으므로 확장 성이 뛰어납니다. 나는 당신이 필요로하는 것이 아니라는 것을 알고 있지만 아마도이 스크립트에서 시작하여 필요에 맞게 조정할 수 있습니다.

1
Alexandre Victoor