본문 바로가기

메가존 클라우드 2기 교육/Linux(리눅스)

NMS 서버 구축 - Cacti 설치 및 모니터링

NMS?

Network Management System 의 줄임말로, 말 그대로 네트워크 관리를 위한 모니터링을 담당한다.

더 정확하게는 네트워크 상의 모든 장비들의 중앙 감시 체계를 구축하여 모니터링, 분석 및 계획이 가능하며 관련 데이터를 활용한 이상 트래픽에 대한 조기 경보 및 네트워크 관리 시스템이다.


NMS

NMS 서버 구축

우선 새로 서버를 만들기 위해 

가져오기
전에 내보내기로 만들었던 ova파일을 가져오자.
Import를 누르자
전에 했던 대로 네트워크 어댑터 설정을 하자
로그인을 하자
ip도 잘 받아왔고 통신도 잘 된다.
// 헷갈리지 않게 호스트네임을 설정하자.
# hostnamectl set-hostname nms

이제 다시 MobaX에서 Bastion Host로 접속해보자.

우선, nms엔 키가 없기 때문에 nat에서 키를 전송하자.

왼쪽의 .ssh폴더에 들어가자.

 

업로드 버튼으로 id_rsa 와 id_rsa.pub을 업로드 하자.
// nms에 아이피를 복사해준다.
# ssh-copy-id -i .ssh/id_rsa root@10.31.0.103
// 바로 접근하면 퍼미션 때문에 경고가 뜬다. 그러므로 권한을 바꾸고
# chmod 400 .ssh/id_rsa
# ssh -i .ssh/id_rsa root@(nms아이피)
# cat /etc/resolv.conf
dns 잘 설정되어있다.
# cd /var/named/
# ls
# vi kyoung1234.shop.db
맨 아래에 nms를 추가해주자
# systemctl restart named
# ping nms.kyoung1234.shop
dns가 nms와 통신이 된다.

CACTI 설치

// nms 에서
# sestatus
// 만일 disabled가 아니라면 다음을 실행하고, 맞다면 스킵
// vi가 아니라 치환 명령어인 'sed -i'를 통해 's/^(찾을 문장)$/(바꿀 문장)' (파일위치) 로 수정
# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# setenforce 0

// 순서대로 입력하여 필요한 설치를 진행하자
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install -y httpd httpd-devel
# systemctl enable --now httpd
# curl 127.0.0.1			// 설치 확인
대충 이렇게 뜬다면 설치가 잘 된 것이다.
// SNMP (Simple Netwrok Management Protocol; UDP 161) : CPU나 메모리 사용량이 어떠한지 물어보고 대댑하는 역할
// 마저 SNMP를 설치를 진행해주자
# yum install -y net-snmp net-snmp-utils net-snmp-libs rrdtool		// rrdtool : 그래프를 그려주는 도구
# systemctl enable --now snmpd
꼭 재시작 해주자.
// epel = centos가 제공하는 것이 아닌 특별하게 관리되고 있는 저장소로부터 가져와 최근 버전으로 설치
# yum --enablerepo=epel install -y php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-intl php-snmp

// DNS서버에서 (root이므로 로컬서버에서 해야함)
# mysql -u root -p
DB에 접속
create database cacti;
CREATE USER 'cactiuser'@'%' IDENTIFIED BY 'kosa0220';
grant all privileges on cacti.* to cactiuser@'%';
FLUSH PRIVILEGES;					// 변경 사항을 반영 (grant를 reload할때 많이 쓰임)
exit
'cacti' 데이타베이스 생성하고 새로운 유저'cactiuser'를 생성하고 'cacti'에 대한 모든 권한을 준다.

다시 nms로 돌아와서

# yum install -y mysql

 쿼리 설치가 끝났다면,

// 도메인을 통해 cactiuser로 접속
# mysql -h ns.kyoung1234.shop -u cactiuser -p
접속 성공 됨을 알 수 있다.

이후 확인이 됐으면 다시 'exit'를 하여 DB에서 나온다.


// mysql_test_data_timezone.sql를 데이터베이스에 가져오기 
# mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql
// DB 접속
# mysql -u root -p
// 권한 부여
GRANT SELECT ON mysql.time_zone_name TO cactiuser@'%';
flush privileges;
exit

 

// cacti를 쓰기 위한 설정 변경
# vi /etc/my.cnf.d/server.cnf	// 기존 파일 수정
// [mysqld] 찾아서 붙여넣기
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_heap_table_size=128M
max_allowed_packet=16777216
tmp_table_size=78M
join_buffer_size=155M
innodb_file_per_table=on
innodb_buffer_pool_size=1207M
innodb_doublewrite=on
# innodb_additional_mem_pool_size=80M	// 이거 때문에 오류나므로 우선 주석처리
innodb_file_format=Barracuda
innodb_lock_wait_timeout=50
innodb_flush_log_at_trx_commit=2
innodb_large_prefix=1

//얘도 꼭 재시작 mariadb를 재시작 해야한다.
# systemctl restart mariadb
이렇게 수정되면 된다.

이제 다시 nms로 돌아가서 cacti를 설치해주자

// nms에서
# yum -y install cacti
Complete
// 이제 DB에 cacti를 넣어주자
// dns서버가 아니기에 root를 쓸 수 없다. 그러므로 전에 만들었던 'cactiuser'를 이용하자
# mysql -h ns.kyoung1234.shop -u cactiuser -p cacti < /usr/share/doc/cacti-*/cacti.sql 
// '*'을 통해 모든 버전을 포용
아무런 에러 안뜨면 성공
#vi /usr/share/cacti/include/config.php		// 기존 파일 수정
// 아래 내용 찾아서 비밀번호 수정 (보안을 위해)
$database_hostname = '(도메인 주소)'	// 내 도메인
$database_password = 'kosa0220';		// 비밀번호 수정
'#'주석이 없는 곳에 해야한다.
# vi /etc/cron.d/cacti		// cacti의 스케줄러 편집
// 아래로 수정
*/5 * * * *     apache  /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
// 매 5분(폴링 타임)마다 동작한다. 사용자가 등록된 호스트의 cpu사용량을 묻고 가져와 데이터베이스에 넣는 도구(polling) 
// 오류는 무시한다.
# vi /etc/httpd/conf.d/cacti.conf	// 기존 파일
// 수정하기
Require host localhost --> Require all granted
Allow from localhost --> Allow from all	
// 모두에게 부여
// 모두가 사용 가능
# vi /etc/php.ini	// php 설정 변경
// 수정하기
date.timezone = Asia/Seoul
memory_limit = 800M
max_execution_time = 60
여기서는 ';'도 주석으로 취급한다.
메모리 제한량 증가
제한 시간 증가
// 이제 다시 재시작해주자.
(nms)
# systemctl restart httpd.service
(dns)
# systemctl restart mariadb.service
(nms)
# systemctl restart snmpd.service

// 방화벽 설정
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

# reboot

// http://Your-Server-IP/cacti
// VMBox의 xfce에서의 크롬으로는 접속되지만, 현재 VMware에서는 불가. 그러므로 HAProxy를 건드려서 해보자.
// 즉, HAProxy에 의해 사파리를 수정하자 
(nat에서)
# vi /etc/haproxy/haproxy.cfg
    acl safari hdr_sub(User-Agent) Safari
    use_backend bk_safari if safari
    server             web03 10.31.0.103:80 cookie w3 check
backend bk_safari
    server             web02 10.31.0.103:80
// HAProxy는 항상 수정하고나면 확인하자.
# systemctl restart haproxy
# systemctl status haproxy

 

이제 사파리에서 'http://(NAT IP)/cacti' 에 접속해보자

초기 아이디와 패스워드는 admin/admin이다

로그인해보자.

그리고 비밀번호를 각자 알맞게 설정하자.

체크하고 begin을 누르자
Next를 누르자
Next
Next
Next
체크하고 Next
NMS는 Private에 있으니 10.31.0.0./24 로 수정하고 Next
Next
Next
체크하고 Install
Get Started
성공

Cacti Client 설치

- cacti client 설치
(nat, web01, 02, ns에서)
# yum install -y net-snmp net-snmp-utils net-snmp-libs
# vi /etc/snmp/snmpd.conf
view    systemview    included   .1		// 원래 1.3.6.1.2.1.1
# view    systemview    included   .1.3.6.1.2.1.25.1.1	// 각 위치마다 의미가 있음 3:시피유 6:메모리 1:네트워크 순 등등
			// .1 : 다 보여줌
# systemctl enable --now snmpd

(nms에선)
# vi /etc/snmp/snmpd.conf
view    systemview    included	.1
# view    systemview    included   .1.3.6.1.2.1.25.1.1

# systemctl restart snmpd

(모두 다)
# systemctl status snmpd
# firewall-cmd --permanent --add-service=snmp
# firewall-cmd --reload

(nat, web01 에서)
# firewall-cmd --permanent --add-service=snmp --zone=internal
# firewall-cmd --reload

Cacti 사용

파이어폭스로 (NAT IP)/cacti 에 접속
console - management - Devices - add(우측상단)

Description = (원하는 이름), Hostname = (아이피 or 도메인) 으로 설정하고 나머진 그대로

 Management - Devices에 들어가면

이름(web01)클릭시 정보가 나옴
그래프 숫자를 클릭시 그래프 정보가 나옴

리눅스 모니터링

너무 깜빡거리니까 설장해주자 

(NAT에서)
# vi /etc/haproxy/haproxy.cfg
# systemctl restart haproxy
# systemctl status haproxy

크롬에서 접속

device template를 수정
create graphs for this device 클릭

 

디스크: 모두 체크 / 메모리 : physical / 프로세서 : 0 / 인터페이스 : ens32 만 체크
In/Out Bits 선택 후에 Create 클릭

이제 Management - Devices - web01의 그래프 수 를 클릭하고

 

Temple들 체크하고 삭제(밑의 드롭다운 delete로 선택 후 go)

여기까지가 리눅스의 모니터링 방법이다


윈도우 모니터링

설정 - 앱 - 선택적 기능 - 기능 추가 - snmp 검색 후 설치

설치해주자
내 pc 우클릭 - 관리
서비스 및 응용 프로그램 - 서비스 - 표준 - SNMP 서비스 더블 클릭
에이전트 - 서비스 모두 체크
보안 - 인증 트랩 체크 해제 - 받아들인 커뮤니티 추가 - 읽기 전용 / public 추가
모든 호스트로부터 snmp 패킷 받아들이기로 체크 후 적융 후 확인
다시 cacti로 돌아와서 디바이스 추가
위와 같이 설정하자 (호스트 네임은 자신의 윈도우 아이피)
Create Graphs for this Device 클릭
디스크, 메모리, cpu 다 선택
네트워크는 끝에 자기 자신의 윈도우 아이피가 적힌 것만 체크
In/Out Bits로 체크하고 생성
devices에서 win10 그래프 클릭
Template들 선택 후 delete - go

이제 그래프를 보기 편하게 그래프 탭에 띄어보자

Devices에서 윈10, 리눅스를 체크하고 Plcae on a Tree 로 GO
정상적으로 추가됐다.
그래프도 잘 나온다.