태그 Archives: zabbix

zabbix 서비스 발견 (GoogleUpdater) 제외

윈도우를 zabbix 으로 감시하면 시작 프로그램에 등록되었으나 정지된 프로그램에 대한 알림이 온다.
이경우 보통은 트리거에 대한 비활성화 만으로 쉽게 꺼둘 수 있다.

다만 크롬 브라우져가 깔려 있을때 zabbix-agent 에서 GoogleUpdaterService, GoogleUpdaterInternalService 가 꺼져있다고 알림이 계속 온다.
이는 트리거를 끄더라도 새로운 버전이 나올 경우 버전 숫자가 높아져서 새로운 알림으로 오게 된다.
때문에 windows agent 의 발견(discover)를 일부 수정하여 서비스 발견을 하지 못하도록 설정해야 한다.

2025-02-25_151636 2025-02-25_1520302025-02-25_1521042025-02-25_162936

편집작업의 선택 값은 아니오 이다.

이미 발생한 트리거는 삭제 또는 비활성화를 한다.

 

출처: https://www.zabbix.com/forum/zabbix-help/477441-googleupdaterservice-alerts

Zabbix 서버의 데이터베이스 테이블 파티셔닝

Zabbix 를 구축하고 일정 기간 운영을 할 경우 “Zabbix housekeeper processes more than 75% busy” 장애를 만나게 된다.
Zabbix 는 housekeeper 가 history 및 trends 테이블에 불필요한 쿼리를 삭제하는 기능을 가지고 있다.
감시 대상이 많을 수록 크겠지만 history_uint 테이블의 크기는 GB 단위를 사용하게 된다.

이때 DELETE 를 이용하게 되는 수백만 단위에서 시간 값을 가지고 삭제 하기 때문에 문제가 된다.
cpu 과점 문제가 발생할 수 밖에 없다. (innodb buffer pool 설정을 키우고 큰 메모리를 장착했다면 문제가 발생하지 않겠지만..)

때문에 housekeeper 대신 테이블을 일자별로 파티셔닝을 하고 DB프로시저를 이용해서 DROP을 하도록 하면 자원 사용을 줄일 수 있다.

아래 프로시저 생성 방법은 미리 일정한 시간 마다 사용할 파티션을 미리 생성(24 시간 / 3개의 포인트) 하고 맞는 시간에 Insert 가 발생 한다면
그에 맞는 파티션에 적재 되도록 하고, 보유 기간(7일)이 만료된 파티션을 DROP을 하는 기능을 가지고 있다.

 


 

1. 압축파일을 다운 받아 프로시저를 DB에 생성한다.

프로시저는 history 는 7일 trends 는 365일 으로 지정되어 있다.

 

2. Mysql 으로 접속해서 스케쥴러가 켜져 있는지 확인한다.

 

3. 생성한 프로시저의 스케쥴링을 12시간 마다로 설정 하고 확인 한다.

이 명령어를 실행할때 이미 쌓여있는 데이터가 크다면 최초 프로시저 실행 시간에 많은 시간이 걸릴 수 있다.

 

4. housekeeper 사용을 끈다.

2025-02-18_164446

 

zbx_db_partitiong.sql 파일로 복구한 프로시저에서 history 는 7일 trends 는 365일로 지정 되어 있다. (보유 날자는 필요할 경우 수정하라 @_@a)

 

파티셔닝이 된 정보는 다음과 같이 확인이 가능하다.

 

출처 : https://bestmonitoringtools.com/zabbix-partitioning-tables-on-mysql-database/

Docker를 이용한 Zabbix 7.2 설치 및 구성

2025-02-17_135350

서버 감시를 위한 오픈소스 툴인 Zabbix 7.2 을 Docker 를 이용해  구성 한다.

공식 메뉴얼 : https://www.zabbix.com/documentation/current/en/manual/installation/containers

 

메뉴얼이 영어긴 하지만 설명이 잘 되어 있는 편이다.

Docker 가 설치된 서버를 준비 하고 메뉴얼을 따라 진행 하되, 몇가지 주의 할 점이 있어서 작업 메뉴얼을 작성 한다.

 


1. zabbix 서버 구축

먼저 도커에 zabbix-net 이라는 네트워크를 생성 한다.

 

mysql 컨테이너를 실행한다.

추가된 옵션:
-v /docker/mysql/conf:/etc/mysql/conf.d : mysql 설정을 변경해야 하는 경우를 위해서 호스트와 연결한다.
-v /docker/mysql/mysql_data:/var/lib/mysql : mysql 버전 업그레이드를 위해 데이터 폴더를 호스트와 연결한다.

 

zabbix 게이트웨이 컨테이너를 실행한다.

JMX 를 이용한 java 프로세스 감시용도로 쓴다.

 

zabbix 서버 컨테이너를 실행 한다.

추가된 옵션:
-e ZBX_CACHESIZE=256M,-e ZBX_VALUECACHESIZE=256M : 감시할 대상이 많아서 증설하였다.

 

zabbix 웹 UI 컨테이너를 실행한다. (nginx, php)

PHP_FPM_PM_MAX_REQUESTS 을 사용해 php-fpm 프로세스가 종료 될 수 있도록 하였다.

 

zabbix-agent2 는 docker 방식도 존재 하지만  호스트OS에 직접 설치해 Docker 를 실행하는 호스트 역시 감시 대상에 넣도록 한다. (호스트OS: CentOS 7)

 


 

2. 기본 설정

설치된 서버의 IP로 접속을 해서 로그인 한다.

URL: (예제) http://192.168.0.240/
ID: admin
PW: zabbix

 

언어 설정은 관리 메뉴에서 변경할 수 있다. (각 유져별로 프로파일에서 설정 할 수도 있다.)
2025-02-17_130816

 

기본적으로 zabbix server 설정이 한개가 되어 있다.
템플릿에 Linux by Zabbix agent, Docker by Zabbix agent 2 를 추가 하고 호스트 OS의 hostnameIP 를 각 칸에 맞게 입력 한다.

2025-02-18_161129

 


 

연결할 서버들은 zabbix-agent2 또는 zabbix-agent 를 설치해서 연결 하거나 SNMP(네트워크 스위치, UPS, NAS) 으로 연결 한다.

zabbix 7.2 의 경우 연결해보니 CentOS 7(agent2) 이상 Ubuntu 16.04 부터 연결이 가능했다. (16.04 의 경우 agent2 가 아닌 agent 로 설치해야 한다.)

CentOS6 또는 Ubuntu 14.04 이하 버전의 경우 낮은 버전의 agent 를 설치해 연결해도 동작은 한다.

다만 몇가지 트리거가 동작하지 않았다. (크리티컬 하지 않다.)

 


 

3. 감시 대상 추가

zabbix-agent2 또는 zabbix-agent 를 이용한 연결 (Linux or Windows)

https://www.zabbix.com/download_agents

2025-02-17_111744
위와 같이 버전 > OS > OS Version > 패키지를 선택하고 화면 아래로 스크롤해보면 설치 메뉴얼을 제공한다.
윈도우는 원형으로 표시된 부분을 눌러 다운받아(.msi) 설치 한다

리눅스는 설치 후 설정 파일/etc/zabbix/zabbix_agent2.conf을 자신에게 맞게 수정해야 한다.

설정 후에는 agent 를 재시작 한다.
주의할점으로 conf에 선언된 “Hostname” 과 zabbix 관리자 내에 설정된 각 “호스트명” 은 꼭 일치해야 하며 유일한(uniq) 값을 사용해야 한다.

윈도우는 아래와 같이 설치 화면에서 zabbix server 의 아이피를 입력 한다.
2025-02-17_112350
윈도우역시 여기서 입력되는 “host name” 과 관리자내의 “호스트명”이 일치해야 한다.
실제 부여된 컴퓨터이름과 관계 없이 바꾸어서 일치시켜 사용할 수도 있다.

2025-02-18_135126
감시 대상 추가의 연결 개념은 위 그림과 같다.

host-setting: 감시할 대상의 IP 또는 호스트명으로 연결 시도
agent.conf: 선언된 IP에서의 접근을 허용 & 템플릿 정보 획득 -> 데이터 생성
zabbix-server: 감시대상의 정보 수집

 

snmp를 이용한 연결

일반적으로 네트워크 스위치와 같은 경우 별도의 Agent 설치가 지원 될리가 없다. 그래서 SNMP(Simple Network Management Protocol) 을 이용해서 감시 한다.
2025-02-17_104837
SNMP 일반적으로 161포트를 이용해서 polling / trpping 방식으로 작동 한다.

SNMP 연결을 위한 커뮤니티는 관리 > 매크로 에서 지정 한다.
값 오른쪽 [T] 버튼을 눌러서 암호 형식으로 저장 하면 가려지기도 한다.2025-02-14_154638
보안이름, 인증패스, 프라이버시 패스는 감시 대상 장치에 동일하게 설정이 되어야 하겠다.

아래는 SNMP v3를 이용한 Synology 연결시 사용하는 방법 이다.
synology > 제어판 > 터미널 및 SNMP 설정

2025-02-17_110200

Zabbix Server > 데이터 수집 > 호스트 > synology-NAS > 인터페이스
2025-02-17_095818

각 UTM 또는 네트워크 스위치 등은 제공 되는 메뉴얼을 참조해서 snmp를 활성화 해서 연결 할 수 있다.

아래는 추가적인 예제로.. UPS(Uninterruptible Power Supply system) 장치의 SNMP 설정 화면 이다.
2025-02-17_113330
EATON 이란 브랜드 이고 zabbix 서버에 템플릿이 없어서 별도로 템플릿(yaml) 파일을 임포트 하였다.
https://github.com/zabbix/community-templates/tree/main/Power_(UPS)

 


 

4. 알림 설정

왼만한 장애요소는 이미 트리거로 등록 되어 있다.  (cpu/mem/disk 사용량 초과, 네트워크 이상 등등)
smartmontools 버전이 7.1 이상일때 디스크 배터 섹터 등의 감시도 된다.
때문에 알림 설정을 해서 서버관리자가 알수 있도록만 하면 된다.

알림 설정은 미디어 타입 활성화(연락 수단), 관리자 계정의 연락처 갱신, 트리거 액션 활성화 를 해서 받아볼 수 있다.
2025-02-17_133633 2025-02-17_133103
텔레그램 수신처는 botfather 를 이용해 봇용 채팅방을 생성하고 [chatid] 를 확인해서 넣어주면 된다.
2025-02-17_133339