오늘도 업무차 Cacti를 계속 건들였습니다..

오늘 하게 된건 얼마전부터 구글링하고 템플릿들 적용시켜보고 해봤지만 안되던.. Windows 계열 Disk IO 그래프 그리기 입니다..

구글링해서 찾은 템플릿들은 대부분 유닉스나 리눅스, 윈도우즈 2000 혹은 2003까지 사용가능한 템플릿들이 더라구요

지금 제가 써야되는건 윈 서버 2008 r2 이상 버전에도 적용이 되는 걸 찾아야 되는데 말이죠..

이래 저래 검색하다 보니 snmpwalk 라는 녀석을 알게 됬고 Windows 8.1을 대상으로 사용을 해봤더니..


.1.3.6.1.4.1.2021.13.15.1 = No more variables left in this MIB View (It is past the end of the MIB tree)

 

요런 메시지가 뜨더군요.. 구글 번역기를 사용해보면..

 

MIB보기에 남아 더 이상 변수 ( MIB 트리의 끝을지나 없음) 

....

...

뭔 말인지 더 모르겠내요 .. 대충 보면 아마 더 이상 MIB를 이용해서 관련 정보를 볼 수 없는거 같은데..

또 다시 이래저래 검색해보니 2003 이후 버전은 지원이 안된다는 것 같더라구요

그래서 찾은 방법이 바로 WMI를 이용해서 해당 호스트의 정보를 가져오는 건데요..

아주 우연히 한 외국사이트를 찾게 됬는데 WMI를 이용해서 스크립트를 짜고 Cacti에 적용시키는 방법까지

상세히 써놓은 곳이 있더라구요

물론 영어지만 막 전문용어로 써있거나 한 것도 아니고 중요한 부분은 친절하게 굵게 표시도 해놨습니다.

(우연히 찾은 곳 : http://www.lost-it.org/drupal/?q=node/527)

이 곳에 들어가보시면 알겠지만 예제로 CPU 관련한 스크립트를 보여주내요.

덤으로 마지막 글에 메모리 관련 스크립트도 주지만 저는 제대로 적용이 안되더라구요 ㅠㅠ

 

우선 WMI를 사용하려면 Cacti 서버에 wmic가 설치되어 있어야합니다.

위에 적어준 lost-it에 들어가보시면 Cacti WMI 1 이라는 글에 yum을 이용해서 설치하는 방법이 소개 되어있습니다.

보면 기본적으로 설치가 되어있지 않은 atomic 리포지터리를 설치를 하라고 하내요

제가 설치한 CactiEZ도 기본 리포지터리에 wmi가 존재하지 않아서 설치를 해줬습니다.

yum list wmi 해서 없는 분만 설치해주세요

(굳이 atomic이 아니라 wmic가 있으면 어떤 리포지터리든 상관없어요)

 

lost-it 글을 그대로 가져와보면

 

wget -q -O - http://www.atomicorp.com/installers/atomic | sh

 

이걸 그대로 쉘에 입력해주면 혼자 막 ~ 실행되다가 질의를 한번 합니다. 읽어보진 않았지만 설치하는데 동의하냐고 물어보는게 아닐까 싶습니다....

금방 설치가 되고 yum을 이용해서 wmi를 설치해줍니다.

 

yum -y install wmi

 

설치가 다 되고 나면 이제 WMI 이용한 Disk IO 출력 스크립트를 간단히 짜보고 Cacti에 적용시켜보겠습니다.

스크립트 자체는 생각보다 간단합니다. perl을 이용하는거고 단순히 인자값을 받아서 wmic 를 이용, 정보를 가져오는 건데요.

lost-it 글을 순서대로 가다보면 친절하게도 cpu관련 스크립트 완성본이 있습니다.

 

#!/usr/bin/perl

use strict;

my $user = $ARGV[0];

my $password = $ARGV[1];

my $server = $ARGV[2];

my $result = `wmic -U wonderland/$user%"$password" //$server "select DeviceID,LoadPercentage from Win32_Processor"`;

my @results=split(/\n/,$result);

my @tmparray=split(/\|/, @results[2]);

print "CPUNo:@tmparray[0] Load:@tmparray[1]\n";

 

간단..하죠 ? 인자값을 하나하나 변수로 받아주고 다시 그 변수를 wmic 구문에 입력해준 뒤 입맛에 맞게 출력하기 위해서

split 구문을 사용합니다.

6번째 줄을 보시면 wmic -U wonderland 라고 써있는데 저 원더랜드라는 값은 도메인명 입니다.

기본적으로 workgroup이어서 워크그룹을 사용하는 호스트라면 굳이 안적으셔도 무방합니다.

이제 저 스크립트를 DIsk IO 관련 스크립트로 수정을 해보겠습니다.

 

#!/usr/bin/perl
$user = $ARGV[0];

$password = $ARGV[1];

$server = $ARGV[2];

$disk_name = $ARGV[3];

$result = `wmic -U $user%"$password" //$server "SELECT DiskReadBytesPerSec,DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk where Name like '%$disk_name%'"`;


@split_test=split(/\n/,$result);
my @split_test_2=split(/\|/,@split_test[2]);

@split_test_2[0]=@split_test_2[0] / (1024*1024);
@split_test_2[1]=@split_test_2[1] / (1024*1024);
my @split_test_3=split(/ /,@split_test_2[2]);

 

print "DiskReadBytesPersec:@split_test_2[0] DiskWriteBytesPersec:@split_test_2[1] DiskName:@split_test_3[1]\n";

이게 제가 수정한 스크립트 내용인데요.

보면 5번 째 줄에 원하는 파티션을 고를 수 있도록 드라이브 라벨을 입력할 수 있게 변수를 하나 더 추가 했습니다.

그러고 6번 째 줄 wmic에 있는 select 구문을 수정해줬는데요.

흔히들 알고 계시는 select 구문이 맞으니 겁내실 것 없습니다.

select 구문을 보고 의문이 드는게 있다면 저 table 명과 column명을 어떻게 알아내느냐..

처음에 저도 몰라서 구글링을 통해서 저 select 구문을 통채로 가져와서 썼었는데요

회사 형이 아주 좋은 툴을 알려주시더라구요

WMIexplorer라는 툴인데요 말 그대로 WMI를 탐색할 수 있습니다..

쿼리를 이용해서 원하는 걸 볼 수도 있고 원하는 테이블도 검색할 수 있습니다.

구글에 검색하면 바로 나오구요 설치형도 아니고 실행형이라 편리하내요.

(WMIexplorer : http://www.ks-soft.net/hostmon.eng/wmi/)

다운 받으셔서 원하는 값 확인하시고 다른 스크립트나 WMI 이용하실 때 참고하면 좋을 듯해요

 

본론으로 돌아와서 저 스크립트를 Cacti 설치경로/scripts 에 파일로 만들어줍니다.

저는 /var/www/html/scripts/WMI-DISK-IO.pl 로 만들어줬습니다.

 

이제 스크립트를 만들었으니 Cacti에 적용시켜야겠죠?

먼저 Cacti에 접속 후 Console -> collection Methods -> Data Input Methods 로 들어갑니다.

보면 많은 데이터 인풋 메소드들이 있는데 구경해보실분은 구경하고 우측 상단에 ADD를 눌러줍니다.

 

 

ADD를 눌러주면 위 사진 처럼 화면이 뜰텐데 Name은 원하시는 이름을 넣어주시면 됩니다.

Input Type은 Script/Command 로 선택해주시구요

Input String에는 lost-it에 적혀있는걸 참고해서 다음과 같이 입력해주시면 됩니다.

 

perl <path_cacti>/scripts/WMI-DISK-IO.pl <user> <password> <host> <Label>

 

<> 안에 들어있는 것들은 인자값을들 말하는 거니 따로 수정하실 필요없이 파일명만 맞게 수정해주시면 됩니다.

 

 

입력을 다 했으면 Create 버튼을 눌러 생성시켜 줍니다.

그러면 Input Fields와 Output Fields 가 보이실텐데요 먼저 input Fields 부분의 ADD를 눌러줍니다.

눌러보면 아래 같은 화면이 뜨게 되는데요

 

 

여기서 설정해줘야되는건 Field [Input]과 Friendly Name 입니다.

Field [Input]은 위에서 Data Input Methods를 추가할 때 Input String부분에 <>안에 넣어줬던 값이 Drop Box로 출력되는건데요

제가 만든 스크립트를 이용하기 위해서는 이 DropBox안에 있는걸 하나하나 다 생성해줘야합니다.

우선 user가 선택되어 있으니 그대로 두시고 Friendly Name에 원하시는 이름을 써주시면 됩니다.

로그인 계정이 아니라 Cacti에서 사용할 필드명입니다.

(말로 이해가 되지 않을까 사진을 찍었습니다. 왼쪽에 굵은 글씨들이 Friendly Name이 출력된 것입니다.) 

 

Friendly Name 입력하시고 Create 버튼 눌러주시면 됩니다.

이런 식으로 DropBox 값을 순차적으로 생성해주시면 되는데요, host 값을 설정할 때만 추가적으로 Special Type Code란에 hostname이라고

입력해주시면 됩니다.

이렇게 Input Fields 생성은 끝났고 이번에는 Output Fileds를 설정해줘야합니다.

역시 Add 버튼을 눌러보면 아래사진 처럼 나오는대요

 

 

Output Fields도 Input Fields와 비슷하게 설정을 해주면 됩니다.

다만 Filed [Output] 란에 입력을 직접해줘야한다는건데요.

이 부분은 위 스크립트에 마지막 줄에 print 문을 참고하면 됩니다.

print "DiskReadBytesPersec:@split_test_2[0] DiskWriteBytesPersec:@split_test_2[1] DiskName:@split_test_3[1]\n";

출력내용을 보면 DiskReadBytesPersec 하고 DiskWriteBytesPersec, DiskName 이렇게 3가지가 있습니다.

이 세가지를 Field [Output] 란에 하나씩 입력해주면 됩니다. Friendly Name은 입맛대로 설정해주시면 됩니다.

여기까지 하셨으면 아래 사진처럼 혹은 비슷하게 설정이 됬을 겁니다.

 

혹시 모르니 Save 버튼 한 번 더 눌러주고 Console -> Templates -> Data Templates로 갑니다.

데이터 템플릿에 들어가보면 이것 저것 정신 없어 보이는데

맨 위에 Data Templates에 있는 Name칸에 원하시는 이름 넣어주시고

그 아래 Data Source에 있는 Name에도 원하시는 이름 넣어주시면 되는데 lost-it을 참고해서 저는

|host_description| - WMI-DiskIO-DataTemplate 이렇게 입력 했습니다.

파이프 안에 이름은 아마 Cacti 자체에 제공되는 기능인듯한데요 .. 따로 찾아보지는 않았습니다.

그리고 Data Input Method DropBox에서 아까 만들어준 Data Input Methods를 선택해줍니다.

이 상태로 생성을 하려고 하면 Internal Data Source Name을 입력하라고 에러가 날텐데요

이제부터 설정하는 것들은 그래프를 그릴 때 직접적으로 영향을 주는 값들입니다.

우선 아무 값이나 Internal Data Source Name에 입력해주고 저장을 합니다.

그러면 저장하기 전하고 입력하는 부분이 달라졌을텐데요

이건 말로 설명하는 것보단 제가 설정한 화면을 보는게 더 빠를 것 같내요

 

 

이게 제 설정 내용인대요. Data Source Item 부분을 보면 위에 탭이 3개가 있습니다.

아까 설정해줬던 Output Fields에 대해서 각각 설정을 잡아준거구요

지금 보이는 저 화면은 DiskLabel에 대한 설정인데 원하는대로 라벨리 출력은 안되더라구요 .....

Read/Write에 대한 설정도 위 화면이랑 크게 다를건 없는대요

Read/Write는 Maximum Value와 Data Source Type그리고 Output Filed가 위 화면과 다릅니다.

맥시멈은 아무래도 그래프에 출력되는 최대값을 설정하는 걸 말하는듯 합니다.

(U를 사용하면 최대치를 사용안한다고 되있는데 .. 이 말이 최대치에 한계가 없다는건지 설정을 안해주겠다는건지 모르겠내요)

(더구나 U를 사용했더니 그래프가 안그려지는 현상이...어떤 내용인지 알게 되면 수정하겠습니다.)

저는 Read/Wirte에 맥시멈값을 1000으로 잡아줬구요 기본값은 100입니다.

그리고 아웃풋 필드는 Read면 아까 데이터 인풋 메소드에서 설정해줬던 Read 값을 선택해주면 됩니다.

Write도 마찬가지로 설정해주면 되구요..

그리고 밑에를 보면 Custom Data 란이 있는대요

보면 아까 Data Input Methods 설정해줄 때 입력해줬던 Input Fields의 Fiendly Name들입니다.

미리 저 곳에 값을 입력해두면 그 값으로 고정이 되기 때문에 여러 호스트에 적용을 못하게 됩니다.

그래서 Use Per-Data Source Value(Ignore this Value)를 체크해줍니다.

이걸 체크해주면 그래프를 그릴 때 원하는 값을 입력해줄 수 있게 됩니다.

이렇게 설정을 해줬다면 Save 버튼을 눌러 저장을 해줍니다. Data Template 설정은 이게 끝입니다.

 

다음은 마지막으로 Console -> Templates -> Graph Templates로 갑니다.

역시나 우측 상단에 Add를 눌러줍니다.

Add를 누른 직후에는 딱히 입력해줄 값이 없습니다.

그냥 보이는대로 Name과 Title을 입력해주시고 Create 눌러주시면 됩니다.

Title을 설정할 때 |host_description| 이걸 입력하셔도 상관없습니다.

 

 

생성이 완료되면 바로 화면이 바뀌는데요 그 화면 위쪽을 보면 이렇게 No Items라고 출력이 되어있습니다.

이제 이 두 곳을 채워줘야합니다. 다행인건 Graph Template Items를 추가하면 자동적으로 Graph Item Inputs도 추가가 됩니다.

Graph Template Items에 Add를 눌러줍니다.

들거가게 되면 또 여러 입력칸들이 나오는대 바로 제가 입력한 사진을 보겠습니다.

 

 

먼저 Data Source는 DropBox로 구성되어있는대요 눌러보면 기본적으로 제공되는 여러가지 데이터템플릿도 같이 보입니다.

그 중에서 원하시는 데이터템플릿, 여기서는 먼저 Read에 대한 그래프를 설정하기 위해서

아까 생성한 Data Template 중에 DiskRead를 선택해줬습니다.

Color는 그래프 상에 그려질 때 출력되는 색상을 골라주는 것이구요

Opacity/Alpha Channel은 그려지는 그래프의 투명도 설정입니다. 100%로 설정해주면 완전 찐한 그래프가 그려집니다.

그리고 이제 중요한 Graph Item Type.  DropBox를 열어보면 여러가지가 있는데

그 중에 제가 아는 것은 세 가지입니다. AREA와 GPRINT 그리고 COMMENT인대요

AREA는 직접적으로 Cacti 그래프에 그리고 싶을 때, 즉 그래프화면에 출력을 시켜주고 싶을 때 선택하는 값이구요

GPRINT는 직접적으로 그래프에 출력을 되지 않지만 그래프 밑에 TEXT형식으로 값을 출력시키고 싶을 때 선택해줍니다.

COMMENT는 그냥 그래프 밖 여백에 글을 출력시켜 놓는거구요.

그리고 사용해보지는 않았지만 HRULE과 VRULE은 아마 가로세로축 이름을 설정해줄 때 사용하지 않을까 싶내요

그 다음 Consolidation Function의 DropBox를 열어보면 AVERAGE, MIN, MAX, LAST 이렇게 4가지가 있습니다.

다 단어 그대로의 의미를 갖습니다. AVERAGE는 평균값을, MIN은 최소값을, MAX는 최대값을..

LAST는 그 출력할 정보의 마지막 값을 출력하고자 할 때, 다시 말하자면 그 시점에 실질적인 값을 출력하고자 할 때 선택합니다.

마지막으로 Text Format은 그래프 화면에서 범례 형식으로 출력될 이름을 써주면 됩니다.

그 외 나머지는 사용을 하지 않아서 뭔지 모르지만 영어를 대충 해석하면 쉽게 사용할 수 있지 않을까 싶습니다..

이렇게 Write도 마찬가지고 설정해주고 Save눌러주시면 됩니다.

이제 스크립트를 Cacti에 적용시키는 작업은 끝이 났습니다.

이제 제대로 작동을 하는지 테스트를 해보겠습니다.

Device 추가하고 그래프 추가하는걸 다 안다는 가정하에 생략하겠습니다.

디바이스를 추가해주고 방금 만들어준 Graph Template을 추가해준 뒤 Create Graphs for this Host를 눌러보면

 

이렇게 그래프가 아직 생성되지 않고 기다리고 있습니다.

이유는 위에서 만든 스크립트를 사용하려면 인자값을 넣어줘야하는데 아직 Input Field에 대한 값을 넣어주지 않았기 때문이죠

오른쪽에 체크를 해주고 Create를 눌러봅니다. 그러면 아까 저 ~ 위에서 보여드렸던 화면이 나옵니다.

 

 

이 곳에 그래프를 그리고자하는 대상의 정보를 입력해주면 됩니다.

DiskLabel은 예를 들어 C드라이브를 보고 싶다 하시면

C 혹은 C: 이라고 입력하시면 됩니다.

다 입력하셨고 지금까지 설정한 값이 아무 이상 없다면 Create를 눌렀을 때 아무런 에러가 뜨지 않을 것 입니다.

이제 Graph가 제대로 그려졌는데 확인을 해줍니다.

처음 그래프 생성을 하고 난 직후 몇 분정도는 RRD파일이 생성되지 않아서 그려지지 않을 텐데요

시간이 좀 지나면 rrd파일이 생성되고 그래프가 정상적으로 보이게됩니다.

RRD가 생성된거 같은대도 그래프가 그려지지 않는다면 ... 설정값을 확인해보시거나 그래프 디버깅모드를 한번 해보시면

원인을 찾으실 수 있습니다.

저는 Hyper-V에 올려놓았던 Windows Server 2008 R2를 대상으로 해봤구요

쉬는 녀석이라 특별히 IO가 발생하지 않아서 HDTune을 이용해서 IO를 발생시켜준 뒤 테스트 했습니다.

 

 

그래프 모양이 네모라서 그렇게 이쁘지는 않지만 그래도 정상 작동을 합니다.

이렇게 모든 설정이 끝났구요.

Data Template이나 Graph Template은 원하시는 설정이 있으시면 입맛대로 수정하시면 됩니다.

스크립트도 WMI Explorer를 사용해서 원하는 테이블에 원하는 칼럼을 찾으셔서 수정하시면 되겠구요 ~

 

설명이 많이 부족한건 이 많은 기능들을 다 사용해보지 않고, 설정도 해보지 않고 제가 했던 내용만 적는 바람에

내용이 많이 부실 한거 같내요. 대부분 lost-it을 참고해서 만들었습니다.

그 외 모르는 점들은 구글링하고 영단어 검색하면서 했습니다.

아는 것도 없이 막 쓴 글이라 틀리거나 수정할게 많을 수도 있습니다.

수정해야할 부분이 있다면 댓글 달아주세요 !

 

참고 URL : http://www.lost-it.org/drupal/?q=node/527

 

 

 

' 2016년 이전 > Server' 카테고리의 다른 글

Cacti Windows Physical Memory 설정  (0) 2014.03.10
CactiEZ를 이용한 Cacti 설치  (0) 2014.03.06
FTP Active Mode & Passive Mode  (0) 2014.01.08
vsftpd 설치 및 설정  (1) 2009.11.12

업무 차 Cacti를 조금씩 공부하고 있는데

이렇다할 국내 사이트가 없어서 관련 정보찾기가 상당히 귀찮고 어지럽다..(영어만 몇 시간을 들여볼 때도..)

이번에는 Cacti에 Windows 8을 모니터링하려고 했는데 Cacti 설치 직후 제공되는 데이터 쿼리(SNMP - Get Mounted Partitions)에서 Virtual Memory는

출력이 잘 되나 Physical Memory는 아무리 찾아도 없길래 찾아보았다..

 

위 아래 사진은 Cacti 설치 직 후 바로 Windows 8.1을 붙이고 SNMP - Get Mounted Partitions를 추가하고 그래프를 생성했을 때..

 

 

딱 보면 알겠지만 이미 그래프를 그리기 전에 물리메모리에 대한 정보를 가져오질 못하고 있었다..

당연히 그래프를 그려봤자 물리메모리 그래프는 안나온다.

하여 처음에는 데이터 쿼리가 잘 못된줄 알고 확인차 FreeBSD도 똑같이 붙여봤다.

결과는.. 물리, 가상 메모리 둘 다 이쁘게 정보를 가져오고 이쁘게 그래프도 그려준다.

 

 

 

FreeBSD에 테스트를 해보고 나는 Win 계열은 다른 데이터쿼리나 템플릿을 써야되는 줄 알고 구글링으로 구할 수 있는

상당 수의 쿼리와 템플릿을 적용시켰었다.. 결과는 대 실패 거기다 템플릿 설치 이상하게 하는 바람에 Cacti 자체가 엉망이 되서

재설치를 했었다. 왜 안되는건가 하고 계속해서 구글링을 하다가 초반에 보고 무시해던 소스파일 수정하는 글을 다시 보게 됬다..

웬만하면 순정상태에서 하고 싶었지만 아주 간단하게 소스를 수정하는 거라 되지도 않는 영어실력으로 대충 보고

해당 라인을 주석처리 시켜보았다..

아래 사진 3장은 주석처리는 과정이다.

 

우선 cacti가 설치되어있는 디렉토리로 가서 scripts 디렉토리로 간다.(CactiEZ를 사용한다면 나와 경로가 같은 것이다)

scripts 디렉토리에 보면 ss_host_disk.php 라는 파일이 있다. 이걸 열어보자

열어보면 당연히 php로 작성되어있는데 주석처리하는 부분을 쉽게 찾아가려면 "$arr2" 라고 2번 검색해준다.

그러면 아래와 같은 라인을 찾을 수 있을텐데 바로 저 if문 라인을 주석처리해주면 된다.

 

 

if ($arr2[$i] > 100000) 요래 되있는걸

#if ($arr2[$i] > 100000) 오래 바꿔주던지 라인을 삭제하면 된다.

 

생각보다 상당히 간단했고 설레는 마음으로 다시 SNMP - Get Mounted Partitions를 추가하고 그래프를 그리러 갔는데..

있어야할 Physical Memory가 보이지 않았다.. 난 또 영어못해서 다른거 수정했나 싶었다.. 

 

근데 아무리 생각해도 소스 수정했다고 그게 바로 적용될리가 없다는 생각이 번뜩 들었고.. 뒤로 가서 디버깅 버튼을 한 번 눌러봤다..

사진에 표시한 status 수치가 변하길 바라면서.. (저 item 수치랑 rows 수치가 아마 그래프 그릴 떄 필요한 정보가 아닌가 싶습니다..)

 

결과는 성공했다.

아래 사진처럼 status 수치가 상당히 많이 늘어났다..

 

 

기분 좋게 Create Graphs for this Host 눌렀고 나는 Physical Memory를 볼 수 있었다..

 

 

특별히 달라지는 부분도 없고 메모리 정보 출력도 정확하다.

다만 소스 수정 후 있지도 않는 F, G, H, I, J 까지 인식을 하는데 이건 크게 신경안써도 될 것 같다.

영어를 해석을 다 못해서 왜 저 소스 부분을 없애면 이렇게 작동을 하는지 알지는 못했다..

영어 공부도 좀 해야되는데..

어쨌든 Cacti에서 Windows Physical Memory 출력시키기 끝

 

 

' 2016년 이전 > Server' 카테고리의 다른 글

Cacti WMI 이용해서 그래프 템플릿 만들기  (1) 2014.03.12
CactiEZ를 이용한 Cacti 설치  (0) 2014.03.06
FTP Active Mode & Passive Mode  (0) 2014.01.08
vsftpd 설치 및 설정  (1) 2009.11.12

사실 제목은 CactiEZ를 이용해서 Cacti를 설치한다는 의미로 보이지만

실제론 그냥 CactiEZ를 설치하면 바로 Cacti를 사용할 수 있다.

Cacti는 대략 아래와 같다. (원글 : https://kldp.org/node/92013)

cacti 소개

  • ping, snmp를 이용한 모니터링
  • 쉬운 인터페이스 : MRTG, nagios가 설정파일을 이리저리 만져야 하는데 반해 웹 인터페이스에서 몇 번 만져주는 것으로 모니터링 설정 가능.
  • 플러그인 확장 : 기본 cacti는 그다지 기능이 많지 않으나 PIA(Plugin Architecture) 패치를 하면 플러그인을 사용할 수 있 각 플러그인을 사용하면 nagios에 버금가는 기능을 사용할 수 있음.
  • 동작 원리는 운영체제의 스케쥴러에서 일정 시간마다(기본값은 5분) poller 스크립트를 실행해 각 서버의 정보를 가져와 DB에 저장, 그 값을 참조해 rrd 그래프를 그리는 것 같음.
  • 모니터할 호스트가 많을 경우 poller 스크립트를 바이너리로 대체 가능. 성능은 기존 스크립트 사용에 비해 바이너리로 실행할 경우가 4배 정도 빠르다(기본으로 제공하지 않으며, 소스 받아와 컴파일을 해야함).
  • 단점으로, PIA을 비롯한 플러그인들은 정식 배포 버전을 가져다 사용해도 소스 수정을 하지 않으면 바로 사용하기 어려운 점이 있다.

 

설치는 앞서 말했듯이 CactiEZ를 설치해주면 상당히 쉽게 구동이 가능하다.

업무 차 사용해본게 다라서 소스설치나 기타 다른 설치방법은 정확히 모르겠다.

(소스 설치에 경우는 위 cacti 소개 원글 주소에 가보면 설명이 되어있다.)

 

우선 CactiEZ 홈페이지로 가서 CactiEZ를 다운받아보자

URL : http://cactiez.cactiusers.org/

접속을 해보면 상단 메뉴바에 Download라고 메뉴가 있는데 정작 들어가보면 다운을 받을 만한 링크가 없다.

당황하지말고 내용을 보면 홈페이지 최상단 우측에 "CactiEZ v0.7: Torrent - HTTP" 라고 써있는게 보일 것이다.

토렌트는 말 그대로 토렌트를 이용해서 CactiEZ를 다운 받는 방법이고 HTTP는 직접 다운로드 방법이다.

입맛대로 원하는 다운 방법으로 CactiEZ를 다운 받는다.

다운을 받고 나면 Hyper-V던 VM이던 VirtualBox든 로컬PC든 설치를 시작해보자

CactiEZ 기반이 CentOS기 때문에 특별히 설치에 어려운건 없다.

그냥 리눅스 설치하듯이 설치해주면 끝난다. 혹시나 설치과정이 보고 싶은 사람은 펼쳐보면 된다.

(특별히 설명은 없고 이미지로만 설치과정을 찍어놨다.)

 


이렇게 설치하고 재부팅이 끝나고 나면 바로 cacti에 접속할 수 있다.

웹 브라우저에서 CactiEZ의 IP를 입력해준다.

접속을 하게되면 로그인화면이 나오는데 ID/PW를 모른다고 당황하지 말자

cacti 기본 비밀번호는 admin/admin 으로 되어있다.

최초 로그인시에는 비밀번호 수정을 위한 페이지가 뜨게 되니 원하는 비번으로 변경 후 이용하면 되겠다.

참고로 CactiEZ에서 제공하는 것들의 기본적인 정보는 위에 기재 해놓은 CactiEZ 공식홈에 Documents 메뉴에 가보면

다 적혀있다.

이렇게 손 쉽게 Cacti 설치가 끝이 났다.

자세한 사용법은 좀 더 익숙해지고 나면 포팅할 예정이다.

아 마지막으로 참고할게 CactiEZ는 Cacti만 제공하는 것이 아닌 걸로 알고 있다.

기본적으로 Nagios도 제공되는 걸로 기억한다.

자세한건 검색과 공식홈페이지를 이용하도록 ..

 

참고 URL : https://kldp.org/node/92013

참고 URL : http://wnstjqdl.tistory.com/7

CactiEZ 공홈 : http://cactiez.cactiusers.org/

 

' 2016년 이전 > Server' 카테고리의 다른 글

Cacti WMI 이용해서 그래프 템플릿 만들기  (1) 2014.03.12
Cacti Windows Physical Memory 설정  (0) 2014.03.10
FTP Active Mode & Passive Mode  (0) 2014.01.08
vsftpd 설치 및 설정  (1) 2009.11.12

FTP(File Transfer Protocol) 작동 모드

 

기본적으로 FTP Session 의 구성은 FTP Client Server 간의 통신으로 SYN Packet, ACK Packet으로 이루어진다. Active Mode의 경우 Firewall은 시스템 구성에 있어 문제를 발생시킬 수 있다. 그 이유는 Firewall 사용시 FTP Server Firewall을 통해 클라이언트와 통신을 이루어야 하므로, 이러한 추가되는 상황까지 분석해야 하며 이러한 불편함을 덜고자 Passive Mode가 필요하게 되었다.



 

Active Mode

- 클라이언트에서 서버로 접근을 시도하는 방법 (서버측 21, 20번 개방 필요)
 

클라이언트가 서버 쪽 21포트에 연결을 하면 서버 쪽에서 능동적으로 클라이언트의 불특정포트에 접속을 시도하게 된다 이때 방화벽이나 NAT가 있다면 커넥션이 제대로 성공이 안되고 된다고 하더라도 ls 와 같은 명령어를 주었을 때 list failed가 된다.

1. Client Command Port ( TCP n , n(ex.1026)>1023 )에서 FTP Server Command Port(TCP 21)으로 접속/응답  à Client Data Port 정보 전달

2. Client 에서 제공한 정보를 기반으로 Server Data Port (TCP 20)에서 FTP Client Data Port (TCP n(ex.1026)+1)로 접속 및 응답

 

 방화벽 설정 시 유의 사항
 Server  : TCP 21번에 대한 Client 접속 허용

 Client  : Server 측의 모든 접속 허용 (보안 상에 문제 있음)

 

 

Passive Mode

- 서버가 클라이언트로 접근을 시도하는 방법 (서버측 21번 개방 필요)

 

전통적인 FTP 방식인 Active Mode에서 방화벽을 사용할 경우에는 포트를 하나만 열어주는 경우가 대부분인 상황이 발생되는데 이런 경우에 최근 나타난 Passive Mode를 이용하여 접속을 하면 데이터에도 접속할 수 있는 방식

1. Client Command Port (TCP n, n(ex.1026)>1023)에서 FTP Server Command Port (TCP 21)으로 접속/응답    → Server Data Port 정보를 Client 에게 전달

2. Server 에서 제공한 정보를 기반으로 Client Data Port (TCP n(ex.1026)+1)에서 FTP Server Data Port로 접속.(임의포트로 지정)

 

- 접속환경이 주로 Server측 공인 IP이고 접속 자는 클라이언트 유동 or 가상 IP

Client에서 21port 접속하고 Passive로 전환을 요청 시 서버는 1023보다 큰 특정포트를

클라이언트에게 알려주고 알려준 포트를 사용하여 Listening을 하며 대기

 

 

 방화벽 설정 시 유의 사항
 Server  : TCP 21, TCP n번에 대한 Client 접속 허용

      제공되는 FTP 서버에서 Passive Port에 대한 설정 가능 여부 확인
Client  : 없음

 

 

 

 

 

액티브 모드와 패시브 모드의 차이점

 

어느 쪽에서 접근을 시도하는가에 있으며 액티브모드일 경우 접속이 잘 안 되는 이유가 발생되는데 그 이유는 서버 측에 방화벽이 있을 경우 방화벽에서 걸리기 때문이며 대부분 방화벽 같은 경우 들어오는 포트에 대해서 필터 링은 하지만 나가는 포트에 대해서는 필터 링을 하지 않기에 ftp 서버로 접근하려는 대부분의 경우 패시브 모드를 주로 사용하게 된다. 또한 방화벽 단에서 나가는 포트에 대해서도 필터 링을 하게 되면 패시브 모드로도 접근이 원활하지 않은 경우가 있으면 대표적인 예로는 V3에 개인방화벽 부분이 체크가 되어있으면 패시브 모드로 해 놓아도 안 되는 경우가 발생된다. 이런 경우 v3 > 개인방화벽 > 사용 안 함으로 바꾸어 주면 접속이 원활이 진행이 되어진다.

 

 

1차 출처 : http://cafe.naver.com/smartpiljava.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=524

2차 출처 : http://blog.bagesoft.com/765

 

 

*편의상 존댓말로 쓰지 않았습니다.
개인적인 공부를 하고 기록으로 남기는거니

약간 틀린부분도 있고 다른곳에 올라와있는 자료와 다를 수도 있습니다
.*
*
초반에 루트의 현재 위치가 ftp디렉토리로 되어 있는데 이건 신경쓰지 않으셔도 됩니다
.*
*
스샷은 Fedora 10 에서 찍은 것입니다.*

*중간중간 //불라불라// 이렇게 ‘//’ 이 사이에 있는 말은 개인적인 말입니다.*
---------------------------------------------------------------------------


루트 권한으로 그림과 같이 yum list vsftpd를 입력한다.
(
패키지명을 알고 있다면 굳이 이 작업을 안해도 된다
)
입력하고 나면 위와 같이 패키지명이 검색된다
.
(
패키지명과 버전을 다를 수도 있다
)
패키지명도 알았으니 마지막줄과 같이 입력해 설치를 한다
.

 

# yum install vsftpd.i386을 입력하고 나면 위와 같은 화면이 출력된다.
잠깐 기다리고 나면 마지막 줄과 같이 뜨는데 y를 입력하고 엔터를 치자
.



설치가 다 되었다
.


제대로 설치가 되었는지 rpm -qa | grep vsftpd 를 입력해 확인해보자.
필자는 제대로 설치가 되었다
.
---------------------------------------------------------------------------

이제 설치가 다 되었으니 환경설정을 해보자.

 


우선 cd 명령어를 이용해 /etc/vsftpd 로 이동하자.
그 후 vi 등 에디터를 사용해 vsftpd.conf를 실행한다
.
(cd
명령어로 vsftpd 폴더로 이동하지 않고 바로 경로를 지정해 실행해도 된다
)

 

anonymous_enable=YES

이 옵션은 익명사용자가 접근을 할 수 있게 할 것인지를 묻는 옵션이다.
YES
를 하면 익명사용자가 FTP에 접속할 수 있다
.


local_enable=YES

이 옵션은 로컬 계정 사용자의 ftp접근 권한을 묻는 옵션이다.
YES
를 하면 로컬 계정 사용자가 FTP에 접속할 수 있다.
 

write_enable=YES

이 옵션은 파일의 저장, 삭제 등과 같은 파일을 변경하는 FTP명령을 사용할 수 있도록 할 것인가를 묻는 옵션이다. 익명 서버에서는 보통 NO로 설정하고 실명서버인 경우는 각 사용자마다 자신의 디렉토리 같은 곳에 데이터를 업로드 할 수 있게 해주어야 하므로 보통 YES로 설정해준다.

local_umask=022

이 옵션은 파일이나 디렉토리가 생성될 때 파일 허가권(퍼미션)에 적용될 umask값을 지정해주는 옵션이다.
022
로 설정하게 되면 디렉토리가 생성될 때는 755구조의 퍼미션을, 파일이 생성될 때는 644구조의 퍼미션을 가지게 되는 것이다

anon_upload_enable=YES

이 옵션은 FTP에 익명사용자가 업로드가 허용된 디렉토리에서 파일을 업로드 할 수 있는가를 설정하는 옵션이다. 이 부분 앞의 주석을 제거하고 YES로 값을 변경하면 익명사용자의 업로드가 허용된다.
anon_mkdir_write_enable=YES

이 옵션은 익명사용자가 새로운 디렉토리를 생성할 수 있게 할 것인지를 묻는 옵션이다.
이 부분 앞의 주석을 제거하고 YES로 값을 변경하면 익명사용자가 새 디렉토리를 생성할 수 있게 된다
.


dirmessage_enable=YES
이 옵션은 FTP사용자가 새로운 디렉토리로 이동하였을 때 그 디렉토리에 있는 메시지 파일을 사용자에게 보여줄 것인가를 설정하는 옵션이다. YES를 설정하면 FTP사용자가 디렉토리를 이동하면 메시지를 보여주게 된다.
(cf.
위 옵션이 활성화 되있을 시에는 message_file옵션을 같이 사용하는 옵션으로 각 디렉토리별로 원하는 메시지를 담은 .message 라는 파일을 만들어놓고 vsftpd.conf message_file=.message라는 줄을 넣으면 된다
.)  
(//
잘은 모르겠지만 알FTP같은 소프트웨어 외에는 확인이 잘 안되는 듯하다.//)
xferlog_enable=YES
이 옵션은 FTP의 파일 송수신 결과를 xferlog_file옵션으로 지정된 로그 파일에 저장할 것인가를 설정하는 옵션이다.  YES를 하면 지정된 로그 파일에 로그를 저장하게된다.
connect_from_port_20=YES
이 옵션은 FTP의 데이터 전송 포트를 20번으로 사용할 것인가를 묻는 옵션이다. 이 옵션이 꺼져있으면 vsftpd 서버는 1024번 포트 이상의 임의의 포트를 데이터 포트로 사용하게 된다.
(FTP
서버의 포트를 변경해야 하는 경우에는 이 값을 NO로 설정한다
.)
chown_uploads=YES
이 옵션은 익명으로 업로드된 파일에 대해 chown_username 옵션으로 명시된 사용자
의 소유권으로 변경되도록 할 것인가를 설정하는 옵션이다. 기본값은 NO
(
이 옵션은 파일 보안 및 관리상에 도움이 될 수도 있을 것이다
)
chown_username = whoever
이 옵션은 chown_uploads 옵션과 같이 사용하는 옵션으로 위에서 말한 사용자
의 계정을 담고 있는 파일이다.
(//
옵션으로 생각하는데 참고하고 있는 책에서는 파일이라고 하내요 허헛.. 아시는분은 댓글이라도
...//)


xferlog_file=/var/log/vsftpd.log
이 옵션은 FTP의 파일 송수신 로그를 저장하는 파일을 지정하는 옵션이다.
지정하지 않고 넘길 시에는 기본값인 /var/log/xferlog 에 기록된다
.
xferlog_std_format=YES
이 옵션은 파일 송수신 로그를 표준 xferlog 포맷으로 저장되도록 할 것인가를 설정하는 옵션이다.
기본값은 NO이다
.
idle_session_timeout=600
이 옵션은 FTP명령을 실행한 이후 설정해준 시간동안 다른 명령을 입력하지 않으면 접속 섹션이 끊어지게 하는 옵션이다. 기본값은 300초 이다.(시간단위는 초)
data_connection_timeout=120
이 옵션은 FTP 서버로 부터 데이터를 다운로드하거나 업로드 한 후에 다시 파일을 전송하지 않으면 끊어질 시간을 설정하는 옵션이다. 지정된 시간 동안에 데이터 전송이 없으면 클라이언트 접속이 끊어진다. 기본값은 300초 이다.


nopriv_user=ftpsecure
이 옵션은 vsftpd 데몬을 루트 권한이 아닌 시스템에 존재하는 일반 유저의 비특권 권한으로 작동되도록 하고자 할 떄 설정하는 옵션이다. 기본값은 nobody(//자세하게는 모르겠내요.. 아시는분은 댓글남겨주세요 ~//)
async_abor_enable=YES 
이 옵션은 async ABOR 명령을 가능하도록 설정하는 옵션이다. 기본값은 NO. 보안상 그리 좋지 못한 옵션이긴 하지만 일부 FTP 클라이언트 프로그램에서 파일 전송을 취소하였을 때 취소 되지 않은 상태로 있는 경우가 생기곤 하는데 이 때 사용할 수도 있다.
(//
이 부분도 자세히는 모르겠군요그저 책보고 쓴거구요. 자세히 아시는분 댓글 달아주세요 ~ //)

ascii_upload_enable=YES
옵션파일을 업로드 할 때 아스키모드로 업로드 하는 것을 허용 할 것인지 묻는 옵션이다. 보통은 보안상의 문제로 NO로 설정하거나 주석처리 한다.

ascii_download_enable=YES
옵션은 파일을 다운로드 할 때 아스키 모드로 다운로드 하는 것을 허용할 것인지 묻는 옵션이다. 보통은 보안상의 문제로 NO로 설정하거나 주석처리 한다.

 


ftpd_banner=Welcome to blah FTP service.
옵션 FTP사용자가 FTP에 접속하였을 때 안내메시지 등을 쓰는 옵션이다. 한글도 사용이 가능하다.

deny_email_enable=YES
옵션은 익명 계정(ftp 혹은 anonymous)이 로그인할 때 이메일 주소 형태로는 로그인을 할 수 없도록 설정할 수 있는데 이 때 사용하는 옵션이다. (이 부분을 적용하게 되면 banned_email_file 옵션으로 명시된 파일에 존재하는 anonymous@ 같은 형태의 주소로는 로그인이 불가능해진다.)

banned_email_file=/etc/vsftpd/banned_emails
옵션익명 접속시 허용하지 않을 이메일 패스워드 형태를 담고 있는 파일을 명시하는
. 위에 옵션과 함께 작동되며 banned_email 에 로그인을 허용하지 않을 이메일 주소 형태를 한줄씩 넣으면 차단이 된다.



chroot_list_enable=YES

옵션은 사용자가 로그인시 자신의 디렉토리에 대해 chroot를 갖도록 할 것인가를 묻는 옵션이다. YES로 설정값을 주면 chroot_list_file 옵션으로 명시되는 파일에 있는 사용자는 자신의 디렉토리 이외의 상위 디렉토리로는 접근이 불가능해진다.

chroot_list_file=/etc/vsftpd/chroot_list

옵션 chroot_list_enable 옵션과 같이 사용하는 옵션이다. 이 부분에 명시된 파일에 들어있는 사용자는 자신의 디렉토리 외에 상위 디렉토리로 접근이 불가능해진다.

ls_recurse_enable=YES

옵션 ls R 명령어를 허용할 것인가를 묻는 옵션이다. 기본값은 NO. 이 옵션을 잘못 사용하면 많은 시스템 자원이 소모되기 때문에 크래커들에게 공격을 받을 위험이 있어 조심히 사용해야하는 옵션이다.

listen=YES

옵션 vsftpd 데몬을 standalone로 동작되도록할 때 설정하는 옵션이다. 기본값은 NO.주의할 점은 inetd 모드로 vsftpd 데몬을 돌릴 때는 이 옵션을 사용하면 안된다.

listen_ipv6=YES

옵션 FTP서버를 IPv6에서 운영할 때 설정해주는 옵션이다. 일반적으로 IPv6을 사용하지 않기에 IPv6을 사용하는 사람만 설정해주면 된다.

pam_service_name=vsftpd

옵션 PAM을 이용하여 사용자 인증을 하고자 할 때 인증 파일을 지정하는 옵션이다.

userlist_enable=YES

옵션 userlist_file 옵션으로 명시된 파일안에 있는 계정들만 로그인을 허용할 것인가를 설정하는 옵션. userlist_file=/etc/vsftpd/user_list 로 설정되어있다면 user_list 에 있는 계정들만 FTP서버에 로그인 할 수 있게 된다. 기본값은 NO

(cf. 위 옵션과 반대되는 옵션인 userlist_deny도 있다.)

tcp_wrappers=YES

옵션 TCP 랩퍼에 의해서 vsftpd 접속을 제어하도록 할 것인가를 묻는 옵션이다.

/etc/hosts.allow /etc/hosts.deny 파일에서 접근 허용할 IP와 거부할 IP주소를 명시하여 접속을 제어할 수 있다.

------------------------------------------------------------------

* 그 외 다른 옵션들

session_support=YES 이 옵션은 wtmp에 로그를 남기기게 할 것인지 묻는 옵션이다.

YES로 하면 last 명령어로 FTP 접속 여부를 알 수 있다.

max_clients=100 이 옵션은 최대 접속자 수를 설정하는 옵션이다. 100 부분을 수정하면된다.

max_per_ip=3 이 옵션은 호스트당 최대 접속 수를 설정하는 옵션이다. 3 부분을 수정하면 된다. 0으로 설정하게 되면 무제한이 된다.

listen_port=21 이 옵션은 FTP Standalone 으로 운영할 때 포트를 변경하고자 할 때 설정하는 옵션이다. 기본값은 21.

dual_log_enable=YES

이 옵션은 /var/log/xferlog 파일과 /var/log/vsftpd.log 파일 모두에 FTP 파일 전송 기록이 저장되도록 하는 옵션이다. 기본값은 NO

-------------------------------------------------------------------

이제 대략적인 vsftpd의 환경설정이 끝났다.

환경설정이 끝났으니 ftp서버를 켜 보자.


위와 같이 써주면 vsftpd가 시작되는 것을 확인 할 수 있을 것이다.

vsftpd를 끄고 싶으면 아래 그림과 같이 해주면 된다.


이렇게 쳐주면 vsftpd가 꺼지게 된다.

혹 재 시작을 하고 싶다면 아래와 같이..


간단히 start stop의 부분을 restart로 바꿔주면 vsftpd가 재시작된다.

------------------------------------------------------------------

첫 문서화 작업이라 많이 부족해보이내요 ~

틀린 부분이나 조금 부족해서 보충해야 할 부분이 있다면 언제든지 말씀해주세요 ~


+ Recent posts