구름

Zabbix on CentOS 8 (1) 본문

Monitoring

Zabbix on CentOS 8 (1)

Cloudest 2020. 12. 23. 15:09
 

Cloudest - 블로그 이사했습니다

노션으로 블로그를 옮겼습니다.

흥미로운 포스팅이 올라옵니다!

cloudest.oopy.io

🛠
준비물 : Linux 환경(CentOS 8), AWS 계정

시작 전

  • 목적 : EC2로 Zabbix Server와 Agent를 생성하여 연동하고 모니터링 환경을 구축한다.
  • 실습은 EC2 Instance로 CentOS 8 에서 진행했다.
  • Zabbix Server & Agent를 위한 최소한의 환경에서 실습했다.
  • Zabbix란 ?
    • 수많은 종류의 네트워크 서비스, 서버 등의 네트워크 하드웨어를 감시하고 추적하여 관리자에게 장애 발생을 신속히 알리기 위해 만들어진 네트워크 모니터링 시스템
  • 모니터링 방식
    • Zabbix Server가 Agent를 모니터링 하는 방식은 두가지가 있다.
      1. Passive
        • Server가 Agent에 접근하여 모니터링하는 방식 (TCP/10051)
        • Item 구성 시 Zabbix Agent (active)를 선택하여 사용
      1. Active
        • Agent가 보낸 정보를 Server가 받아 모니터링하는 방식 (TCP/10050)
        • Item 구성 시 Zabbix Agent를 선택하여 사용
    • 1번의 경우 Public IP가 없으면 Agent에 접근하기 어렵기 때문에 Cloud 환경을 고려하여 Active 방식으로 Zabbix 환경을 구성한다.

EC2 인스턴스 생성

  • Server와 Agent 인스턴스 생성
    1. 설정 하지 않는 부분은 모두 Default
    1. EC2 마켓플레이스에서 CentOS8 ami 선택
    1. 인스턴스 2개, VPC, 서브넷, Public IP 설정
    1. 새 보안그룹을 다음과 같이 구성
      • SG이름 : SG-Zabbix-Cloudest
      • 인바운드 규칙 : TCP/22, 80, 10050, 10051 포트를 다음과 같이 설정
    1. 인스턴스 구분의 위해 각각 Server와 Agent로 이름을 붙인다.
    1. 2대의 서버를 모두 연결한다. (CentOS 8의 기본유저는 centos)

공통 설정

  • 모든 작업은 root 계정으로 진행
    1. Host Name 변경
      • HostName 각각 server, agent
    1. TimeZone 설정
      mv /etc/localtime /etc/localtime.ori 
      ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    1. init 6 명령을 통해 재부팅하면 아래 그림과 같이 깔끔하게 식별할 수 있다.
      • 재부팅시에 자동으로 연결되는 것이 아닌, 수동으로 세션을 재연결 해야한다.
    1. SELINUX 비활성화
      • CetnOS의 Selinux를 끄지않으면 다양한 오류가 생기기 때문에 끄고 실습한다.
      • 비활성화 : vi /etc/selinux/config 명령을 통해 다음 사진과 같이 변경
        enforcing → disabled
    1. net-tools 설치
      • ifconfig, netstat 등의 명령어가 포함된 네트워크 관리 패키지
        yum -y install net-tools
    1. 방화벽 설치
      yum -y install firewalld 
      
      systemctl start firewalld (데몬 시작) 
      
      systemctl enable firewalld (재부팅시 자동 시작)

Zabbix Server 환경 구성

  • 패키지 및 구성요소 준비
    1. HTTP, DB 패키지 설치
      • httpd : apache 서버를 구동하기 위한 패키지 mariadb : mariaDB를 사용하기 위한 패키지
        yum -y install httpd mariadb mariadb-devel mariadb-server 
    1. Zabbix 설치를 위한 Yum Repo 추가
      rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
    1. Zabbix 설치
      yum clean all 
      
      yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
    1. HTTP/DB구동 및 프로세스 확인
      systemctl start mariadb 
      systemctl start httpd #(서비스 구동) 
      
      systemctl enable mariadb 
      systemctl enable httpd #(부팅시 자동 시작) 
      
      ps -ef | grep mysql 
      ps -ef | grep httpd #(프로세스 상태 확인) 
    1. 방화벽 포트 허용
      firewall-cmd --zone=public --add-port=80/tcp --permanent 
      firewall-cmd --zone=public --add-port=10051/tcp --permanent 
      firewall-cmd --zone=public --add-port=10050/tcp --permanent
      firewall-cmd --zone=public --add-port=3306/tcp --permanent 
      
      firewall-cmd --reload
  • DB 설정
    1. MariaDB 기본 설정
      [root@localhost ~]# mysql_secure_installation 
      
      Enter current password for root (enter for none): [패스워드가 없기 때문에 엔터] 
      
      Set root password? [Y/n] Y [DB ROOT 패스워드 설정] 
      	New password: 패스워드 입력
      	Re-enter new password: 패스워드 재입력 
          
      Remove anonymous users? [Y/n] Y  [익명 접근을 막을 것인지? Y 엔터] 
      
      Disallow root login remotely? [Y/n] Y  [DB ROOT 원격을 막을 것인지? Y 엔터] 
      
      Remove test database and access to it? [Y/n] Y [Test 데이터베이스를 삭제할 것인가? Y 엔터] 
      
      Reload privilege tables now? [Y/n] Y [현재 설정 값을 적용할지? Y 엔터] 
      
      Thanks for using MariaDB! [완료]
    1. MariaDB 접속 및 Zabbix DB 생성
      • mysql -u root -p → 방금 변경한 암호입력
      • Zabbix 데이터베이스 생성
        💡
        create database zabbix character set utf8 collate utf8_bin;
        (zabbix 라는 데이터베이스 생성)

        grant all privileges on zabbix.* to centos@localhost identified by 'zabbix';
        (각각 새로운 ID, PW이다)

        flush privileges; (변경사항 적용)

        exit
      • Zabbix 테이블 값 정보를 데이터베이스에 적용
        💡
        cd /usr/share/doc/zabbix-server-mysql

        gunzip create.sql.gz

        mysql -u root -p zabbix < create.sql
        -> Enter password : 패스워드 입력
      • Zabbix Config 설정 [수정 후 저장]
        [root@localhost ~]# vi /etc/zabbix/zabbix_server.conf 
            38 LogFile=/var/log/zabbix/zabbix_server.log	[기본 설정] 
            72 PidFile=/var/run/zabbix/zabbix_server.pid	[기본 설정] 
            82 SocketDir=/var/run/zabbix			[기본 설정] 
            91 DBHost=localhost					[주석 제거] 
            100 DBName=zabbix 					[DB 생성 이름과 동일하게 설정] 
            116 DBUser=centos  					[DB 유저 생성 이름과 동일하게 설정] 
            124 DBPassword=test123				[주석 제거 후 DB 유저 패스워드와 동일하게 설정]
      • Zabbix PHP-FPM Config 설정 [수정 후 저장]
        [root@localhost zabbix-server-mysql]# vi /etc/php-fpm.d/zabbix.conf
        
        	24 php_value[date.timezone] = Asia/Seoul [주석(;) 제거 후 한국 시간으로 수정]
  • Zabbix Server 실행
    systemctl start zabbix-server zabbix-agent php-fpm (데몬 실행)
    
    systemctl enable zabbix-server zabbix-agent php-fpm (재부팅 자동 시작) 
    
    zabbix-server 데몬실행이 실패하면 enable 까지 명령어를 넣어준 후 재부팅 후 자동 실행 확인
    zabbix-server start 실패후 재부팅
    재부팅 후 자동으로 구동되는 zabbix-server 데몬

Zabbix 구동 확인

  • Zabbix Web 설치 페이지 접속
    • [http://[서버IP or 호스트네임]/zabbix 경로로 접속 → Next step
    • 기본 설정 되어 있으므로 Next step
    • DB 세팅 정보에 맞게 설정후 Next step
    • 최종 확인 및 설치 완료
    • 초기값인 Admin / zabbix를 입력하여 로그인한다.
    • 메인 대시보드에 접속 할 수 있다.
  • 기본 설정
    • [Administration → Users → Admin 계정 클릭]
      💡
      Language - 언어 설정 [Korean (ko_KR)][디폴트 언어는 영어와 한국어만 있으므로 그 외에는 언어팩 설치해야 가능]

      Theme - 스킨 설정 [개인적으로 다크모드 성애자]
      업데이트 후 한글화 + 다크모드등이 적용됨
    • [모니터링 → 호스트]의 Zabbix server의 상태에 초록불이 들어오면 서버 환경 구성 완료

 

Comments