[모니터링] Zabbix | VMware vSphere 모니터링 - 설치
VMware vSphere를 운영하면서 다양한 모니터링 솔루션을 사용하지만, 최근에는 오픈소스로 제공중인 Zabbix를 이용한 모니터링으로 기업에서 또는 관리자들이 변경을 하고 있는 추세입니다.
이 VMware vSphere 모니터링은 가상머신 모니터링 보다 이 가상머신을 운영하는 인프라에 대한 모니터링을 하기 위함을 알려드립니다.
가상머신은 VMware ESXi라는 하이퍼바이저에서 운영을 하게 되며, 우리는 이러한 하이퍼바이저, 스토리지, 네트워크 장비들을 모니터링 할 수 있습니다. (가상머신들은 Zabbix 에이전트를 통해 모니터링 할 수 있습니다.)
Zabbix 만을 가지고 약 60대의 VMware ESXi를 모니터링하는 화면을 캡쳐하였습니다.
화려(?)해 보이지만 대시보드로 사용하기에 약간 부족한 대시보드 화면을 제공합니다. 조금 더 시간을 투자하면 Zabbix 메트릭을 Grafana로 보내서 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
VMware 를 위한 모니터링 포스트로, 이후 Zabbix 트리거 설정 및 vCenter 연동은 연동 포스트로 진행하겠습니다.