본문 바로가기

IT지식

Cacti 서버 모니터링 시스템 만들기

반응형

세상 모두의 IT 잇츠

 

 

 

안녕하세요. 세상 모두의 IT 잇츠입니다.

 

두번째 OpenSource 는 두구두구 Cacti 모니터링 시스템입니다~!!

모니터링 시스템만 두번째입니다. 서버, 네트워크 관련 직종에서 근무하다보니 아무래도 이런 시스템에 많이 익숙하네요..ㅎㅎ

 

 

여러분들도 한번 구성해보시고 이전에 올린 Zabbix와 비교하여 더 좋은 시스템을 사용하시면 될 것 같습니다!

 

 

1. cacti 소개하기

 

소개

Cacti는 업계 표준 오픈 소스 데이터 로깅 도구인 RRDtool에 대한 프론트 엔드용 응용 프로그램으로 설계된, 오픈

소스 웹 기반 네트워크 모니터링 및 그래프 도구이다. Cacti는 사용자가 소정의 간격으로 서비스를 폴링하고 그

결과 데이터를 그래프로 표시 할 수 있다.

 

일반적으로 CPU 부하 및 네트워크의 대역폭 같은 수치 데이터를 그래프로 변환다. 일반적인 사용은 단순 네트워크 관리 프로토콜 (SNMP)를 통해 네트워크 스위치 또는 라우터 인터페이스를 폴링하여 네트워크 트래픽을 감시하는 것이다.

 

프론트 엔드는 각자의 그래프 세트를 가진 복수의 사용자를 처리 할 수 있어서 전용 서버, 가상 개인 서버 및 코로케이션을 공급하는 웹 호스팅 제공 업체가 고객들의 대역폭 통계를 확인하기 위해 사용하기도 한다. RRDtool의 수동 구성 없이 모니터링 할 수 있는 특정 설정을 허용하여 데이터 수집 자체를 구성하는 데 사용될 수 있다. Cacti는 쉘 스크립트 실행을 통해 다양한 소스를 모니터링 할 수 있도록 확장 할 수 있다.

 

장점

- 대부분의 기능에 아름답고 심플한 웹 인터페이스를 제공 가능하다.

- 자바 스크립트를 사용한 강력한 그래프 기능이 가능하다.

- 시스템 권한에 대한 미세한 설정이 가능하여 사용자 별 권한 부여가 가능하다.

- 원하는 정보만 정확하게 볼 수 있게 자유로운 그래프가 배치가 가능하다.

 

단점

- 서버의 과부하 없이도 그래프가 아무 이유 없이 작동을 중지하거나 값이 누락되는 경우가 있다.

- 다수의 시스템을 설치하거나 다양한 템플릿을 설정할 때 웹 인터페이스에서 그 만큼의 많은 설정을 해야 한다.

- 일부 서드파티 템플릿의 품질이 좋지 않다.

- SNMP를 제대로 처리하지 못 한다.

 

1.1 필수사항

- 모니터링 프로그램을 사용하기 위해 기본적으로 웹 서버를 구축한다. 웹 페이지 접속을 통한 서버관리와 데이터베이스를 통해 Cacti.sql 파일을 관리하기 때문이다. 설치된 버전과 프로그램은 아래와 같다.

- CentOS 7.1 가상 운영체제 설치

 

APM Version

- MariaDB version : MariaDB-10.1.26

- Apache Version : Httpd-2.4.6-45

- PHP Version : php-5.4.16-42

 

2.1. CentOS server에 Cacti 설치하기

- Cacti 모니터링을 이용하기 위해서는 의존성 라이브러리, snmp, rrdtool, cacti 설치 파일이 필요하다.

이 파일들을 설치하기 전에 EPEL을 설치한다.

 

EPEL

- EPEL은 Extra Packages of Enterprise Linux 의 줄임말로 말 그대로 리눅스 추가 패키지이다.

- 리눅스에서는 yum이라는 명령어를 통해 패키지를 설치하게 되는데 yum으로 설치가 안되는 것들이 아주 많다. 이런 설치를 도와주는 것이 바로 EPEL이다.

- 명령어에 다음과 같이 입력한다.

- Yum –y install epel-release

- 해당 명령어를 입력한 뒤에 cacti, rrdtool, snmp 를 설치한다.

 

 

2. Cacti SNMP 설정

SNMP (Simple Networks Management Protocol) 란?

- IP 네트워크상의 장치로부터 정보를 수집 및 관리하며, 또한 정보를 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜 이다. SNMP를 지원하는 대표적인 장치에는 라우터, 스위치, 서버, 워크스테이션, 프린터, 모뎀 랙 등이 포함된다.

 

- SNMP는 네트워크 모니터링의 목적으로 네트워크 관리에서 널리 사용된다. SNMP는 관리 정보 베이스 (Management Information Base) 상에 관리 중인 시스템의 상태와 설정을 변수의 형태로 관리할 수 있게 해준다. 이러한 변수들은 관리 프로그램에 의해 원격에서 질의될 수 있으며, 경우에 따라서는 원격에서 값을 설정할 수도 있다.

 

- 설치가 완료되면 /etc/snmp/snmpd.conf 경로에 들어가 snmp 설정을 변경해준다.

 

 

- 74, 75 line : community 이름은 보안상 public으로 하지 않는다.

- 75line : 자신의 IP 주소를 확인하고 수정해준다.

 

 

- Cacti는 SNMP를 통해 데이터를 가져오기 때문에 SNMP 파일로 들어가 위 그림과 같이 수정해야 한다. 수정이 완료되면 변경사항이 적용될 수 있도록 snmpd 를 재시작 한다.

 

 

- 수정 내용이 모두 잘 적용되었는지 snmpwalk 명령어를 이용하여 테스트 한다.

 

2.2 Cacti MariaDB 설정

- Cacti 계정생성과 데이터파일들을 저장하기 위해 mysql 데이터베이스를 생성한후 cacti 데이터베이스에 필요한 테이블 및 기본데이터를 복원한다.

 

 

 

- Cacti 계정 생성이 끝나면 sql 설정 파일을 cacti 데이터베이스에 넣어준다.

- 또 서버 정보를 5분 주기로 통신해야 하기 때문에 crontab –e 명령어를 통해 반복 작업을 설정한다. 파일에 들어갈 내용은 아래와 같다.

 

- Crontab 설정이 끝나면 반드시 적용이 잘 되었는지 Crontab –l 명령어를 통해 확인한다.

 

 

2.3 Cacti DB 접속정보 설정

- mysql에서 생성한 cacti 접근 권한 계정을 /usr/share/cacti/include/config.php 파일의 경로를 찾아 username과 Password를 자신이 등록한 계정으로 수정해준다.

 

 

- 마지막으로 /etc/httpd/conf.d/cacti.conf 의 설정 파일을 수정해준다.

- 17line : 자신의 IP 주소를 입력하여 액세스 권한을 추가합니다. Ex) 192.168.111.145

 

 

- 수정이 완료되면 해당파일을 저장한 뒤에 httpd를 재시작합니다.

 

 

3. Cacti 설정하기

- cacti를 사용하려면 반드시 APM이 구동되어야지만 사용이 가능하다. 이전에 설치한 cacti 설정을 통해 웹 페이지에 192.168.111.143/cacti 를 입력하면 아래 그림과 같은 창이 생성된다.

 

 

- 위 그림의 내용은 cacti 설치후 처음으로 웹 접속 페이지이며, 아파치 설정의 홈 경로와 cacti 설정을 통해 위와 같은 웹 페이지 접속이 가능하다. 그 다음 Next를 눌러 다음으로 진행하면 된다.

 

 

- 설치 유형 패키지 화면으로 New Install 을 선택하고 다음으로 진행한다.

- 빨간 박스로 표시되어있는 부분의 경로가 정확한지 확인이 필요하다. 경로가 정확하게 지정이 안되었을 경우 정상적으로 실행이 안되는 상황이 발생하니 정확하게 확인후 진행해야 한다.

- 해당 경로가 다를 경우 [FOUND] 표시가 [Not FOUND] 로 표시된다. 만약 경로를 정확하게 지정하지 않고 다음 페이지로 넘어가는 경우에 cacti 사용이 불가능하다.

 

 

- 모든 설정이 끝났다면 User Login 페이지로 넘어간다.

- Login 페이지 초기 ID와 PW는 admin /admin 으로 설정되어 있다.

- 최초 로그인을 성공하면 앞으로 사용할 패스워드를 재지정하게 된다.

 

 

- Cacti 모니터링 페이지로 접속하였으면 Configuration -> Settings 탭을 클릭한다. 상단 왼쪽에 General 을 선택하고, 아래 그림과 같이 설정한 후 Save를 선택하여 저장한다.

 

General 설정

SNMP Utility Version : NET-SNMP 5.X

RRDTool Utility Vsersion : RRD Tool 1.4x

SNMP Version : Version1

SNMP Community : public

 

 

 

4. Cacti 호스트 등록하기

- 기존의 cacti 가 설치된 서버를 제외하고 SNMP의 간단한 설정으로 로컬 서버를 등록할 수 있다.

- 로컬 호스트 모니터링을 위해서 장비를 등록할때에는 좌측 메뉴 모음에서 Management -> Devices 를 선택

 

4.2 원격 대상의 리눅스 서버 모니터링 추가하기

- 앞에서도 언급한 것처럼 cacti는 SNMP를 통해 최소 5분주기로 정보를 주고 받는다. 대상 호스트로 등록하기 위해서는 SNMP 패키지를 설치하고 설정파일을 수정하여 연결한다.

- 먼저 Yum 명령어를 통해 SNMP 라이브러리를 설치한다.

 

 

- 설치가 완료되면 /etc/snmp/snmpd.conf 경로의 설정 파일을 찾아 아래와 같이 변경한다. 단 75 line 의 IP주소는 자신의 서버주소를 입력한다. Cacti 설치에 나온 방법과 동일하기 때문에 어렵지 않게 설정할 수 있다. 모든 설정이 끝나면 snmpd 를 재시작 한다.

 

 

 

- 기존에 cacti 를 구성한 192.168.111.143/cacti 에 접속하여 모음에서 Management -> Devices 탭을 클릭한다. Device 부분의 왼쪽 상단에 Add를 클릭하면 새로운 Device를 등록할 수 있다.

 

- Divices 영역의 부분을 모두 입력하고 ping Method의 선택항목을 UDP ping로 선택한다.

Devices SNMP Options
Description CentOS7_Test Server_2 SNMP Version Version 1
Host Name 192.168.111.145 SNMP Community

Public
Host Template Ucd/net SNMP Host

Devices

- Description : 관리하는 서버의 이름을 넣어준다.

- Host Name : 서버의 IP 주소를 넣어준다.

- Host Template : 등록한 호스트의 연관된 기본 그래프 템플릿 및 데이터 쿼리를 정의하는데 사용할 템플릿을 설정한다.

 

SNMP Option

- SNMP Version : 이 장치에 설정되어있는 SNMP Version을 선택한다.

- SNMP Community : 대부분 public을 그대로 사용하지만 보안적인 부분을 강화하기 위해 다른 이름을 쓰는 것이 좋다.

 

 

- 간단한 Device 등록이 끝나면 아래와 같은 화면이 자동으로 생성된다. 이 부분은 사용자가 그래프를 통해 어떤 정보를 모니터링 할 것 인지 설정하는 부분이다.

- Associated Graph Templates

Associated Graph Templates는 그래는 그래프에 표기할 성능을 지정하는 부분이다. 서버의 모니터링을 하고 싶은 부분을 추가하면 된다.

 

 

 

 

- 모든 설정이 끝났다면 Deivce 등록이 올바르게 되어있는지 확인한다. 현재 새로 등록한 Divice 는 서버를 부팅중인 상태에 있기 때문에 Unknown 으로 표시된다.

- 서버의 정보를 정확하게 읽어오는 상태는 UP으로 표시되며, 읽어오지 못하는 경우에는 Down으로 표시된다.

 

 

4.2.1 Graph Management를 통한 사용자 그래프 관리

- 서버에서 읽어오는 정보에 대한 설정을 끝냈다면 이를 표현할 수 있는 그래프를 만든다. 왼쪽 상단 메뉴에서 Create -> New Graph 를 클릭한다.

- Host 부분을 보면 자신이 등록한 서버를 선택할 수 있다. 이 부분을 먼저 선택 한 다음 새로 생성하고 싶은 그래프의 항목을 체크하고 Create를 누르면 된다.

 

 

- 그 다음 그래프를 표현할 색상을 지정하면 된다. 해당 설정까지 모두 끝내고 Graph 를 확인하면 자신의 서버에서 읽어오는 데이터를 그래프로 확인할 수 있다.

 

 

4.3 원격 대상의 윈도우 서버 모니터링 추가하기

- 사실 윈도우 호스트를 등록하는 작업은 간단하다. SNMP Service을 추가하고 해당하는 포트를 방화벽을 통해 해제하는 순서이다. 만약 자신의 운영체제가 서버가 아니더라도 충분히 장비를 등록이 가능하다.

 

4.3.1 SNMP 서비스 등록하기

- 서버의 Windows 키를 눌러 [서버 관리자] 를 실행한다. 오른쪽 상단에 [역할 및 기능 추가 마법사] 를 실행한다. 기능 선택에서 [시작하기 전] -> [설치 유형] -> [서버 선택] -> [서버 역할] 모두 다음을 클릭한다. [기능] 부분에서 [SNMP 서비스], [SNMP WMI 공급자] 를 모두 선택하여 설치를 진행한다.

 

 

- 설치가 항목을 확인하고 설치를 진행한 뒤에 닫기를 눌러 [서버관리자] 를 종료한다.

 

 

- [windows] + R 키를 눌러 Services.msc 를 실행한다. 이 부분에서 SNMP Service 를 클릭하여 보안탭에서 커뮤니티명과 SNMP 를 받을 수 있는 호스트를 설정한다.

 

 

- SNMP Service 등록이 끝나면 제어판에서 [windows 방화벽] 설정 탭에 접속하여 [고급 설정]을 클릭한다. 여기서 [인바운드 규칙] 을 클릭하고 오른쪽 상단에 [새 규칙] 을 클릭하여 TCP Port 161 번을 모두 허용으로 변경하여 새로운 규칙을 생성한다.

 

- 방화벽 설정이 끝나면 [4.2 리눅스 서버 모니터링 추가하기] 를 참고하여 윈도우 서버를 등록한다.

 

5. Cacti Mail/DNS Service

- Cacti 에서는 settings 플러그인을 이용하여 모니터링 값이 일정 수준 이하/이상으로 내려가거나 올라가면 메일을 보내고 이상을 알려준다. Cacti의 추가적인 기능을 이용하려면 플러그인 별도로 설치해야한다.

- 플러그인은 httpd://docs.cacti.net 에서 사용자가 원하는 플러그인을 검색하여 설치하면된다. 메일 서비스 settings 를 설치하면 서비스가 가능하다. 먼저 wget 을 이용하여 settings-v0.71-1 version 을 설치하고 압축파일을 해제한다.

 

 

 

- 설치가 완료된 상태에서 https:// [your IP address] /Cacti 로 접속하여 새로 생성된 plugin management 를 클릭한다. Settings 플러그인을 disable (↓) 에서 enable (↑) 상태로 변경한다.

 

 

- 다음으로 [Configuration] -> [Settings] 을 클릭하여 Mail/DNS 설정에 접속한다. 이 부분은 자신의 메일 주소와 메일 형식을 지정한다.

 

Emailing Option SendMail Options
Test Mail 테스트 메일을 받을 관리자 주소 입력 /usr/sbin/sendmail
Mail Service 메일 형식 지정 (PHP, Send Mail, SMTP)
From Email Address 보내는 사람의 메일 주소
From Name 보내는 사람의 이름
Word Wrap Default 그대로 120 사용

 

 

 

 

 

- 메일 형식을 [Save] 하고 왼쪽 상단에 [Send a Test Mail] 을 클릭하면 메일이 전송된다. TestMail 전송이 성공하면 아래 화면처럼 Success! 가 출력된다.

 

 

- 아래 그림을 확인하면 지정한 메일 주소에 테스트 메일이 정상적으로 전송된 것을 확인할 수 있다.

 

 

- Cacti 는 CentOS7 에 설치하는 경우 애로사항이 많다. 기존의 Mysql을 사용하지 못하고 MariaDB 상위 버전으로 사용해야 되는 부분과 XSpine 이라는 새로운 라이브러리가 추가되어 CentOS7 과 호환되지 않는 부분이 있다.

- 자신이 원하는 그래프를 출력하여 원하는 정보를 볼 수 있는 장점이 있지만 그래프 정보가 누락되는 경우가 있고 서버는 정상적으로 동작되지만 웹에서의 상태가 이유없이 Down 되는 경우가 있다.

 

 

 

Cacti 모니터링 시스템 만들기 완료~!

 

 

 

반응형