[Monitoring] Zabbix Upgrade
안녕하세요? 정리하는 개발자 워니즈 입니다. 자빅스
는 인프라 관리하는 곳에서는 굉장히 유용하게 사용하는 모니터링 툴인데요. 필자가 속한 프로젝트에서도 자빅스를 활용하여 여러가지 지표(CPU, MEMORY, Process, DISK 등등) 들에 대해서 모니터링을 하고 있습니다.
이번시간에는 자빅스 모니터링 툴에 대해 업그레이드를 정리해봤습니다.
지난 포스팅은 아래를 참고 해 주시기 바랍니다.
1. 자빅스 업그레이드 절차
상위의 정리해둔 자빅스 설치 가이드
에 보시면, 아키텍처를 보실 수 있습니다. 필자가 사용하는 버전은 3.0.4
버전이였습니다. 현재 4.4
버전까지 나와있는 것으로 봤을때는 old한 버전입니다.
업그레이드 같은 경우는 설치보다 간단합니다. 기존에 설정해둔 Config
파일들이 있기 때문에 DB 정보에 대해서만 바꿔주기만 하면됩니다.
변경해야될 부분은 다음과 같습니다.
- Zabbix Server Conf 파일의 DB 정보
- Zabbix Web Conf 파일의 DB 정보
- Zabbix Proxy Conf 파일의 DB 정보
- Zabbix DB(Server & Proxy)의 스키마 정보 업그레이드
상위의 부분중에 DB 스키마 업그레이드
는 Server & Proxy의 어플리케이션 업그레이드와 동시에 자동으로
진행됩니다.
절차는 다음과 같이 진행하였습니다.
1. 기존 RDS 스냅샷으로부터 신규 DB 인스턴스 생성
프로젝트에서는 다음 2가지의 DB 를 사용하고 있습니다.
- 자빅스 서버용 RDS (서울 리전)
- 자빅스 프록시용 RDS (프랑크푸르트 리전)
신규 DB 인스턴스 생성은 다음과 같은 절차로 진행했습니다.
- 기존의 DB 인스턴스로부터 스냅샷 생성
- 스냅샷을 기준으로 신규 인스턴스 생성
스냅샷을 생성하는 방법입니다.
기존 인스턴스를 선택하여 우측상단에 작업 > 스냅샷 생성
을 클릭합니다.
이후에 DB 스냅샷 생성
이 나오면, 스냅샷 이름을 젂어줍니다.
이후에 DB 스냅샷이 생성이 되면, DB 인스턴스 복원을 합니다.
신규 인스턴스 생성은 기존과 동일한 VPC, SUBNET에 생성을 하고, SG(Security Group)도 동일하게 넣습니다.
Proxy 서버의 RDS도 동일한 방식으로 인스턴스를 생성해둡니다.
- 자빅스 서버 신규 RDS 복원
- 자빅스 프록시 서버 신규 RDS 복원
2. 자빅스 서버/자빅스웹/자빅스 프록시 서비스 스탑
자빅스 서버
# systemctl stop zabbix-server
자빅스 프록시 서버
# systemctl stop zabbix-proxy
기존의 시스템 컨트롤 명령을 이용해서 자빅스 서버와 프록시 서버의 프로세스를 종료 합니다.
3. 업그레이드 진행
자빅스 서버 (서버 + 웹 모두 업그레이드)
# yum install http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# yum install zabbix-server-mysql zabbix-web-mysql
자빅스 프록시 (프록시 업그레이드)
# yum install http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# yum install zabbix-proxy-mysql
4. 컨피그 변경
자빅스 서버(서버 + 웹의 컨피르 모두 변경)
# vi /etc/zabbix/zabbix_server.conf
DBHost= {zabbix40 서버로 연결}
#vi /etc/zabbix/web/zabbix.conf.php
DBHost= {zabbix40 서버로 연결}
자빅스 프록시(프록시 컨피크 변경)
vi /usr/etc/zabbix_proxy.conf
DBHost= {zabbix40 서버로 연결}
* 여기서 주의할것은 서버쪽은 기존의 서울 리전에 생성한 RDS로 프록시는 프랑크프루트쪽에 생성한 RDS로 연결합니다. (기존 설치 가이드 참조)
5. 자빅스 서버/프록시 구동
자빅스 서버
#/usr/sbin/zabbix_server_mysql -c /etc/zabbix/zabbix_server.conf
자빅스 프록시
#/usr/sbin/zabbix_proxy_mysql -c /usr/etc/zabbix_proxy.conf
6. 자빅스 RDS 스키마 업데이트
376502308- 23763:20191021:141056.172 completed 0% of database upgrade
376502368- 23763:20191021:141126.161 slow query: 29.588918 sec, "alter table history_text drop column id"
376502464: 23763:20191021:141128.913 completed 1% of database upgrade
376502524- 23763:20191021:141129.102 completed 2% of database upgrade
376502584- 23763:20191021:141129.587 completed 3% of database upgrade
376502644- 23763:20191021:141133.609 slow query: 3.600010 sec, "select source,object,objectid,eventid,value from events where eventid>0 and source in (0,3) order by eventid limit 10000"
376502820- 23763:20191021:141158.118 completed 4% of database upgrade
위에 보시는것과 같이 /var/log/zabbix/zabbix_server.log 를 보시면, 어플리케이션 업그레이드와 동시에 자빅스 DB 스키마 업그레이드가 진행됩니다(3.0 -> 4.0 으로 스키마 업그레이드)
7. 자빅스 웹 구동
#sudo service httpd restart
2. 복구 계획
복구 계획은 아마존에서 서버 자체를 Daily AMI를 갖고 있기 때문에 해당 버전으로 인스턴스를 재생성하여 복구 할계획입니다.
- EIP를 기존 인스턴스로부터 해제
- 기존 인스턴스 스탑
- Daily AMI 최신본으로 인스턴스 복구
- EIP 연결
- 기존 자빅스 구동
3. 자빅스 4.x 버전 신규 기능
자빅스를 3.x ->4.x로 변경하면서 가장크게 변경되는 부분은 소소한 UI적인 모습이라고 생각합니다. 하지만, 그 외적인 부분에서 어떤 부분이 변경이 되었는지는 공식 문서에서 확인을 할 수 있습니다.
좋아 보이는 기능은 다음과 같습니다.
- preprocessing 기능
아이템에서 수집되는 정보에 대해서 사전 프로세싱을 할 수 있는 기능이 추가 되었습니다.
스크립트도 가능하며, 수집된 정보를 보기쉽게 연산하는것도 가능해보입니다. - 자동 등록
기존에는 신규 인스턴스가 생성이 되면, 호스트를 등록해주는 과정을 거쳤는데, 자동등록이라는 기능이 추가 되었습니다. 정확한 사용법은 좀더 봐야겠지만, 유용해 보입니다
- 그외 UI적인 요소
향상된 비쥬얼 옵션
바그래프 집계
아이템/트리거에 대한 설명추가
4. 마치며…
자빅스 업그레이드를 진행해보면서 느낀점은, 확실히 모니터링중에서는 가장 강력한 툴중에 하나이고, 잘 활용만 한다면, 빠지는 부분이 없이 모니터링이 충분히 가능한 것 같습니다.
현재 필자가 속한 프로젝트에서는 zabbix -> slack or aws SMS 등을 활용하여 트리거 발생시 알람의 액션
까지 되어있어, 웬만한 모니터링에서는 누락되지 않고 수집하고 있습니다.
다음 이시간에는 자빅스의 사용법에 대해서 정리해보는 시간을 갖도록 하겠습니다.