728x90
cacti 는 업계 표준 오픈 소스 데이터 로깅 도구인 RRDtool 프론트 엔드용으로 설계된, 오픈 소스 웹 기반 네트워크 모니터링 및 그래프 도구이다.

SNMP를 통해 네트워크 스위치 또는 라우터 인터페이스를 폴링하여 네트워크 트래픽을 감시한다.
각자의 그래프 세트를 가진 복수의 사용자를 처리 할 수 있어서 전용 서버, 가상 개인 서버 및 코로케이션을 공급하는 웹 호스팅 제공 업체가 고객들의 대역폭 통계를 확인하기 위해 사용 가능하다.



Cacti를 설치하기에 앞서 Cacti를 사용하려면 설치하려는 서버의 APM(Apache, php, MySQL)이 설정 되어 있어야 사용할 수 있다. https://link2me.tistory.com/1559 에 yum 으로 설치하는 APM에 대한 스크립트가 있는데, 이 기반위에 설치하는 스크립트를 테스트한 걸 기록해 둔다.

최신버전(Cacti Server v.1.2.8)으로 설치를 해서인지 삽질을 엄청 많이 하면서 스크립트를 수정 보완했다.


RRDTool 최신 버전 및 cacti 최신버전 설치 스크립트 과정이다.


Cacti는 RRD에 특화된 정교한 프론트 엔드 툴이다.


SSH Shell 프로그램에서 접속한 # root mode에서 작성한 것이다.

복사 붙여넣기를 편하기 하기 위해서 편의상 #은 삭제했다. 간혹 #이 붙은 것은 주석처리 표시이다.


yum -y install openldap-devel pcre-devel lua-devel curl curl-devel libcurl-devel flex
yum -y install php-snmp php-gd php-devel
yum -y install gd gd-devel libart_lgpl libart_lgpl-devel zlib zlib-devel
yum -y install libxml2 libxml2-devel libpng libpng-devel
yum -y install freetype freetype-devel
yum -y install pango-devel
yum -y install php-ldap
yum -y install gmp php-gmp
yum -y install net-snmp-*


gmp 가 설치되지 않았다고 나오면,

PHP 7.3 을 yum 설치한 환경이라면

yum install -y --enablerepo=remi-php73 php-gmp

을 해줘야 된다.

기존에 설치된 것은 지워야 한다.

rpm -e --nodeps gmp.x86_64
yum -y erase rh-php70-php-gmp
즉 상황에 맞게 구글링해서 처리해야 하는데, 정보 검색이 잘못될 수 있고, 그러면 고생을 좀 할 수 있다.



# net-snmp 패키지를 설치하였다면 /etc/snmp/snmpd.conf 파일에서 4가지 설정사항을 수정해줘야 한다.
vi /etc/snmp/snmpd.conf
com2sec public default public
group public v1 public
group public v2c public
view all included .1
access public "" any noauth exact all none none

/etc/rc.d/init.d/snmpd stop
/etc/rc.d/init.d/snmpd start
# 또는
service snmpd restart


### RRDTOOL 설치 ####
RRD툴(RRDtool, round-robin database tool)은 시간에 따른 자료를 다룰 수 있는 도구이다. 그림 형식으로 시각화 해주는 기능도 있다.
MRTG를 모방해 일반화 하여 개발한 도구이며 자료 수집에 관한 일부분이 빠져 완전한 대체물은 아니지만, 네트워크 모니터링 분야에서 매우 인기있는 도구이다.
펄, 파이썬, 루비, Tcl, PHP를 지원한다.
라운드 로빈 데이터베이스(Round Robin Database, RRD)는 Tobias Oetiker에 의해 제작되었으며 현재는 전 세계의 수많은 사람들의 참여로 진행되고 있는 오픈 소스 기반의 소프트웨어이다.
Round Robin은 고정된 크기의 데이터와 현재 element에 대한 포인터로 동작하는 기술로 현재 데이터를 읽고 쓸 때 포인터는 다음 element로 이동하게 된다.
시작과 끝이 없는 원과 같이, Round Robin 기술을 사용하면 계속해서 데이터를 읽고 쓰는 작업이 가능하다.
사용하는 중에도 모든 가용 위치에 대한 사용이 가능하며, 자동적으로 이전의 위치에 대한 재사용이 가능하다.
이러한 방법으로 데이터베이스는 크기는 증가하지 않지만 어떠한 인위적인 작업 없이 사용 가능하게 된다.

#### RRDtool 설치: source 설치 방법

## 배포 사이트 : https://oss.oetiker.ch/rrdtool/ 에서 최신버전을 확인한다.
## cacti 에서 권장하는 버전을 설치하는 것이 좋을 것이다.
cd /root/rrdtool
wget https://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.9.tar.gz
tar xvfz rrdtool-1.4.9.tar.gz
cd rrdtool-1.4.9
./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl
make && make install
echo $?
여기서는 컴파일 작업 중 아무런 문제가 발생되지 않아 0 이 나타났다.
만약 0 이 아닌 다른 숫자가 나오면 제대로 설치가 안되었다는 것이더라.


### uninstall 하는 방법
# 처음 설치한 /usr/local/rrdtool 폴더를 찾아서 지운다.
cd /usr/local/
rm -rf rrdtool/
# 소스를 설치한 폴더로 이동하여 make uninstall 한다.
cd /root/rrdtool/rrdtool-1.7.2
./configure
make uninstall


#### cacti 설치하기 : cacti source 설치 방법
## https://www.cacti.net/download_cacti.php 에서 최신 버전을 확인한다.
# The latest stable version is 1.2.8, released 12/08/19.
# Cacti requires MySQL, PHP, RRDTool, net-snmp, and a webserver that supports PHP such as Apache.
# Requirements : RRDTool 1.4+ recommended, MySQL 5.x or greater, PHP 5.1 or greater

cd /usr/local/src
wget http://www.cacti.net/downloads/cacti-1.2.8.tar.gz
tar zxvf cacti-1.2.8.tar.gz
# mv cacti-1.2.8 cacti
cp -Rf cacti-1.2.8 /var/www/html/cacti

# cacti 디렉토리 권한 설정

cd /var/www/html/cacti
#chown cacti.cacti /var/www/html/cacti -R
chmod 755 /var/www/html/cacti


# 데이터 파일과 로그 파일이 저장되는 디렉토리 등 퍼미션을 777로 설정한다.
cd /var/www/html/cacti
chmod 777 rra log scripts
chmod 777 -R cache/
chmod 777 -R resource/
chmod 777 /var/lib/php/session


/usr/local/cacti/include/config.php 를 열어보면 아래처럼 설정되어있다.
$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuser';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';

# 패스워드는 변경하는 것이 보안에 안전하다.

## cacti DB 생성 및 사용자 권한 등록
cd /var/www/html/cacti
mysql -u root -p
비밀번호 입력

show databases;
drop database cacti; -- db delete
create database cacti default character set utf8mb4 COLLATE utf8mb4_unicode_ci;
grant all on cacti.* to cactiuser@localhost identified by 'cactiuser'; -- 패스워드 반드시 변경한 걸 적어주시라.
GRANT ALL PRIVILEGES ON mysql.* TO cactiuser@localhost WITH GRANT OPTION;
flush privileges;


-- cacti 테이블 생성
show databases;
use cacti;
source cacti.sql
-- 육안으로 확인한다. 에러가 발생한 부분이 어떤 것인지 등등...
quit



====================================================
## cacti 테이블 생성
cd /usr/local/src/cacti
mysql cacti < ./cacti.sql -uroot -p
# 에러가 발생하면 이후 테이블 생성이 제대로 안되는 증상 발생하더라.
====================================================


# httpd.conf 찾기
find / -name httpd.conf
vi /etc/httpd/conf/httpd.conf

## php.ini 파일 찾기
find / -name php.ini
vi /etc/php.ini
memory_limit = 800M
max_execution_time = 60
date.timezone = Asia/Seoul
수정하고 저장한다.

#MariaDB 설정
## vi /etc/my.cnf 을 아래와 같이 수정한다.
vi /etc/my.cnf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
default-time-zone='+9:00'
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

max_heap_table_size = 200M
max_allowed_packet = 64M
tmp_table_size = 64M
join_buffer_size = 128M
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_buffer_pool_size = 1073741824
innodb_buffer_pool_instances = 10
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000

저장(:wq) 하고 빠져나온다.

# cacti web 설정시 문제가 되면 SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_%' 로 확인하여 수정해야 한다.
# https://jsonobject.tistory.com/408 에 나온 내용을 참조하면 도움된다.


# MySQL 구동
service mysql start
service mysql stop
service mysql restart

#서비스 구동
service httpd start
service httpd stop
service httpd restart


## Crontab poller.php 등록
# vi /etc/cron.d/cacti 을 아래와 같이 설정한다
vi /etc/cron.d/cacti
*/5 * * * *    cacti   /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1



### Web 으로 설치 ###
# http://서버IP/ cacti 로 접속하여 install버튼을 이용하여 설치를 마무리 한다.

## 기본 접속 세팅

RRDTool Binary Path : /usr/local/rrdtool/bin/rrdtool 로 수정해서 적어준다.


## User Login
admin / admin

## 패스워드 변경하라고 하면 패스워드를 변경한다.

# 반드시 대문자, 숫자, 특수문자를 포함해서 8자리 이상으로 변경해야 한다.



원하는 설정을 100% 충족해야만 다음으로 넘어간다.


service httpd restart 를 해주면 Web - No 가 사라진다.









## cacti 그래프 확인



# 서버에 가서 아래와 같은 명령어를 입력하면 그래프가 생성된다.

# whereis php 로 php 경로를 찾아 맞게 수정한다.
/usr/bin/php /var/www/html/cacti/poller.php –force


참고 : APM 소스 설치한 경우의 php 설치 경로


세부 설정 방법은 http://blog.syszone.co.kr/2551 하단에 있는 이미지를 참조하면 도움될 수 있다.

설치된 버전이 달라서 도움이 안될 수도 있다.

블로그 이미지

Link2Me

,