본 글은 MySQL Cacti를 활용한 모니터링 서버 구축이지만, 동일한 엔진을 사용하는 MariaDB, SkySQL에 대한 부분도 적용이 가능합니다. 기능 설명에 앞서 우선 SkySQL(MariaDB는 현재 SkySQL로 인수되어 통합되었습니다)에 대해 간략히 살펴본 후 설명을 하도록 하겠습니다.

1. MariaDB(SkySQL)

1.1 소개

SkySQL은 MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따르고 있습니다.  MySQL APIs와 명령에 정확히 매칭되고 있고,  라이브러리 바이너리와 상응함을 제공하여 교체 가능성을 높이고 있습니다.  새로운 저장 엔진인 아리아(Aria),  InnoDB를 교체할 수 있는 XtraDB 저장 엔진을 포함하고 있으며, 트랜잭션과 비트랜잭션 엔진 그리고 미래에 나올 MySQL 판에 대응 가능한 데이터베이스로 보시면 됩니다.

1.2 역사

2009년 동료 몇 명과 함께 썬을 떠나 Monty Program AB사를 설립하고 MariaDB 개발을 시작했습니다. Maria는 마이클 와이드니어스의 딸 이름입니다. 다음은 와이드니어스의 Sun 인수 당시의 MySQL에 대한 의견입니다.

아마도 이노DB 스토리지 엔진을 제외한 MySQL에 있는 기능 대부분은 썬마이크로시스템즈 때 있었던 기능들입니다. 오라클 인수 후 MySQL은 발전하지 않았습니다. 오라클은 ‘MySQL을 어떻게 하면 자신들의 소유로 할 수 있을까’만 고민했고, 그래서 회사를 나왔습니다.

마리아 5.5를 쓰고 있다면, MySQL 5.5의 모든 특징을 가지고 있지만, 5.5 이후에는 개발버전에 10.x 형태로 진해하기로 결정되었습니다.

1.3 특징

  • 데이터와 테이블 정의 파일(.frm) 파일이 바이너리 호환.
  • 모든 클리이언트 API, 프로토콜 그리고 구조가 동일.
  • 모든 파일이름과 바이너리, 경로, 포트, 소켓 그리고 기타 등등이 동일.(my.cnf를 그대로 사용가능)
  • 모든 MySQL 커넥터가 마리아 DB와도 동일하게 작동(PHP, Perl, 파이썬, 자바, .NET, MyODBC, Ruby, MySQL C 커넥터 등)

1.4 성능

마리아DB 커뮤니티는 MySQL과 비교해 리플리케이션 부분 속도가 약 4~5배 정도 빠르다고 이야기하고 있으며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히 구현, 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장하고 있습니다.

1.5 스토리지 엔진

CSV – CSV 스토리지 엔진은 CSV에 저장된 파일 (쉼표로 분리 값) 형식을 읽고 추가 할 수 있음, null column을 지원하지 않음.

MRG_MYISAM – Isam tables collection

FEDERATED (트랜잭션 제공) – 원격 DB 서버 테이블에 네트워크로 접근하는 스토리지 엔진으로 기존, 원격 DB에서 로컬 DB로 결과 값만 전달한다는 점에서 MySQL에 기본으로 장착된 FEDERATED와 가장 큰 차이점이 있으며, MariaDB에서는 FEDERATEDX라는 새로운 네이밍을 사용합니다.

Aria – 차세대에 MyISAM 스토리지 엔진을 대체하기 위해 개발,  MyISAM에서 파생되었으며, Crash-Safe를 목표로 진행 중, 부분적으로 Transaction을 제공합니다.

PBXT(트랜잭션 제공) – Transaction Log 에 선 기록 없이 바로 DB에 기록, Maria5.5부터는 더이상 유지보수를 제공하지 않으므로 기본 스토리지 엔진에서 제외, 위 기본 스토리지 엔진 외에 Plugin으로 제공되는 스토리지 엔진을 추가로 설치할 수 있습니다.

OQGRAPH – Graph 기능을 제공하는 스토리지 엔진.(Maria5.5에는 기본으로 Plugin이 들어있지 않음)

SphinxSE – Full-Text Searching이 필요할 때 사용할 수 있는 스토리지 엔진. 단, SphinxSE은 어디까지나 Sphinx의 일부분이며, 스토리지 엔진 사용을 위해서는 Sphinx 데몬을 별도로 설치가 필요합니다.

2. Cacti를 를 활용한 모니터링 서버 구축

모든 package 는 yum을 통해 설치하는 것으로 가정하고, yum은 Red Hat 기반(Red Hat Enterprise Linux, Fedora, CentOS 등)에서 작동됩니다.

Cacti mysql monitoring server 구축은 크게 세 파트로 구성됩니다.

  • Cacti 설치
  • Import Mysql plugin template
  • 운용

RRDTool, snmp를 기반으로 한 모니터링 툴로써, APM(Apache, PHP, MySQL)과 연계하여 관리 편의를 제공합니다. Cacti에 대한 소개 정보는 아래의 URL에서 확인하세요.

  • www.cacti.net/features.php
  • www.cacti.net/screenshots.php
  • www.cacti.net/downloads/docs/html/requirements.html

2.1 필요 패키지 목록

설치전 필요한 서버의 패키지 리스트는 다음과 같습니다.

httpd
mysql mysql-server
php php-mysql php-snmp php-gd php-devel
gd gd-devel
libart_lgpl libart_lgpl-devel
zlib zlib-devel
libxml2 libxml2-devel
libpng libpng-devel
freetype freetype-devel
net-snmp-*
pango-devel

rrdtool rrdtool-devel

이제 위의 패키지에 대한 각각의 설정 변경 값에 대해 알아보도록 하겠습니다.

2.2  snmp 설정 변경

명령어를 활용하여 /etc/snmp/snmpd.conf 파일의 내용을 확인합니다.

[root@osci ~]# vi /etc/snmp/snmpd.conf
[root@osci etc]# vim /etc/snmp/snmpd.conf
com2sec public default public
group public v1 public
group public v2c public
group public usm public
view all included .1
access public “” any noauth exact all none none
[root@osci etc]# service snmpd restart

2.3 PHP 설정 변경

/etc/httpd/conf.d/php.conf 파일을 열어 스크린샷처럼 수정합니다.

위 그림 내의 설정 내용은 아래와 같습니다.

AddHandler php5-script .php .htm .html
AddType application/x-httpd-php-source .phps .php .htm .html

NOTE. /etc/php.ini 에 date.timezone 설정한다. 그렇지 않을 경우, cacti의 poller.php 를 실행할 때 error 출력하며 일부 그래프가 그려지지 않는다.

[Date]

; Defines the default timezone used by the date functions

; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone

date.timezone = Asia/Seoul

2.4 Apache HTTPD 설정 변경

DirectoryIndex 부분의 index.php 파일을 추가하도록 합니다.

이후 php 요청을 처리하기 위한 application MIME Type을 설정하도록 합니다.

그림의 내용으로 설정된 항목은 다음과 같습니다.

AddType application/x-httpd-php .htm .html .php .ph .php3 .php4 .phtml .inc

AddType application/x-httpd-php-source .phps

AddHandler cgi-script .cgi

이후 아파치 HTTPD 서비스를 재기동시킵니다.

[root@osci etc]# service httpd restart

2.5 MySQL 설정 변경

Cacti를 사용할 mysql 데이터베이스를 생성, 사용자 및 데몬을 다시 시작하도록 합니다.

[root@osci etc]# mysql -u root -p

mysql> create database cacti;

mysql> grant all privileges on cacti.* to cactiuser@localhost identified by 'cactiuser@@';

mysql> flush privileges;

[root@osci etc]# mysql –u cactiuser –p cactiuser@@ cacti < /var/www/cacti/cacti.sql

[root@osci etc]# service mysqld start

2.6 Cacti 설치 및 설정

Cacti는 별도의 컴파일을 이용한 설치를 수행하지 않고, yum을 이용하여 설치하도록 합니다. cacti를 사용하기 위한 별도의 yum repository를 설정하도록 합니다.

[root@osci etc]# vi /etc/yum.repos.d/ㅇag.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=0
enabled=1
protect=0

[root@osci etc]# yum install cacti

yum 으로 설치하면 config.php 파일의 위치는 /var/www/cacti/include/ 디렉토리가 되는데, 위에서 mysql 설정시 정해둔 user, password 를 입력해 줍니다.

이제 웹브라우저에서 http://ip/cacti/를 입력하여 아래의 화면이 나타나는 지 확인합니다.

위 화면이 나온다면 정상적으로 설치되었습니다. 이 후 설치는 웹 상에서 진행되며, 설치 혹은 업그레이드를 할 수 있습니다.

각각의 정보들이 세팅이 될 수 있도록 필요한 조치를 취하여 에러가 발생하지 않도록 수정을 가합니다.

정상적으로 완료가 되었다면, 로그인 페이지가 나오게 되면 최초의 아이디 및 비밀번호는 admin/admin입니다.

admin/admin을 입력 성공시에 기존의 패스워드인 admin을 다른 것으로 바꾸라는 메시지가 나타나게 됩니다.

정상적인 변경이 완료되면 cacti 설치가 완료되며, 기본적인 로그인 후 다음과 같은 화면이 나타나게 됩니다.

2.7 Cacti 운영 환경 설정

모니터링 서버를 추가하기 위하여 왼쪽의 메뉴에서 Device를 선택(1)하고, Add 메뉴 버튼을 클릭합니다.

아래의 화면에서 필요한 사항에 대한 지정 후 Create 버튼을 클릭합니다.

새로운 디바이스가 생성되면, ‘Create Graphs for this Host’를 눌러 그래프를 생성할 수 있으며, 왼쪽 메뉴의 New Graphs를 이용하여 생성해도 됩니다.

아래의 그림처럼 원하는 그래프 유형에 대한 체크박스를 선택 후 create 버튼을 누르면 그래프의 색상을 지정할 수 있는 페이지로 이동하게 됩니다.

지정하고 싶은 색으로 선택을 한 후 Create 버튼을 눌러 필요한 정보를 생성하도록 합니다.

생성이 완료되었다면 상단의 메뉴 중 Graphs 탭을 눌러 그래프 뷰 페이지로 이동하도록 합니다.

NOTE. 그래프가 출력되지 않는다고 실망하지 마세요!! 몇 몇 그래프는 안나오는게 정상입니다. 왜!?? 한 번도 데이터가 수집되어 그래프화 되지 않았기 때문입니다!

다음의 명령을 실행하여 데이터 수집 및 그래프를 작성해 줍니다. 이후 다시 한 번 뷰 페이지를 보면 그래프가 출력되는 걸 확인할 수 있습니다.

[root@osci etc]# php /var/www/cacti/poller.php

2.8 Percona Plugin 설치

MySQL 상용 개선 엔진인 Percona를 보면 다양한 모니터링용 플러그인이 존재하는데 본 아티클에서는 이 플러그인을 사용하도록 하겠습니다. 아래의 URL로 접속하여 Percona 최신 플러그인을 다운로도 받도록 합니다.

http://www.percona.com/software/percona-monitoring-plugins

다운로드 후 RPM을 설치하고 /usr/share/cacti/scripts 디렉토리에 존재하는 ss_get_mysql_stats.php 파일을 열어 아래의 그림과 같이 수정하도록 합니다.

[root@osci etc]# rpm –ivh percona-cacti-templates-1.0.4-1.noarch.rpm

위의 설정 정보를 앞서 정의되었던 cacti 데이터베이스 사용자 정보입니다.

이제 다시 웹으로 돌아와서 플러그인 템플릿을 임포트하도록 합니다. 아래의 그림처럼 왼쪽 메뉴의 Import Template을 선택합니다.

필요한 모니터링 템플릿 항목을 선택합니다.

설정이 완료되면 해당 내용이 그래프 뷰에 보이는 것을 확인 할 수 있습니다.

3. 마치며

아주 간단하게 MySQL 및 Cacti 설정에 대한 부분을 살펴보았습니다. 현재 설정이 로컬에 있는 시스템 있는 것으로 설명되어 있지만, 원격지 서버 모니터링 정보에 대한 부분을 설정하는 것은 그리 어려운 일이 아닐 것입니다. 중요한 사실은 그래프 생성시 원하는 모니터링 템플릿이 무엇인지이며, 모니터링 대상이 되는 MySQL 관련 템플릿을 어떤 것을 선택하느냐에 따라 그 대상이 달라지게 되므로, 실 서버 운영시 필요한 항목이 무엇인지 선정하는 것도 상당히 중요한 일입니다.

올해말로 끝나면 MySQL에 대한 Oracle의 EU 이행각서가 얼마나 지속적으로 이루질지 모르는 상태에서 SkySQL(MariaDB)/Percona에 대한 부분도 한 번씩 테스트해보고, 마이그레이션 영역에 포함시켜놓는 것도 좋은 방법이 될 수 있을 것입니다.

오픈소스컨설팅 기술담당으로 근무하고 있으며, IT에 대한 철학과 이해를 통해 고객이 오픈 소스를 활용한 엔터프라이즈 시스템을 효과적으로 사용할 수 있는 다양한 트렌드와 기술 적용을 돕고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *