성능모니터링이 왜 필요 한가? 
windows 서버를 모니터링하는 방법중에 하나는 resource를 보는것이다. 
제품 장애를 처리하는 일을 하는 나에게는 pc 모니터링이 필요 할때가 있다. 

예를들어 pc가 느려서 javascript 수행속도가 엄청 느려야 발생하는 문제를 발견했을때. 
재현이 힘들다. 그래서 대상 pc에 cpu 모니터링을 통해 100을 치는 순간이 얼마나 되는지 체크해 보려고 한다. 

서버의 경우도 마찬가지 장시간의 리소스 사용기록을 보고 싶을 때 따로 툴을 만들지 않아도 된다.
맨 아래 bat로 실행하는 간단한 툴에 대한 소개가 있습니다.

windows7에서 해본 내용입니다.

참조 블로그 : http://jkmoon.tistory.com/76

windows xp 제어판 > 성능정보 및 도구 > 고급도구 > 성능 모니터 열기
또는 실행 > perfmon.msc 명령어로 실행 합니다.

아래와 같은 창이 나옵니다.


1. 모니터링 하고 싶은 할목 추가. 



Processor 항목을 펼치면 카운터들이 나오는데 필요한 것을 골라서 세팅 한다.  


성능모니터 우클릭 > 새로만들기 > 데이터 수집기 집합


- 이름 지정 cpu
- 저장 위치 지정 > 기본값
- 수집기 집합 > 기본값 

2. 데이터 수집기 설정.


디렉터리 속성에서는 날짜 별로 하위 드렉토리를 생성 할수 있게 설정 할 수 있다. 
(같은 디렉토리에 이미 파일이 있으면 실행 되지 않는다.)


일정탭으로 이동하여 일정을 등록 한다.


중지조건을 설정 할 수 있다. 
10시간 지나면 중지 (아직 완료가 안됨)


등록된 작업의 속성 확인.


1초 간격으로 값을 가져오도록 설정 합니다. 


시작을 누르면 모니터링 시작


C:\PerfLogs\Admin\cpu 경로에 파일이 생겨있는지 확인 합니다. 

파일이 생성 되었으면 성공.


이거말고 command를 이용하고 싶고 파일로 남기고 싶다면 

아래내용을 붙여서 bat 파일을 만들면 
1초에 한번씩 수집된 cpu 정보가 홈디렉토리 밑에 문서 밑에 해당 날자의 로그가 쌓인다.

@echo off

set CPUFILE_DATE=%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%
set CPUFILE_TIME=%TIME:~0,2%.%TIME:~3,2%
set CPUFILE=spectra-cpu-%CPUFILE_DATE%-%CPUFILE_DATE%.log

@echo %CPUFILE%

typeperf "\Processor(_Total)\%% Processor Time" > %HOMEPATH%\Documents\%CPUFILE% 2>&1


Posted by 마법수정화살
,

flume 정리.

Hadoop 2014. 10. 8. 19:17
flume을 막연히 해보려니 하기가 싫다. 
가장 큰 이유는 windows에 설치 하다가 실패해서 인듯.. 역시 안되면 재미가 없넹..
스터디 목적으로 대충 정리를 하니까 할수 있다는 자신감이 생긴다.ㅎ

Flume : Cloudera 에서 공개한 오픈소스 로그 수집기 
(안정성과, 가용성이 높다)

Flume OG : 0.9.x 버전 Cloudera
Flume NG : 1.0 버전 apache

번거로운 Flume OG 의 설정을 개선하기 위해 NG 가 등장.

아키텍쳐가 바뀜

Flume OG

Flume NG



Event : 헤더와 데이터(payload)로  구성되며 agent를 통해 이동되는 단위
Flow : 원점에서 최종 목적지 까지 이벤트들의 흐름
Client : 이벤트의 출발 지점에서 동작 하여 flume으로 전달되는 인터페이스의 구현
           일반적으로 데이터를 소비하는 어플리케이션의 프로세스 골간에서 동작 하며
           예로 Flume Log4j Appender 가 client가 됩니다. 
Agent : sources, channels , sinks 로 구성됨 agent간 이벤트를 이동할 수 있다.
Source : 특정 메커니즘을 통해 전달된 이벤트를 소비 할수 있는 인터페이스 구현 (종류는 아래 참조)
           예로 avro source는 다른 agent로 부터 전달된 avro 이벤트를 수신하기 위해 사용 될수 있는 source 구현 입니다. 
           source는 이벤트를 수신하면 하나 이상의 채널로 넘겨줍니다.
Cannel : event에 대한 일시적인 저장소, sink가 전송 후 해당 이벤트가 제거될때 까지 event는 channel에 유지됩니다. 
           예로 embeded database 백업 파일 시스템을 사용 하는 JDBC 채널이 있습니다.
           channel은 flow 에서 내구성을 보장하는 중요한 역할을 합니다 
Sink : 채널에서 이벤트를 읽어와 출력 대상에 씀 sink가 출력 대상에 이벤트(데이터) 전달을 완료 하면 채널에서 해당 이벤트를 삭제합니다.

이러한 컨셉은 flume의 아키텍쳐 , 구현, 설정, 배포에 도움이 됩니다. 

Folw 구성 종류

Multi-agent (에이전트 간 연결)


Consolidation (다수의 노드를 한곳으로)


Multiplexing (한 이벤트를 다양한 방식으로 처리할 때)


source 의 종류 

Spooling Directory Source : 디렉토리에 새롭게 추가되는 파일을 데이터로 사용
Exec Source : 명령행을 실행하고 콘솔 출력 내용을 데이터 입력으로 사용
Avro Source : 외부 Avro 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용
Trift Source : 외부 Thrift 클라이언트에서 전송하는 데이터 수신해서 입력으로 사용
JMS Source : JMS 메세지를 입력으로 사용
Syslog Source : 시스템 로그를 입력으로 사용
NetCat source : TCP 로 라인 단위 입력 받음

Sink의 종류

HDFS Sink : HDFS에 데이터 파일로 씀
HBase Sink : HBase에 데이터를 씀
Avro Sink : 다른 Avro 서버 (Avro Source) 에 이벤트를 전달 함
Thrift Sink : 다른 Thrift 서버 (Thrift Source)에 이벤트를 전달 함
File Roll Sink : 로컬 파일에 데이터를 씀
MorphlineSolrSink : 데이터를 변환 해서 Solr 서버에 씀
ElasticSearchSink : 데이터를 변환 해서 ElasticSearch 클러스터에 씀.
Null Sink : 이벤트를 버림
 
Interceptor 

 Source로 들어온 이벤트 수정 또는 버릴 때 사용
- Source로 들어온 이벤트는 interceptor 를 거친 뒤에 채널에 전달

Timestamp : 이벤트 헤더에 현재 시간 값 추가
Static Interceptor : 이벤트 헤더에 지정한 값 추가
Regex filtering interceptor : 정규 표현식에 일치하는지 여부에 따라 이벤트를 버릴지 결정

한 개 이상 interceptor 적용 가능





맥에서는 한방에 됨..

참조사이트 : 도움이 많이 되었습니다. 








'Hadoop' 카테고리의 다른 글

windows 에서 hadoop 시작 하기.  (0) 2014.08.14
windows 에서 hadoop 설치  (3) 2014.08.13
Posted by 마법수정화살
,

tomcat 을 사용하고 jsp 소스코드를 수정하여 반영 하는 상황이라고 가정.

오래된 시스템 tomcat 5 이하? 라고 가정

2011년 8월 달에 작업된 파일을 2014년 10월에 수정하는 것으로 가정. 

작업을 진행 하려 했으나 실패하여 롤백을 해야하는 상황이라고 가정

운영서버에 바로 반영 하는 것으로 가정


이런 가정이 맞아 떨어지면 무서운 경험을 할 수 있다. 


꼼꼼한 사람들은 작업전에 기존파일을 이쁘게 백업 해 놓는다


test.jsp : 수정일자 2011년 08월 10일

test.jsp : 수정일자 2014년 10월 8일


반영을 하고 테스트를 하는데.. 뭔가 잘안되서 롤백을 하는 상황.

예전 파일을 다시 운영서버에 덮었는데 정상 동작 하지 않는다. 


여기서 집중력을 잃으면 홀로 헤메이다 큰 낭패를 보며 식은땀을 등으로 흘릴 수 있다.

집중력을 있다면  디버깅을 시작한다.

센스가 있다면 원인을 추측하여 소스보기를 통해 빨리 원인을 찾는다.

경험이 있다면 롤백파일을 수정해서 수정일을 최신화 하거나 tomcat의 work 디렉토리에 해당 파일을 확인하고 지운다.


배신자 톰캣은 때로는 아래와 같은 행동을 하는데 버전별로 어떤지는 모른다.

이전날짜 jsp 파일은 컴파일을 안한다.

톰캣 재시작을 아무리 해도. 컴파일을 안한다. 

Posted by 마법수정화살
,