[인프런] GZS - 우리도 자빅스(Zabbix) - 그라파나, 슬랙 연동 (1)
1. VirtualBox에서 vm간 통신이 되도록 설정하는 방법
1.1. 도구에서 네트워크 관리자를 선택한다.
1.2. NAT Networks에 새로운 네트워크를 만든다.
- 생성 후 Enable DHCP 설정을 끈다. 이외는 그대로 사용한다.
1.3. 이후 설정
- 실재 서버와 통신을 하려면, 포트포워딩 설정을 하면 된다.
- vm에서 확인을 하면 게이트웨이는 10.0.2.1이다.
- vm에서 ip를 수동으로 정의한다. 10.0.2.1을 제외한 어떤 ip도 상관이 없다.
- 서브넷 마스크는 255.255.255.0이다. red-hat 계열 및 리눅스에서는 10.0.2.10/24 로 표기하면 된다.
- 윈도우에서는 ping 테스트를 받기 위해서 방화벽을 모두 끄면 된다.
1.4. 원격 데스크탑 설정 (윈도우 RDP 설정시)
2. 로키 리눅스에 Zabbix 설치
2.1. 설치 가이드
- zabbix 사이트의 download 페이지에서 플랫폼 정보를 선택하면, 이에 맞춰진 설치 방법이 하단에 메뉴얼로 자동 업데이트 되어 제공된다.
- 하지만, 가이드에 누락되는 항목이나 순서가 바뀐 작업들이 있으니 고려 해야한다.
- 사이트 : https://www.zabbix.com/download
- 리눅스의 경우, 메뉴얼에는 mysql 설치에 대한 설명이 없다. 이미 mysql이 설치되어 있다는 가정에 메뉴얼이 제공된다.
- mysql에 로그인을 해 log_bin_trust_function_creators 설정을 하기 전에 zabbix_server.conf 설정을 먼저 해야 에러가 발생하지 않는다. 메뉴얼에서는 이 순서가 바뀌어져 제공된다.
2.2. 기타 설정 - 보안 설정
- maria : mariadb-secure-installation
- mysql : mysql_secure_installation
- change the root password만 no로 설정하고 다른 항목들은 전부 yes를 설정하면 된다.
- redhat 계열의 selinux 보안 설정으로 웹에서 database로의 접속이 안됨
- selinux 보안 해지 방법
- 확인 방법 :
# getenforce
-> Enforcing
- 설절 방법 (재부팅에도 유지, 현재 적용 안됨)
- vi /etc/sysconfig/selinux
SELINUX=enforcing
# 변경
SELINUX=disabled
- 설정 방법 (현재 부팅 상태에만 적용)
# setenforce 0
# getenforce
-> Permissive
- 웹페이지 로그인 계정 정보
- id : Admin
- password : zabbix
- 서비스 포트 확인
netstat -ano | grep tcp | grep LISTEN
3. zabbix agent 설치 - 리눅스
- 설치한 OS 및 zabbix 서버 버전에 맞는 agent를 repo.zabbix.com/ 에서 다운받는다.
- 현재 과정에서는 agent2가 아닌, agent를 다운받아야 한다.
- 다운로드 예시 : https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/
- 설치 방법
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-agent-7.0.16-release1.el9.x86_64.rpm
- config 파일 수정
- /etc/zabbix/zabbix_agentd.conf 파일 수정
...
Server=10.0.2.10 # zabbix 서버 ip
...
ServerActive=127.0.0.1 # 자신의 주소, 그대로 둠
...
Hostname=client-centos # 호스트 네임을 설정
...
- agent 실행 및 등록
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
- netstat으로 서비스 포트 확인
- netstat -ano | grep tcp 실행 후 10050 포트 확인
4. zabbix 서버에 호스트 연동 - 리눅스
- 왼쪽 메뉴바에서 데이터 수집 > 호스트를 누른다.
- 오른쪽 상단 호스트 생성 버튼을 눌러 새 호스트를 추가한다.
- 호스트 명은 zabbix-agent의 config에 정의한 호스트 명을 적어준다.
- 호스트 그룹도 필수로 지정해야 하는데, 실습에서는 application으로 선택한다.
- interface는 4가지 종류가 있다. 에이전트를 선택한다.
- ip에 추가할 호스트의 ip를 입력한다.
- 완료 후 아래와 같이 상태가 활성화 안된 상태로 추가된다.
- 정상 (녹색), 오류 (빨간색)
- 아직 어떠한 아이템, 모니터링 값도 추가하지 않았기에 통신이 없기 때문에 회색으로 유지된다.
5. zabbix agent 설치 - 윈도우
- zabbix download를 검색하여 나오는 페이지를 방문하여 zabbix agents 항목을 누른다.
- 자신에게 맞는 환경 및 버전을 선택하고 하단에 나오는 설치 파일을 다운로드 받는다.
- 사이트 : https://www.zabbix.com/download_agents
- 설치시, 다른 항목들은 자동으로 채워진다. 서버의 ip만 입력해주면 된다.
- path에 추가를 위한 선택도 해줘야 한다.
- zabbix_agentd.conf 파일 위치
6. zabbix 서버에 호스트 연동 - 윈도우
- 위와 동일하게 정의한다 (호스트 명은 conf 파일과 달라도 되는듯)
7. 아이템 추가
- 아이템 추가 관련 정보 : https://www.zabbix.com/documentation/1.8/en/manual/config/items
- 호스트를 누르고 등록된 호스트 리스트 중 원하는 호스트의 아이템을 누른다.
- 오른쪽 상단 아이템 생성 버튼을 무르면 new item 창을 확인할 수 있다.
- 세번째 항목인 키 입력 필드의 오른쪽 선택 버튼을 누르면 정의할 수 있는 키들에 대한 정보를 제공한다.
7.1. 윈도우의 cpu 정보 주집 아이템 추가
- 아이템 생성 > 키의 선택 버튼을 눌러 cpu와 관련된 아이템을 검색해보면 아래와 같이 system.cpu.load 항목을 찾을 수 있다.
- 해당 아이템을 선택하면 키 값이 정의된다.
- 내부 설정 값은 모두 지우고 기본값을 설정한다.
- 이름은 "Check CPU %"로 정의한다.
- 단위를 "%"로 정의한다.
- 아이템 추가 후 다음과 같이 등록된 창을 확인할 수 있다.
7.2. 최근 데이터 갱신하기
- 모니터링 -> 최근 데이터를 선택한다.
- 호스트에 아이템을 등록한 client-windows01을 입력하고 적용을 누른다.
- 업데이트된 리스트의 아이템을 선택한다.
- 아래 활성화된 지금실행 버튼을 누르면 갱신된 상태값을 확인할 수 있다.
7.3. icmp ping 통신 아이템 추가
- icmp 아이템 관련 정보 : https://www.zabbix.com/integrations/ping
- 이름은 "Check Ping to Host"로 정의한다.
- 종류는 간단 검사로 선택한다.
- 키는 제일 상단에 있는 아이템을 선택하고 옵션 항목을 모두 삭제하여 기본 상태로 정의한다.
7.4. 최근 데이터 갱신하기
- 최근 데이터의 적용 버튼을 누르면 최근 값이 1이 출력된다.
- 이는 ping 통신에 대한 응답이 있다는 의미이다.
7.5. 장애조치 클러스트에 대한 서비스 추가
- 호스트 > windows01 아이템 클릭 > 아이템 생성을 클릭한다.
- 이름을 "Check clussvc Service(클러스터 서비스)"로 정의한다.
- zabbix service check을 구글 검색하여 다음 페이지를 참고한다.
- 서비스 관련 정보 : https://www.zabbix.com/documentation/current/en/manual/it_services
- service.info 키 값으로 정의할 수 있다.
- 0일 경우에는 실행중이고, 6일 때에는 멈춰있다.
- 키 값의 파라미터를 service.info[clussvc] 로 정의한다.
7.6. 호스트의 아이템들을 복사하는 방법
- 원본 호스트의 아이템들을 선택하고 하단 복사를 누르면 어디에 복사할 것인지 선택할 수 있다.
7.7. centos의 메모리 사용량 가져오기
- 이름은 "Check Used Memory %"로 정의한다.
- 키 값은 "vm.memory.size[pused]"로 정의한다.
- 수치는 float으로 선택한다.
- 단위는 %로 정의한다.
7.8. 최근 데이터 갱신
8. 트리거 설정
8.1. 트리거 설정은 무엇인가?
- 호스트에서 수집되는 아이템 항목들에 관리자는 조건을 설정할 수 있다.
- 예를 들어 cpu 사용률이 90%에 도달할 경우 알림을 달라고 설정할 수 있다.
- 혹은 네트워크 통신이 안되거나, 특정 윈도우 서비스가 멈췄을 때 트리거를 발동시킬 수 있다.
- Trigger는 Action과 연동하여 알림을 보내거나 특정 작업을 수행할 수 있다.
- 트리거의 기준은 관리자가 여러 방법으로 설정할 수 있다.
- 최근 수집한 데이터 중 평균 값이 90%가 넘는 경우
- 최근 수집한 데이터가 모두 90%가 넘어야 하는 경우
- zabbix의 기본 값 사용
- 모니터링에서 장애가 발생한 경우, 다시 복구가된다면, 장애 표시도 정상으로 돌아온다.
- 트리거 또한 아이템과 동일하게 복사 기능으로 다른 아이템들의 트리거에 생성한 항목들을 복사할 수 있다.
8.2. cpu check 트리거 만들기
- 3번의 모니터링 결과 중 최소 값이 70% 이상의 사용량인 경우
- 트리거 생성에서 조건식 추가를 한다.
- 이름을 정의하고, 심각도는 가벼운 장애를 선택한다.
- 아이템 필드에서 버튼을 눌러 이전에 생성한 cpu check 아이템을 선택한다.
- 기능에서 함수들을 선택할 수 있다. min()을 선택한다.
- 최근 3회를 선택한다
- 결과는 70을 정의하고 부등호는 >를 선택한다.
- 모니터링 예시
1차 | 2차 | 3차 | 결과 |
80 | 90 | 100 | 장애 |
65 | 40 | 100 | 정상 |
100 | 30 | 100 | 정상 |
9. 템플릿 적용하기
9.1. 기본적으로 제공하는 템플릿
- 데이터 수집 > 템플릿 에는 zabbix에서 기본적으로 제공하는 300개가 넘는 템플릿들을 확인할 수 있다.
- 이름 필드에 os 종류 및 추적하기 원하는 아이템을 입력하면 검색이 가능하다.
- 각 템플릿은 목적에 맞게 모니터링으로 추적할 아이템과 경고를 설정하는 트리거 등이 만들어져 제공되어진다.
- 트리거의 조건식을 보면 정수가 아닌, $로 시작하는 변수로 되어 있다. 이것은 템플릿 내 정의된 변수로 매크로에 정의되어 템플릿 내에서 사용되어 진다.
- 트리거의 확인은 템플릿의 호스트, 아이템, 트리거, 그래프, 대시보드 등을 누르면 상단에 링크로 된 메뉴가 제공되어진다. 이 곳에서 템플릿 이름을 클릭하면 템플릿 관련 새로운 창이 뜨는데 이 곳에서 매크로 탭을 확인할 수 있다.
- 모든 탬플릿 / {템필릿 이름}
9.2. 호스트에 적용하기 - centos
- 데이터 수집 > 호스트 메뉴를 누르고 client-centos를 이름 필드에 입력하여 검색한다.
- client-centos 이름을 클릭하면 호스트의 설정을 할 수 있는 창이 나타난다.
- 템플릿 필드의 선택 버튼을 누르면 템플릿 창이 나타난다.
- linux by zabbix agent를 선택하고 호스트 창에서 갱신을 누른다.
- 아이템, 트리거 등의 항목들에 포함된 설정 값들이 증가된 것을 숫자 표기로 확인할 수 있다.
- 최근 데이터에도 수직되는 항목들이 늘어난 것을 확인할 수 있다.
- 사용자가 만든 항목에는 이름 앞에 아무것도 표시되는게 없지만, 템플릿으로 추가된 항목들에는 템플릿 명이 붙어있다.
9.3. 외부 템플릿 가져오기
- 데이터 수집 > 템플릿 > 오른쪽 상단 가져오기 버튼 클릭을 하여 가져올 수 있다.
9.3.1. 외부 템플릿 검색
- 왼쪽 메뉴 하단에 integrations 메뉴를 클릭한다.
- 연동할 수 있는 서버나 서비스들의 템플릿들을 다운로드 할 수 있는 홈페이지로 이동한다.
- 예를들어 아파치 서버 관련 템플릿을 다운받을 경우, 해당 배너를 클릭하고 내부 source 의 링크를 눌러 이동한다.
- 소스 다운받기 페이지 왼쪽 상단에서 릴리즈 버전을 선택한다.
- 릴리즈 정보 하단에 나타나는 yaml 파일을 눌러 이동한다.
- 오른쪽 상단에 Raw file을 눌러 이동 후, 우 클릭하여 페이지를 다른 이름으로 저장하여 다운로드를 한다.
- 이후, 템플릿 메뉴에서 가져오기를 클릭하여 다운받은 yaml 파일을 가져온다.
9.4. 템플릿 삭제하기
9.4.1. 템플릿으로 제공된 아이템, 트리거 등 모든 항목 일괄 삭제
- 데이터 수집 > 호스트 > 호스트 이름 클릭을 하여 호스트 창을 확인한다.
- 템플릿 필드에서 링크와 보존 데이터 삭제 클릭
9.4.2. 템플릿 연동만 삭제하고 적용된 아이템, 트리거 등은 유지하기
- 데이터 수집 > 호스트 > 호스트 이름 클릭을 하여 호스트 창을 확인한다.
- 템플릿 필드에서 링크 삭제 클릭
10. 디스커버리 (Discovery)
- 자원을 자동으로 찾아주는 기능이다.
- zabbix는 클라이언트 서버의 특정 자원을 찾기 위해 looping을 돌며 어떤 자원들이 있는지 검색한다.
- 이때, 디스커버리를 사용하면, 아이템, 트리거, 그래프까지 자동으로 찾고 등록을 해준다.
10.1. windows01에 Windows by Zabbix agent 템플릿 설치 후 디스커버리 확인
- 윈도우 템플릿으로 Windows by Zabbix agent를 설치하면, 데이터 수집 > 호스트 메뉴에서 windows01의 디스커버리를 클릭하면 4개의 템플릿으로 추가된 디스커버리를 확인할 수 있다.
- 첫번째 항목인 Mounted filesystem discovery의 아이템을 확인하면 5개의 항목을 확인할 수 있다.
- 세번째 항목인 total 디스크 항목을 선택한다.
- FS [{#FSLABEL}({#FSNAME})]: Space: Total
- 해당 설정의 동작은 다음과 같다.
- 마스터 아이템( Get data )의 결과 중에 키 값( total )만 가져온다는 의미이다.
- 마스터 아이템 : client-windows01: FS [{#FSLABEL}({#FSNAME})]: Get data
- 키 값 : vfs.fs.dependent.size[{#FSNAME},total]
- Get data 확인
- 해당 호스트/디스커버리/아이템의 첫번째에 정의되어 있다.
- 마스터 아이템 : client-windows01: Get filesystems
- 키 값 : FS [{#FSLABEL}({#FSNAME})]: Get data
- 호스트의 아이템에서 이름 필드에 get으로 검색을 하면 Get data 아이템을 확인할 수 있다.
- 아이템을 확인하면 fs.get 키를 사용한다는 것을 확인할 수 있다.
- zabbix 서버의 터미널에서 명령어를 이용해 직접 키 값을 확인할 수 있다.
- 명령어 : zabbix_get -s 10.0.2.20 -k vfs.fs.get
- 결과 :
- 모니터링 > 최근 데이터에서 확인이 가능하다.
10.2. 새로운 디스커버리 추가
- 클라이언트 서버에 변경 사항이 발생하면, 디스커버리로 인해 자동으로 관련한 정보가 수집되어 전달되고, 관련한 아이템, 트리거 등이 생성된다.
10.3. 디스커버리 수집 제한
- 많은 서버에서 모든 데이터를 수집한다면, zabbix 서버는 많은 부담을 가지게 된다. 이에 디스커버리의 원치 않은 항목을 비활성화 함으로 수집을 제한할 수 있다.
- 비활성화된 상태에서 템플릿을 추가하여도, 자동으로 아이템, 트리거 등이 추적, 생성되지 않는다.
11. 에이전트 모드
11.1. passive 모드
- 서버에서 각 에이전트 ip를 등록하고, 주기적으로 각 에이전트에게 요청을 보내 데이터를 받아오는 모드이다.
- zabbix 서버에서 에이전트에게 모니터링 시간별로 요청을 해야 하기 때문에, 서버의 과부하가 증가된다.
- 요청 후 전달받은 데이터를 zabbix 서버가 DB에 저장한다.
- 강사의 경우 1000대의 모니터링에도 문제없이 사용했다고 한다.
- 데이터 수집 단계
- zabbix 서버에서 모든 에이전트에게 데이터 요청
- 에이전트는 요청한 데이터의 결과 값을 서버에 전달
11.1.1. zabbix 서버에서 에이전트에게 데이터 요청시
#json
{
"request": "passive checks",
"data": [
{
"key": "system.cpu.util",
"timeout": 3
}
]
}
11.1.2. 에이전트에서 zabbix 서버에게 데이터 전달시
#json
{
"response": "success",
"data": [
{
"key": "system.cpu.util",
"value": "95"
}
]
}
11.2. active 모드
- zabbix 서버는 에이전트의 호스트 이름만 정의한 후 listen 상태에서, 각 에이전트가 접속하기 때문에 에이전트의 ip를 등록할 필요가 없는 모드이다.
- 에이전트의 호스트 ip가 변경 되더라도 호스트 zabbix 서버는 호스트 이름만으로 관리를 하기 때문에 관리가 편리하다.
- 각 에이전트가 zabbix 서버에 네트워크 요청을 하기 때문에, 서버의 과부하가 감소된다.
- log 수집과 같이 active 모드에서만 동작하는 아이템이 있다.
- 데이터 수집 단계
- 각 에이전트는 전달해야 하는 데이터가 어떤 것들이 있는지 확인을 하는 요청 메시지를 서버에 전달한다.
- zabbix 서버는 수신해야 하는 데이터들에 대한 정보를 요청한 에이전트에게 전달한다.
- 에이전트는 전달받은 정보를 기반으로 모니터링 데이터를 담아 서버에 전달한다.
11.2.1. 에이전트에서 전달해야 하는 모니터링 데이터 정보 요청시
- 에이전트는 자신의 호스트 정보를 요청 메시지에 담아 서버에게 전달한다.
# json
{
"request": "active checks",
"host": "client-windows01"
}
11.2.2. 모니터링 아이템 정보 전달시
- zabbix 서버는 호스트 정보를 기반으로 등록된 아이템 정보를 확인한다.
- 등록된 아이템 정보를 기반으로 데이터 리스트를 만들어 에이전트에게 전달한다.
# json
{
"response": "success",
"data": [
{
"key": "system.cpu.util[]",
"delay": 60,
"lastlogsize": 0,
"mtime": 0
}
]
}
11.2.3. 에이전트에서 모니터링 정보를 zabbix 서버에 전달시
# json
{
"request": "agent data",
"data": [
{
"host": "client-windows01",
"key": "system.cpu.util[]",
"value": "95",
"clock": 1400675595,
"ns": 76808644
}
],
"session": "1234456akdsjhfoui"
}
11.3. 정리
구분 | Passive 모드 | Active 모드 |
통신 방향 | 서버/프록시 -> 에이전트 (서버가 요청) | 에이전트 -> 서버/프록시 (에이전트가 푸시) |
사용 포트 | 10050(에이전트) | 10050(자빅스 서버) |
부하 | 서버 부하 높음, 에이전트 부하 낮음 | 서버 부하 낮음, 에이전트 부하 높음 |
비용(운영/관리) | 소규모/단순 네트워크 적합, 관리 간단 | 대규모/복잡 네트워크에 적합, 서버 확장성 우수 |
주 용도 | 실시간 요청, 원격 명령, 내부망, 신속한 트리거 | 로그/이벤트 모니터링, 클라우드, NAT, 대규모 환경 |
구성 변경 반영 | 서버에서 즉시 반영 가능 | 에이전트가 주기적으로 구성 동기화 |
호스트 등록 | IP/DNS 필수, 인터페이스 지정 필요 | 호스트명만 일치하면 됨 |
11.4. active 모드 설정
11.4.1. 각 호스트의 zabbix_agentd.conf 파일 수정
- ServerActive=127.0.0.1 으로 루프백 되어 있으면 passive 모드이다.
- ServerActive={zabbix server ip}로 되어 있으면 active 모드이다.
- RefreshActiveChecks 변수에 정의된 정수는 초단위이다. 이 주기마다 에이전트는 서버에 통신을 시도한다.
11.4.2. Zabbix 서버에 호스트 등록
- 호스트의 Hostname 변수의 이름과 zabbix 서버에 등록된 호스트 이름은 동일해야 한다.
- 호스트 등록 후, 아이템 등록을 수동으로 하거나 템플릿으로 등록한다.
- 템플릿을 선택하는 경우, 끝에 active가 명시되어 있는 것을 선택해야 한다.
- 예시 : Windows by Zabbix agent active
- ip는 정의하지 않아도 된다.
11.4.3. 호스트 모니터링 확인
- 아이템을 확인하면, 종류에 ZABBIX 에이전트 (액티브) 가 선택되어 있는것을 확인할 수 있다.
- 지금 실행 버튼이 비활성화 되어 있다. 이는 통신 주체가 클라이언트 호스트이기 때문에 수집을 실시간으로 요청할 수 없기 때문이다.
- 디스커버리가 활성화인 경우, 호스트 등록 후, 연동이 된다면 디스커버리를 통해 자동으로 아이템이 등록된다.
'Infra Management > Zabbix' 카테고리의 다른 글
zabbix7.4 & agent2로 docker 모니터링, mysql, postgresql 모니터링 방법 정리 (3) | 2025.07.30 |
---|---|
오라클 클라우드에 zabbix-agent2 7.4 & ubuntu24.04 설치 및 설정 (2) | 2025.07.25 |
[인프런] GZS - 우리도 자빅스(Zabbix) - 그라파나, 슬랙 연동 (2) (5) | 2025.07.15 |
댓글