Monitoring/Zabbix

[모니터링] Zabbix | VMware vSphere 모니터링 - 설치

인프라보이 2020. 4. 13. 17:04

  VMware vSphere를 운영하면서 다양한 모니터링 솔루션을 사용하지만, 최근에는 오픈소스로 제공중인 Zabbix를 이용한 모니터링으로 기업에서 또는 관리자들이 변경을 하고 있는 추세입니다.

 

 이 VMware vSphere 모니터링은 가상머신 모니터링 보다 이 가상머신을 운영하는 인프라에 대한 모니터링을 하기 위함을 알려드립니다.

 가상머신은 VMware ESXi라는 하이퍼바이저에서 운영을 하게 되며, 우리는 이러한 하이퍼바이저, 스토리지, 네트워크 장비들을 모니터링 할 수 있습니다. (가상머신들은 Zabbix 에이전트를 통해 모니터링 할 수 있습니다.)

Zabbix 모니터링

 Zabbix 만을 가지고 약 60대의 VMware ESXi를 모니터링하는 화면을 캡쳐하였습니다. 

 화려(?)해 보이지만 대시보드로 사용하기에 약간 부족한 대시보드 화면을 제공합니다.  조금 더 시간을 투자하면 Zabbix 메트릭을 Grafana로 보내서 Grafana 대시보드를 만들 수 있습니다. 

Zabbix 메트릭을 Grafana에서 시각화

 위와같이 메트릭을 설정하기 위한 공수(?)가 많이 소요됩니다. 제가 못해서 그럴 수 도 있지만, 우선 초기 Zabbix서버를 설치하는 방법에 대한 공유를 하겠습니다.

 

Zabbix 설치

 

1. 사전 준비 사항

 온프레미스 환경에서 운영중인 VMware vSphere를 모니터링 할 때, 대부분의 기업에서는 서버에서 인터넷 사용에 제약이 있을 수 있어 OS이미지와 Zabbix 사이트에서 다운받은 설치파일 그리고 mysql 설치 이미지가 필요합니다.

 [준비물]

   CentOS 8 ISO파일 

   Zabbix Server 설치 파일 : zabbix-4.4.1.tar.gz

   MySQL 5.7 rpm 번들 : mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

 

 [초기 셋팅]

  -  Zabbix를 가상머신으로 구성합니다. 저는 4vCPU, 8GB Memory, Disk는 현재 500GB 입니다. (Zabbix의 history를 얼마나 가져갈지에 따라 디스크 크기는 변경 될 수 있음!)

  - CentOS 8버전으로 OS설치하고, ISO가 마운트 된 상태에서 Local Repository를 잡아주세요.  
  - 외부 인터넷 통신이 가능한 경우, 기본 CentOS repository로 놔두어야 합니다.

  - "/etc/yum.repos.d/local.repo" 

[BaseOS] 
name=BaseOS 
baseurl=file:///media/BaseOS/ 
enabled=1 
gpgcheck=0 

[AppStream] 
name=AppStream 
baseurl=file:///media/AppStream/ 
enabled=1 
gpgcheck=0     

 

- mount /dev/cdrom /media    # /media 경로에 cdrom ISO파일을 마운트

 

2. 이제 본격적으로 Zabbix 서버 설치 시작

 - APM설치를 위한 기본 유틸리티 설치 및 SELINUX 비활성화

yum install -y pcre* 
yum install -y openssl-devel 
yum install -y perl 
yum install -y gcc 
yum install -y curl curl-devel 
yum install -y libevent-devel 
yum install -y libxml2-devel 
yum install -y libcurl-devel 

yum install -y libcrypto.so.10 
yum install -y libssl* 
yum install -y libncurses.so.5 
yum install -y libtinfo* 
yum install -y net-tools 

yum install -y net-snmp-devel 
yum install -y make 
yum install -y mariadb-devel 
sed -i 's/=enforcing/=disabled/' /etc/selinux/config

 

- MySQL 설치

더보기

tar xvf mysql-5.7.28-1.e17.x86_64.rpm-bundle.tar

#설치순서 : common -> libs -> libs-compat -> embedded -> embeded-devel -> client -> server

rpm -Uvh mysql-community-common-5.7.28-1.e17.x86_64.rpm

# 설치가 진행되지 않을 경우, Dependency 걸리는 항목을 별도로 yum install 설치 합니다. 그래도 안될 경우 yum remove mariadb* 로 mariadb패키지를 제거 후 진행합니다.

rpm -Uvh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-devel-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -Uvh mysql-community-server-5.7.28-1.el7.x86_64.rpm

service mysqld start
ps -ef | grep mysql
vi /var/log/mysqld.log     #임시패스워드 확인 (2번째 줄)
!a)ZTlKzx0JJ

#패스워드를 변경해주세요
$ mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '변경패스워드';

 

 - MySQL 데이터 경로 변경

2) 새로운 Data 디렉토리 생성 및 데이터 복사하기

(Data 디렉토리를 /grid/data/mysql 로 한다는 가정 하에)

sudo mkdir /grid/data/
sudo rsync -av /var/lib/mysql /grid/data/
sudo chown -R mysql:mysql /grid/data/mysql

[client] 
socket=/data/mysql/mysql.sock 

#symbolic-links=0 
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
####변경 경로 확인#### 
mysql> select @@datadir; 
+--------------+ 
| @@datadir    | 
+--------------+ 
| /data/mysql/ | 
+--------------+ 

1 row in set (0.00 sec) 

##### my.cnf 내용###### 
[mysqld]
datadir=/grid/data/mysql
socket=/grid/data/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[client]
socket=/grid/data/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#[client]
#socket=/grid/mysql/mysql.sock
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d


################### 

★ mysql DATA경로가 변경되었으면, php 설치 후 /etc/php.ini 설정 값에 sock 경로 변경해야 함. 
mysqli.default_socket ="/data/mysql/mysql.sock"

systemctl restart mariadb
mysql -u root -p

> select @@datadir;

 

 

 - Apache, PHP 설치 및 설정

yum install -y net-snmp 
yum install -y net-snmp-devel 
yum install -y http 
yum install -y php 
yum install -y php-{xml,bcmath,mbstring,gd,ldap,mysqlnd*} 
yum install -y php-{common,pear,gettext,ctype} 

echo -e "ServerSignature Off\nServerTokens Prod" >> /etc/httpd/conf/httpd.conf 

## /etc/httpd/conf/httpd.conf ##   IP주소 입력
ServerName=10.x.x.x:80   
​ 
sed -i 's/^;date.timezone =/date.timezone = Asia\/Seoul/' /etc/php.ini 
sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini 
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini 
sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini 

service php-fpm restart 
systemctl stop firewalld 
systemctl disable firewalld 

​service httpd start 
service php-fpm start

 - Zabbix 설치 및 설정

groupadd --system zabbix 
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix 
tar -zvxf zabbix-4.4.1.tar.gz 
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl - with-libxml2 및 - with-libcurl  
​ 
make; make install; 

mysql -uroot -p 

create database zabbix character set utf8 collate utf8_bin; 
grant all privileges on zabbix.* to 'zabbix'@'localhost' with grant option; 
grant all privileges on zabbix.* to zabbix@localhost identified by 'Zmffkdnem1!'; 
quit 

cd /data/zabbix-4.4.1/database/mysql 
mysql -uzabbix -pZmffkdnem1! zabbix < schema.sql 
mysql -uzabbix -pZmffkdnem1! zabbix < images.sql 
mysql -uzabbix -pZmffkdnem1! zabbix < data.sql 

vi /usr/local/etc/zabbix_server.conf 
# DBHost, DBName, DBUser, DBPassword 확인 

cp -R /data/zabbix-4.4.1/frontends/* /var/www/html/ 
# 복사한 폴더이름을 zabbix로 변경해줘야 합니다. 
mv php zabbix 

service mysqld restart 
service php-fpm restart 
service httpd restart 

download zabbix.conf.php -> /var/www/html/zabbix/conf/ 

Admin 
zabbix 
​ 

 

이제 Zabbix 서버 IP로 접속하여 zabbix.conf.php 파일을 다운로드하고 서버 아래 경로에 복사합니다.

 " /var/www/html/zabbix/conf/ "

Zabbix 서버에 접속하면 기본 패스워드는 아래와 같습니다. (Zabbix Default Password)

 - ID : Admin
 - 패스워드 : zabbix

아래는 Zabbix 데몬을 systemd에 등록하는 절차이며 진행해주세요. 

vi /usr/local/etc/zabbix_server.conf 
# PidFile=/var/run/zabbix/zabbix_server.pid 

mkdir /var/log/zabbix 
mkdir /var/run/zabbix 
chown zabbix.zabbix /var/log/zabbix 
chown zabbix.zabbix /var/run/zabbix 
​ 




vim /etc/systemd/system/zabbix-server.service 
####################################### 

[Unit] 
Description=Zabbix Server 
After=syslog.target network.target mariadb.service 

​[Service] 

Type=oneshot 
User=zabbix 
ExecStart=/usr/local/sbin/zabbix_server 
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload 
RemainAfterExit=yes 
PIDFile=/var/run/zabbix/zabbix_server.pid 

​[Install] 

WantedBy=multi-user.target 
###################################### 







systemctl daemon-reload 
systemctl start zabbix-server 

firewall-cmd --add-port={80,10051,10050}/tcp --permanent 
firewall-cmd --reload 
systemctl restart httpd 










​###  agent 설정 

vim /etc/systemd/system/zabbix-agent.service 
####################################### 

[Unit] 
Description=Zabbix Agent 
After=syslog.target network.target 

​[Service] 
Type=oneshot 
User=zabbix 
ExecStart=/usr/local/sbin/zabbix_agentd 
RemainAfterExit=yes 
PIDFile=/var/run/zabbix/zabbix_agent.pid 
​ 
[Install] 
WantedBy=multi-user.target 
######################################## 
systemctl daemon-reload 
systemctl start zabbix-agent 
systemctl enable zabbix-agent

 

 

초기 설치 후 Zabbix 화면 중, Zabbix 서버에 대한 모니터링 화면.

VMware 를 위한 모니터링 포스트로, 이후 Zabbix 트리거 설정 및 vCenter 연동은 연동 포스트로 진행하겠습니다. 

728x90