월별 글 목록: 2014년 8월월

Linux Server monitoring 정리 4. iostat

iostat 는 디스크 io 를 체크할수 있는 툴 입니다.

여러 옵션이 있지만 제가 즐겨 쓰는 옵션만 소개하겠습니다.
(더 알고 싶으시면 man iostat 로…)

x : 확장된 정보를 출력한다.
h : 사람이 보기 편하도록 출력한다.

명령어 뒤에 디바이스 아이디 (디바이스명)을 입력하면 해당 디바이스 정보만 출력한다.

예) 디바이스 vda 의 확장된 정보를 3초에 한번씩 사람이 보기 좋게 출력한다.
[root@Cloudvine_RFC6 home]# iostat -xh vda 3

Screen Shot 2014-08-29 at 1.22.37 PM

항목중에 중요한 항목만 정리를 하자면

rrqm/s : 디바이스 큐에 쌓인 초당 요청 건수
wrqm/s : 디바이스 큐에 쌓인 초당 쓰기 건수
r/s : 디바이스에 요청한 초당 읽기 건수
w/s : 디바이스에 요청한 초당 쓰기 건수
await : 디바이스 큐에서 처리를 위해 데이타를 요청한 I/O 의 평균 시간
svctm : 디바이스에서 처리한 평균 시간
%util : 디바이스에서 요청한 I/O 작업을 처리하기 위한 평균 시간 (35미만 이면 좋음 65이상히면 점검요망 90이상이면 장애)

예) 디바이스 vda 의 정보를 3초에 한번씩 사람이 보기 좋게 출력한다.
[root@Cloudvine_RFC6 home]# iostat -h vda 3

Screen Shot 2014-08-29 at 1.48.02 PM

항목중에 중요한 항목만 정리를 하자면

tps : 디바이스에 초당 건수 요청 건수

Linux Server monitoring 정리 3. df du

df : 디스크 파티션의 용량을 확인하는 명령어 입니다.

워낙 간단하면서 쓸만한 명령어라서 사용가능한 옵션을 몇개 없지만 쓸만한 옵션은

-h : 1m = 1,048,576 계산한다.
-H : 1m = 1,000,000 계산한다.

Linux console 창에 아래와 같이 입력한다.

[root@Cloudvine_RFC6 /]# df -H

결과는 아래와 같다.

Screen Shot 2014-08-29 at 11.05.16 AM

각 파티션 별로

Size : 총 파티션의 사이즈
Used : 사용된 크기
Avail : 남아있는 크기

로 정리할수 있다.

du : 디렉토리나 파일의 용량을 확인할때 사용하는 명령어 입니다.

c : 용량의 합을 표시
s : 지정한 디렉토리만의 합을 표시
h : 사람이 보기 편한 단위로 표시한다 (K, M, G)

Linux console 창에 아래와 같이 입력한다.

[root@Cloudvine_RFC6 home]# du -csh ./*

결과는 아래와 같다.

Screen Shot 2014-08-29 at 11.16.43 AM

Linux Server monitoring 정리 2. vmstat

다음은 서버 모니터링시 가장 많이 쓰는 vmstat 에 관하여 알아보도록 하겠습니다.

Linux console 에 vmstat 를 치면 결과가 나옵니다.

[root@Cloudvine_RFC6 ~]# vmstat

다만 추가로 옵션으 입력 한다면

[root@Cloudvine_RFC6 ~]# vmstat 3

3초에 한번씩 결과를 출력하는 명령어 입니다. 보통은 이 명령어를 이용해서 모니터링을 실시 하고 있습니다.

결과를 보면

vmstat

1. memory 부분
– free : 사용 가능한 free 메모리
– buff : 버퍼로 사용된 메모리 (프로세스가 사용중이거나 사용을 위해 대기중인 총 메모리)
– cache : 캐시로 사용된 메모리 (항시 사용되기 위해 할당된 메모리)

2. swap 부부
– si : 스왑 in
– so : 스왑 out (이 값은 0에 가깝게 유지되어야 한다. 이 값이 커진다면 메모리가 부족한 것이다 이 값이 커지면 disk io 가 발생하기 때문에 cpu 사용률도 올라가고 시스템이 전체적으로 느려진다.)

3. system 부분
– in : 초당 인터럽트 발생량 (이 값이 높아지면 network adapter 를 점검해 보아야 한다.)
– cs : 초당 컨텍스트 스위칭 발생량 (이 값이 높아지면 top 명령어를 이용하여 cpu 점유율이 높은 프로세스를 찾아서 실행이 오래 걸리는 로직이 있는지 살펴 보아야 한다)

4. cpu 부분
– id : cpu idle 상태의 값 (이 값이 작아지면 cpu 사용률이 높다는 것이다)
– wa : io wait 값 (이 값이 높아지면 iostat 를 사용하여 disk io 를 체크해 보아야 한다.)

Linux Server monitoring 정리 1. top

Linux 서버 모니터링에 관하여 정리를 할까 합니다.

그 첫번째로 대표적으로 서버를 모니터링 하는 명령어인 top 에 관하여 핵심만 다룰까 하는데요.
일단 이 top 명령어는 결국은 /proc/stat 의 정보를 파싱하는 명령어 라는것은 참고해 두시면 될꺼 같습니다.

실행 명령어는 Linux console 창에서 top 이라고 입력 합니다.

[root@Cloudvine_RFC6 ~]# top

그러면 아래와 같은 창이 뜹니다.

Screen Shot 2014-08-29 at 9.39.14 AM

여기서 요즘은 다 cpu multi core 세상이라 cpu 코어 별로 사용량을 보고 싶다면 1 을 입력 합니다.

그러면 아래와 같이 cpu 코어 별로 사용량을 볼수 있습니다.

Screen Shot 2014-08-29 at 9.39.26 AM

다음으로 각 핵심만 찝어서 각 항목이 의미하는 바를 알아보도록 하겠습니다.

top

1. load average 순서대로 각 1분 5분 15분 간 부하의 평균을 보여주는 값으로 5 이상이면 서버가 부하를 받고 있다고 생각하면 되고 10~15 이상은 고부하를 받고 있다고 생각하면 될꺼같다.

2. cpu 사용량으로 여기서 볼 값은 뒷부분의 id, wa 값이다 id 는 cpu 미사용율을 보여주는 값으로 100에서 이값을 빼면 정확한 cpu 사용량을 알수 있으며 wa 값은 io wait 값으로 이 값이 크더면 cpu 의 interrupt 값이 증가하는 것으로 원인은 Disk io / network io / cpu cache io 문제일 가능성이 있다.

참고로 id 값을 이용한 cpu 사용률을 뽑는 방법

[root@Cloudvine_RFC6 ~]# top -n 2 | grep -i cpu\(s\) | awk '{print $5}' | tr -d '%id,' | tail -1 | awk '{print 100-$1}'

3. 프로세스별 사용 내역 부분인데 여기서 볼 부분은 VIRT, RES, SHR, %CPU, %MEM 입니다.
VIRT : 해당 프로세스가 지금까지 사용한 가상 메모리의 용량을 보여줍니다.
RES : 해당 프로세스가 사용중인 물리 메모리의 용량을 보여줍니다.
SHR : 해당 프로세스가 사용중인 공유 메모리의 용량을 보여줍니다.
%CPU : 해당 프로세스가 사용중인 CPU 사용률을 보여줍니다.
%MEM : 해당 프로세스가 사용중인 MEMORY 사용률을 보여줍니다.

추가로 사용할만한 명령어

1. shift + p : cpu 사용순 별로 정렬
2. shift + m : memory 사용순 별로 정렬

간단하게 알아본 TOP 사용법 이었습니다.

프레임웍이 필요 없는 Javascript 를 이용한 Logger 스크립트

간단하게 사용할수 있고 쉽게 로그를 생성할수 있는 Javascript logger 스크립트 및 로그 생성기를 공개 합니다.

기본적으로 Ajax 를 이용해서 로그 서버와 통신을 하는데 가장 큰 문제가 브라우저별로 동작 하는가와 크로스 도메인 이슈 인데
이것들을 다 해결 하였으며 브라우저는 IE 6 부터 지원 하고 대부분의 모바일 브라우저와 일반 크롬이나 파이어폭스 등을 전부 지원합니다.

소스는 github 에서 받을수 있으며 get source 이 링크에서 다운로드 가능하다.

로그를 만들어 주는 것은 Sample 로 JSP 와 PHP 를 지원하며 추후 계속 언어를 추가할 예정이다.
(사용하시는 분이 직접 만들어서 써도 된다)

No X11 DISPLAY variable was set, but this program performed an operation which requires it

Mac 에서 작성한 Java 프로젝트를 Jar 로 만든뒤 Linux 서버에 올려서 jar 파일을 바로 실행을 시켰다.

스크린샷 2014-08-23 오후 5.25.12

어? 이런 오류가 나서 놀랐다.

No X11 DISPLAY variable was set, but this program performed an operation which requires it

이유는 Linux DISPLAY 환경 설정이 되어있지 않아서 문제가 발생 했다는건데 이건 서버라 X윈도우 쓰지 않기 때문에

그냥 export DISPLAY=:0.0 로 처리해서 해결

Android GCM Push Server (C language, Linux Server)

그동안 간단하게 만들어서 잘 쓰고있던 C language 로 만든 Android GCM 푸시 데몬을 github 에 오픈 소스로 공개 했다.

전에 PHP 라이브러리 공개는 해보긴 했는데…. 이번엔 처음 해본 완성품 소스코드 공개 조금 떨리긴 한다.

C 로 작성 했기 때문에 사양이 낮은 리눅스 서버 (Amazon t1.micro 같은) 에서도 잘 돌아가며 설치가 간편(?) 한 편이다.

링크는 Light_GCM_Linux_Push_Daemon 여기로 가면 볼수 있다.

정말 기본적인 푸시 기능과 결과를 저장해주는 간단한 데몬으로 이왕 소스 오픈 한김에 점점 기능도 추가하고 성능도 업 해야겠다.