네트워크 - 실습 4 (CACTI)

jsbak·2023년 3월 21일
0

Cloud

목록 보기
5/59

NMS

  • nms의 원리 :
    • 주변에 이웃해 있는 VM에게 지금 CPU와 메모리 사용량이 어떻게 되는지 묻는다. 하드웨어 / 네트워크 대역폭 등...
  • SNMP - (Simple Network Management Protocol; UDP 161)을 이용해서 묻는다.
  • rrdtool - 그래프를 그려주는 도구

cacti server 설치 (AWS CloudWatch; NMS : Network Management System)

CACTI: 선인장

  • VMware ➡ File ➡ Open ➡ NMS_CACTI ➡ Network 설정 (LAN 카드 LAN Segment ➡ vSwitch) ➡
    hostnamectl set-hostname nms ➡
    public key를 NAT로 보내준다. (NAT의 .ssh 폴더로 id_rsa.pub / id_rsa 둘다 올림)
  • NMS 서버로 키 전송 : ssh-copy-id -i .ssh/id_rsa root@10.31.0.103
  • NMS 서버로 접속 : ssh -i id_rsa root@10.31.0.103

NAT의 환경인지체크 (사설망)

\# cat /etc/resolv.conf
--------------------------------
# Generated by NetworkManager
nameserver 10.31.0.102
nameserver 8.8.8.8
nameserver 8.8.4.4
--------------------------------

(필요하면) DNS 등록하려면

  • NS로 이동한 뒤
vi /var/named/bakjisu2.shop.db
--------------------------------
nms	IN	A	10.31.0.103
--------------------------------
\# ping nms.bakjisu.shop
--------------------------------
ping: nms.bakjisu.shop: Name or service not known
--------------------------------
\# systemctl restart named # 재시작

http 환경 만들기

  • nms 홈 디렉터리 이동 및 SELinux 설정 끄기
/*
	생략 이미 되어있어서
	sed -i: 치환 명령어 enforcing을 disabled로 바꾸겠다.
*/
\# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
\# setenforce 0
  • http 환경 설치
\# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

## 개발 관련 도구도 설치 httpd-devel
\# yum install -y httpd httpd-devel
\# systemctl enable --now httpd

snmp 설정

\# yum install -y net-snmp net-snmp-utils net-snmp-libs rrdtool
\# systemctl enable --now snmpd

DB 설치 (DB 서버 있다면 생략)

\# yum install -y mariadb-server
\# systemctl enable --now mariadb
\# mysql_secure_installation

nms를 사용하기 위한 snmp 관련 php 라이브러리 설치

/*
	--enablerepo=epel 라는 특별 저장소로부터 설치하겠다.
*/
\# yum --enablerepo=epel install -y php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-intl php-snmp

CACTI 데이테베이스 생성 및 유저 생성

  • DB가 깔린 곳에서 실행
## ns 서버(=DB 서버)에서 실행. ) - DB 깔린곳에서 수행
\# mysql -u root -p

----------------- 아래는 MYSQL 접속 상태 -----------------
create database cacti;

// 머신이 떨어져 있기 때문에 localhost 가 아니라 '%' 로 줘야한다. (원격지)
CREATE USER 'cactiuser'@'%' IDENTIFIED BY 'Kosa0220!';
grant all privileges on cacti.* to cactiuser@'%';	-- cacti DB의 모든 테이블에 대한 모든 권한
FLUSH PRIVILEGES;	-- 변경 적용, Grant 테이블 reload
exit

생성한 CACTI 데이터베이스 접속

  • nms 로 가서
    ns 서버에서 DB 접속 해보기, DB root PW: kosa0220 (root 원격지 접속 불가능하게 변경했기 때문 % ➡ localhost)

시간 정보 넣기

DB서버에서?

\# mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql
\# mysql -u root -p
----------------- 아래는 MYSQL 접속 상태 -----------------
GRANT SELECT ON mysql.time_zone_name TO cactiuser@'%'; -- 'cactiuser'@'%' - '' 을 생략해도된다. (띄어쓰기 있다면 예외, Ex) 'hello world')
flush privileges;
exit
----------------- MYSQL 접속 상태 -----------------


\# vi /etc/my.cnf.d/server.cnf
[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

### conf 설정 파일 건드렸기 때문에 재시작
\# systemctl restart mariadb.service

CACTI 구축

  • NMS 서버로 이동 (CACTI 설치할 곳)
\# yum -y install cacti

데이터베이스 변경에 따른 원본 저장이 필요한 경우

mariadb -> mysql 환경으로 바꾸기 위해서
wordpress 디비 내보내기

  • sqlDB 내보내기
    mysqldump -u root -p wordpress > wordpress.sql

자동 패키지들 제거
yum autoremove -y MariaDB
위로 가서 생략에 있는 mariadb-server 로 재설치

cacti.sql 파일 넣기

  • NMS 서버에 있는 /usr/share/doc/cacti-*/cacti.sql 를 DB 서버로 주입해야한다.

DB 서버로 원격 접속하는데 'cactiuser' 계정으로 'cacti' 데이터 베이스에 '/usr/share/doc/cacti-*/cacti.sql' 주입

\# mysql -h 도메인(ns.bakjisu2.shop) -u cactiuser -p cacti < /usr/share/doc/cacti-*/cacti.sql
\# vi /usr/share/cacti/include/config.php
-----------------------------------------
$database_hostname = 'ns.bakjisu2.shop';
$database_password = 'Kosa0220!';
-----------------------------------------

5분마다 수행하도록 크론탭 설정 (polling time)

  • 사용자가 등록된 호스트의 cpu사용량을 묻고 가져와 데이터베이스에 넣는 도구(polling), 컴퓨터 리소스 사용량을 받아도록 설정 (polling: 여론조사?)
  • > /dev/null 2>&1 오류는 무시
\# vi /etc/cron.d/cacti
-----------------------------------------
*/5 * * * *     apache  /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
-----------------------------------------

CACTI 설정 파일 수정 및 적용

\# vi /etc/httpd/conf.d/cacti.conf
-----------------------------------------
Require host localhost --> Require all granted
Allow from localhost --> Allow from all
-----------------------------------------

\# vi /etc/php.ini
-----------------------------------------
date.timezone = Asia/Seoul -> 앞에 주석 처리(;) 제거
memory_limit = 800M
max_execution_time = 60
-----------------------------------------


\# systemctl restart httpd.service

## NS 서버에서 수행
\# systemctl restart mariadb.service

## NMS 로 돌아와서 수행
\# systemctl restart snmpd.service
\# firewall-cmd --permanent --add-service=http
\# firewall-cmd --reload
\# reboot
\# systemctl status snmpd 

(필요에 따라) HAProxy에 등록 해야될 경우

NAT에서 수행

\# vi /etc/haproxy/haproxy.cfg
-----
acl safari hdr_sub(User-Agent) Safari
server		web03 10.31.0.103:80 cookie w3 check (CACTI IP 주소)
backend bk_safari
  server             web03 10.31.0.103:80
-----
		/*
			global
				daemon

			defaults
				mode               http

			frontend  http-in
				bind *:80
				acl firefox hdr_sub(User-Agent) Firefox
				acl chrome hdr_sub(User-Agent) Chrome
				acl safari hdr_sub(User-Agent) Safari
				default_backend    backend_servers
				use_backend bk_firefox if firefox
				use_backend bk_chrome if chrome
				use_backend bk_safari if safari

			# 서버를 그룹으로 묶어서 우리는 2개 web03(X)
			backend backend_servers
				balance            roundrobin
			#    cookie  SVID insert indirect nocache maxlife 10s
				server             web01 10.31.0.100:80 cookie w1 check
				server             web02 10.31.0.101:80 cookie w2 check
				server             web03 10.31.0.103:80 cookie w3 check

			backend bk_firefox
				server             web01 10.31.0.100:80
			backend bk_chrome
				server             web02 10.31.0.101:80
			backend bk_safari
				server             web03 10.31.0.103:80
			~
		*/

\# systemctl restart haproxy

CACTI 접속 및 초기 설정하기

  • http://Your-Server-IP/cacti 로 접속하기
  • opensource 초기 정보
    admin / admin (ID/PASSWORD)
  • GPL 라이선스 : 무료
  • (Cacti Version 1.2.23 - 라이선스 계약) GPL 라이선스 체크 ➡ Begin ➡ (Pre-installation Checks) 기본 값 Next ➡
    (Installtion Type) 기본 값 Next ➡ (Directory Permission Checks) 기본 값 Next ➡ (Critical Binary Locations and Versions) 기본 값 Next ➡
    (Input Validation Whitelist Protection) I have read this statement 체크 후 기본 값 Next ➡
    (Default Profile) Network Range(10.31.0.0/24; 프라이빗네트워크대역) 설정 후 Next ➡
    (Template Setup) 기본 값 Next ➡ (Server Collation) 기본 값 Next ➡
    (Confirm Installtion) Confirm Installtion 체크 후 Install ➡ Get Started 클릭

(필요에 따라) NMS 추가할 서버에서 실행

  • cacti client 설치
  • 다른 WEB01, WEB02, NS 서버의 컴퓨팅 리소스를 관리하기 위해서 각각 설치
  • 관리를 하려면 서비스 및 프로토콜 관련된 것을 설치해야한다. (SNMP)
\# yum install -y net-snmp net-snmp-utils net-snmp-libs

-- 제대로 사용시 수정해야한다. NAT 에서
-- SNMP 잘못 사용시 보안 문제 발생... 
\# vi /etc/snmp/snmpd.conf
----------------------------------------------------------------------------------
view    systemview    included   .1(전체 모두)

/*
	# Make at least  snmpwalk -v 1 localhost -c public system fast again.
	#       name           incl/excl     subtree         mask(optional)
	view    systemview    included   .1.3.6.1.2.1.1
	view    systemview    included   .1.3.6.1.2.1.25.1.1
	
	.1.3.6.1.2.1.1 숫자가 가면 갈수록('.' 하나 넘어갈수록) view라는 속성을 통해서 이 점을 나열하면 CPU까지 보여줄지, 메모리까지 모여줄지,CPU + 메모리, 
	CPU+메모리+...+... 등을 보여줄지 설정하는 부분 (tree가 길어질수록(오른쪽으로) 리소스 범위가 제한된다.)
	
	1, 3, 6... 리소스를 접근할 수 있도록 도와주는 ID
	
	아래로 ⬇ 변경 
	# Make at least  snmpwalk -v 1 localhost -c public system fast again.
	#       name           incl/excl     subtree         mask(optional)
	view    systemview    included   .1(전체 모두)
*/
----------------------------------------------------------------------------------

\# systemctl enable --now snmpd (처음 실행인 경우)
\# systemctl restart snmpd


-- 다른 VM들 
\# firewall-cmd --permanent --add-service=snmp
-- NAT만 
\# firewall-cmd --permanent --add-service=snmp --zone=internal
\# firewall-cmd --reload

WEB01 CACTI 추가

  • CACTI 사이트에서 콘솔 ➡ Management ➡ Devices ➡ 우측 상단 바에 '+' 버튼 클릭 ➡
    /
    Description - WEB01
    Hostname - web01.bakjisu2.shop (IP/도메인)
    ...
    💥 Device Template - Net-SNMP Device 선택 ([... Local Linux Machine / DNS, Generic SNMP Device])
    ...(나머지 디폴트)
    /
    ➡ Data Query 모니터링할 것을 찾아서..
    ➡ Create 클릭 ➡ 우측 상단에 *Create Graphs for this Device 클릭
    ➡ Data Query [Net-SNMP - Get Device I/O] 는 전체 선택
    ➡ Data Query [SNMP - Get Mounted Partitions] 의 Physical memory (Description) 체크
    ➡ Data Query [SNMP - Get Processor Information] 의 0(Processor Index Number) 클릭
    ➡ Data Query [SNMP - Interface Statistics] 의 ens32 클릭
    ➡ 바로 하단에 (Select a Graph Type to Create) 옆 드랍박스 클릭후 In/Out Bits 선택
    ➡ Create
  • Management, Devices 탭으로 가서 확인해보면 (시간 지나서 up되는지 확인)
  • 확인할 디바이스행의 Graph 열에 있는 숫자 클릭 ➡ Source Type 중 Template인 경우(삭제) 체크 후 ➡ Choose(Delete) ➡ Go ➡ 계속

Window 추가

  • 설정 ➡ 앱 ➡ 선택적 기능 ➡ 기능 추가 ➡ snmp(Simple Network Management Protocol) 체크 후 ➡ 설치
    ➡ 탐색기 열어서 내 PC 우클릭 ➡ 관리 ➡ 좌측 탭 맨 아래 서비스 및 응용프로그램 ➡ 하단에 표준 선택 ➡ SNMP 서비스 두 번 클릭(속성)
    ➡ 에이전트 탭 ➡ 서비스 체크박스 모두 체크 ➡ 보안 탭 인증 트랩 보내기 해제 ➡ 받아들인 커뮤니티 이름 추가 클릭 ➡ 읽기전용, public, 추가 클릭
    ➡ 모든 호스트로부터 SNMP 패킷 받아들이기 체크 ➡ 적용 클릭, 확인 클릭 ➡
    cacti 콘솔로 가서 위에 CACTI 추가하기 처럼 추가
    (Description: win10, Hostname:win10_ip, Device Template: windows Device)
    ➡ Data Query [SNMP - Get Mounted Partitions] 모두 선택
    ➡ Data Query [SNMP - Get Processor Information] 모두 선택 (CPU-Core)
    ➡ Data Query [SNMP - Interface Statistics]의
    Discription이 Realtek PCIe Gbe... 우측 IP address에 아이피 있는 녀석 선택
    ➡ 바로 하단에 (Select a Graph Type to Create) 옆 드랍박스 클릭후 In/Out Bits 선택 ➡ Create
    ➡ Management ➡ Devices 탭 ➡ 확인할 디바이스(win10)의 Graph 열에 있는 숫자 클릭
    ➡ Source Type 중 Template인 경우(삭제) 체크 후 ➡ Choose(Delete) ➡ Go ➡ Continue

그래프 전체 활성화?

Console ➡ Management ➡ Devices 탭 ➡ Device(들) 선택 (WIN10, WEB01) ➡
➡ 우측 하단에 드롭박스 Place on a Tree (Default Tree) ➡ Go ➡ Continue
➡ 좌측 상단에 Graph 클릭

cf. 참고

  • 계속 깜박 거림 - 파일 변경 /etc/haproxy/haproxy.cfg
vi /etc/haproxy/haproxy.cfg

/*
	--- 사파리 관련 부분 주석처리, 크롬 부분을 수정
		
	global
		daemon

	defaults
		mode               http

	frontend  http-in
	...
		acl chrome hdr_sub(User-Agent) Chrome
	#    acl safari hdr_sub(User-Agent) Safari
		default_backend    backend_servers
	...
		use_backend bk_chrome if chrome
	#    use_backend bk_safari if safari

	# 서버를 그룹으로 묶어서 우리는 2개 web03(X)
	backend backend_servers
		balance            roundrobin
	#    cookie  SVID insert indirect nocache maxlife 10s
		server             web01 10.31.0.100:80 cookie w1 check
		server             web02 10.31.0.103:80 cookie w2 check
	#    server             web03 10.31.0.103:80 cookie w3 check

	backend bk_firefox
		server             web01 10.31.0.100:80
	backend bk_chrome
		server             web02 10.31.0.103:80
	#backend bk_safari
	#    server            web03 10.31.0.103:80
*/
이후  
\# systemctl restart haproxy
\# systemctl status haproxy
profile
끄적끄적 쓰는곳

0개의 댓글