Zabbix 3 ¿î¿µ

   Á¶È¸ 27631   Ãßõ 6    

1 Agent 호스트 추가(CentOS6 예시)

 [Agent가 설치 될 Host - 모니터링 할 서버]
 # rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
 # yum install -y zabbix-agent


 # vi /etc/zabbix/zabbix_agentd.conf
 -----------------------------------------------------------------------------------------------------------------------------
 Server=192.168.0.250                //         95
번줄 수정. Zabbix Server IP를 입력한다.
 ServerActive=192.168.0.250         //         136
번줄 수정. Zabbix Server IP를 입력한다.
 Hostname=Zabbix Host1           //         147
번줄 수정. Zabbix 호스트의 이름을 입력한다.
 -----------------------------------------------------------------------------------------------------------------------------
 # service zabbix-agent start
 # chkconfig zabbix-agent on
 # vi /etc/sysconfig/iptables
 -----------------------------------------------------------------------------------------------------------------------------
 -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
 -----------------------------------------------------------------------------------------------------------------------------
 # service iptables restart


 [Zabbix Server WebUI]

‘설정’ - ‘호스트 탭에 호스트 작성을 클릭한다.



호스트 명에는 Agent Host zabbix_agentd.conf - Hostname 에 입력한 값을 넣어주고,

표시명은 관리자가 알아 볼 수 있게 적당히 입력한다.

그룹에는 새로운 그룹을 만들거나, 이미 만들어둔 그룹이 있다면 기타 그룹에서 소속 그룹으로 가져오고,

에이전트 인터페이스에는 Agent Host의 IP를 넣어준다.

모든 입력이 끝나면 템플릿을 클릭한다.


템플릿에서는 관리를 위한 각종 모니터링 정보를 서비스 별로 분류 해 놓은 템플릿을 지정 할 수 있다.

사용 할 템플릿의 이름을 입력하면 자동으로 검색이 되며, 검색 결과를 클릭하여 선택한다.


템플릿이 선택되었다면 반드시 추가를 눌러 링크를 추가 해야 한다.



이렇게 표시가 되야 Agent Host와 템플릿이 정상적으로 연결 된 것이다.

이제 아래쪽 파란 추가 버튼을 눌러 Agent Host를 추가 한다.


잠시 기다리면 Agent Host의 정보를 가져오기 시작하면서 ZBX 버튼이 초록색으로 변한다.



2 템플릿

템플릿은 Zabbix 시스템의 기본이다. 템플릿에 정의된 아이템으로 정보를 수집하고

수집된 정보는 트리거에 정의된 수식으로 장애 유무를 판단하며, 수집된 정보를 바탕으로 그래프와 스크린으로 가공된 정보를 제공한다.

Zabbix에서 제공하는 기본 템플릿에는 Zabbix가 설치 가능한 OS 템플릿과 많이 사용하는 서비스에 대한 템플릿이 있다.

하지만 Windows의 경우 Windows OS에 관한 템플릿은 존재 하지만, 그 밖에 다른 서비스에 대한 템플릿은 기본 제공하지 않기 때문에

이에 대한 템플릿(MSSQL이나 Exchange)은 따로 구해서 넣어줘야 한다.

템플릿은 어플리케이션, 아이템, 트리거, 그래프, 스크린으로 구성되어 있는데 어플리케이션은 아이템에 대한 그룹 역할을 하고,

아이템은 정보 수집, 트리거는 장애 정보 판단, 그래프와 스크린은 모두 시각화 정보 제공에 관한 메뉴이다.

이 문서에서는 아이템과 트리거, 그래프만 살펴본다.

기본 제공되는 FTP 서비스 템플릿을 보기 위해 설정 - 템플릿 - Template App FTP Service” 으로 들어 간다.

첫 화면에서는 템플릿의 이름, 소속 그룹, 이 템플릿을 사용 중인 호스트의 정보가 표시된다.

가장 아래 버튼을 보면 갱신, 복제, 모두 복제, 삭제, 삭제와 클리어, 취소 버튼이 있는데, 이 중 “삭제” 버튼과 “삭제와 클리어” 버튼의

차이점은 다음과 같다.

“삭제” 버튼의 경우 이 템플릿을 사용하던 호스트에 삭제하는 템플릿의 아이템이나 트리거 정보가 그대로 남아있지만,

“삭제와 클리어” 버튼으로 템플릿을 삭제 한다면 이 템플릿을 사용하던 호스트에서 삭제하는 템플릿의 모든 아이템과 트리거 정보가

같이 삭제 된다는 차이가 있다.



2.1 아이템

템플릿에서 아이템은 정보 수집의 역할을 한다.

미리 구성되어 있는 아이템의 정보를 확인 하기 위해서 하단 섹션 서브필터에 FTP service is running을 클릭한다.


아이템의 설정 부분을 살펴보면 이름에는 아이템의 이름이, 종류에는 아이템이 데이터 수집 방법을 선택 할 수 있는 메뉴가 나온다.

키에는 데이터 수집을 위한 수식을 설정 할 수 있는데, 키에 나오는 수식은 좌측 ‘선택’ 버튼을 누르면 설명과 함께 선택 가능한 목록이 나온다.

현재 FTP service에 적용된 키에 관한 설명은 아래와 같다.

이 수식은 tcp를 사용하는 service를 체크하는 수식이고 ip와 port의 입력은 선택사항이다.

단 기본 서비스 파라미터에는 port가 지정되어 있어 port를 넣지 않아도 동작하지만, 그 외 서비스 파라미터의 경우 service 파라미터에는 tcp로

입력하고 port도 반드시 입력해야 한다. 기본 서비스 파라미터의 목록은 다음과 같다.


ftp(21), http(80), https(443), imap(143), ldap(389), nntp(119), pop(110), smtp(25), ssh(22), tcp, telnet(23)

-단, 포트의 Up, Down 체크 방식은 조금씩 다르므로 아래 사이트를 확인하고 사용한다.
https://www.zabbix.com/documentation/3.0/manual/appendix/items/service_check_details


 그리고 키의 설명을 보면 서비스 정지 = 0, 기동 = 1 의 값이 리턴 된다고 설명되어 있는데 이 리턴 값은 트리거가 사용하는 값이다.

만약 해당 서비스가 로그인이 필요한 서비스라면 유저명과 암호에 해당 정보를 넣어주고, 데이터형에는 리턴값의 형태를 설정 해 준다.

갱신 간격은 해당 아이템의 검사 주기를 의미하며 갱신 간격은 사용자가 스케쥴링을 할 수 있다.

값 매핑 사용 부분에서 “값 매핑의 표시”를 클릭하면 사용하는 값 매핑의 리턴 값을 알 수 있는데, 앞서 설명했듯이 이 리턴 값은 트리거가

상태를 판단할 때 사용된다.

모든 설정을 다 마쳤다면 갱신을 클릭해 아이템을 저장 해 준다.


2.2 트리거

템플릿에서 트리거는 아이템이 수집한 정보의 상태를 판단하는 역할을 한다.

템플릿 화면에 우측 조건식을 보면 템플릿과 아이템의 관계를 알 수가 있다.



앞서 설명한 아이템에서 이 아이템의 값은 서비스 정지 = 0, 기동 = 1 이었다만약 서비스가 정지라면 앞부분

“Template App FTP Service:net.tcp.service[ftp]”의 값은 0 이 된다. 트리거는 이 아이템을 총 3번 반복(max(#3)) 하고,

3번 반복해도 값이 0 이라면 이 트리거에 의해 “FTP service is down on {HOST.NAME}” 가벼운 장애가 기록된다.

주의할 점은 트리거가 아이템의 갱신 간격에 따라 계속 실행 되는 것이 아니고 동일한 장애에 대한 트리거는 한번 발동 한다는 것이다.

지속적인 알림(메일 또는 SMS)을 하려면 트리거의 옵션 중 장애이벤트를 계속해서 생성을 활성화 시켜줘야 한다.

일단 아이템을 이용해서 정보를 수집 했다면, 템플릿에서는 조건식을 이용해 여러 장애를 판단 할 수 있다.




 트리거의 조건식 옆 추가를 클릭해 보자.


이 설정 화면에서 각종 조건식을 선택 할 수 있다.

우선 아이템을 먼저 선택하고(참고로 호스트가 바로 나오지 않는다면 다른 그룹을 갔다 다시 오면 된다), 내가 원하는 기능을 선택한다.

최근 시각 또는 횟수를 지정 하고, 원한다면 타임 시프트도 설정 한 다음, 마지막으로 원하는 값을 N에 입력하고 삽입을 누르면 사용자가 만든

조건식이 삽입 된다. 이를 이용해 내가 원하는 상태일 때 트리거를 발동 시킬 수 있다.



2.3 그래프

그래프는 Template OS Windows 그래프를 살펴본다. Template OS Windows에서 그래프 - CPU load를 클릭한다.


그래프 역시 아이템의 정보를 받아 값의 평균, 전체, 최고 또는 최저점을 찍고, 각 값의 연결은 여러 종류의 선을 사용 할 수 있으며,

Y축은 값의 크기로 왼쪽 또는 오른쪽에 넣을 수 있고, 색을 지정할 수 있다. 아이템을 잘 이용하면 멋진 그래프도 만들 수 있다.



3 미디어 타입

미디어 타입은 액션 로그에서 발생한 메시지를 사용자에게 전달하기 위한 설정이다. 미디어 타입은 다음 종류가 있다.

전자우편은 E-mail 방식, 스크립트는 스크립트 폴더에 위치한 스크립트를 실행 할 수 있는 방식,

SMS는 GSM 모뎀을 이용한 SMS 메시지 송신 방식, Jabber는 Jabber 프로토콜을 이용한 방식이며,

상용 서비스는 Ez Texting을 지원하는 방식이다.

본 문서에서는 전자우편, 스크립트 방식만 설명하며, 나머지 방식의 설정 방법은 직접 찾아보기 바란다.


3.1 전자우편

Zabbix에서 전자우편을 보내기 위한 미디어 타입이며, “관리 - 미디어 타입 - 연락 방법 작성을 눌러 새로운 미디어 타입을 등록할 때

기본값이 전자우편이다.

전자우편을 선택 했다면 필요한 값을 모두 넣어주고 추가를 눌러 미디어 타입을 추가 해 준다.

전자우편을 보낼 때 보고서에서 “Support for SMTP authentication was not compiled in” 오류가 출력되면

현재 사용하는 cURL 버전을 확인 해 본다. 7.19 버전이라면 아래 명령어로 rpm을 설치 후 cURL을 업데이트 해준다.

-----------------------------------------------------------------------------------------------------------------------------
# rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-1-13.rhel6.noarch.rpm
# yum update libcurl
-----------------------------------------------------------------------------------------------------------------------------


3.2 스크립트

스크립트는 Zabbix Server의 해당 위치에 있는 스크립트를 수행하는 미디어 타입이다.

스크립트가 위치해야 할 주소는 “/usr/lib/zabbix/alertscripts/” 이며, 해당 스크립트는 rwxr-xr-x의 접근 퍼미션을 가져야 한다.

아래 명령어 예시가 있다.

-----------------------------------------------------------------------------------------------------------------------------
# cd /usr/lib/zabbix/alertscripts/
# touch test.sh
# chmod +x test.sh
-----------------------------------------------------------------------------------------------------------------------------

이제 WebUI로 돌아와 새로운 미디어 타입에서 종류를 스크립트로 선택하면 스크립트 설정 화면이 나온다.

이름에 적당한 이름을 넣어주고, 스크립트 이름은 아까 만든 스크립트의 이름을 넣어준다.

스크립트 파라미터는 유저가 생성 가능하지만, 다음 3가지만 알아도 사용 가능하다.

파라미터의 가장 위쪽은 스크립트에서 변수 1로 출력되며 두번째 스크립트는 변수 2, 세번째 스크립트는 변수 3으로 치환되어 사용 가능하다.

{ALERT.SENDTO}은 보내는 사람, {ALERT.SUBJECT}는 제목, {ALERT.MESSAGE}는 메시지 본문을 의미하는데, 정확한 의미는 아래쪽 액션 파트에서

다시 다룬다.

설정이 끝났으면 추가를 눌러 미디어 타입을 추가 해 준다.


 

4 유저 그룹

여러 유저들의 그룹을 만들어 관리 할 수 있는 방법을 제공하는 기능이다.

오직 유저 그룹에서만 호스트 그룹이나 호스트에 대한 권한을 수정 할 수 있는데, 이는 액션에서 사용자에게 보낼 메시지 전달 기능을 사용하기

위해서 반드시 필요한 부분 이다. 다른 기능을 하는 유저 그룹보다는 메시지 전달을 위한 유저 그룹을 생성해 보자.

먼저 “관리 - 유저 그룹 - 유저 그룹 작성”을 클릭 한다.

그룹 이름은 적당히 입력하고, 소속 그룹은 적당히 포함시켜 주고, 보안을 위해 Web 인터페이스에 액세스 부분은 비활성으로 선택한 다음

권한으로 들어간다.


해당 호스트가 발생하는 장애 메시지를 수신하기 위해서는 최소한 읽기 권한은 줘야 한다.

보안을 위해 메시지 전달 유저 그룹은 해당 호스트에 대한 읽기 전용 권한만 주고 생성하는 것을 추천한다.

맨 처음 사용자 생성 시 만들었던 Group1을 추가 해 준다. 그룹 권한까지 추가 했으면 맨 아래 추가를 클릭해 유저 그룹을 추가 해 준다.

 


5 유저

Zabbix에서는 유저를 여러 기능을 수행할 수 있게 설정이 가능하다.

필자의 경우 유저 그룹을 이용해 알림만 하고 WebUI에는 로그인 안되는 유저와 알림은 사용하지 않지만 WebUI에 로그인 가능한 유저로

분리 했다. WebUI에 로그인 가능한 유저도 모니터링 만 가능한 유저와 Administrator유저를 따로 분리 했는데, 이는 보안 및 필요한 서버

상태만 보여주기 위함이다.

이 문서에서는 알림을 위한 유저 설정만 설명하며, 이 설정을 이해한다면 필요한 서버 상태만 보여줄 수 있는 유저도 생성 가능 할 것이다.

먼저 관리 - 유저 - 유저 작성을 클릭한다.

로그인 이름에 적당한 이름을 넣어주고(로그인을 해야 한다면 로그인 ID를 넣어준다), 알림을 위해 만든 test그룹을 추가 해 준다.

암호를 넣어주고 언어를 한국어로 바꿔준 뒤 상단 연락 방법을 눌러준다.



연락 방법에서 작은 추가를 눌러 설정 화면으로 들어가 종류를 누르면 위에서 추가한 미디어 타입들의 리스트가 출력된다.

스크립트 테스트를 위해 test를 선택하고, 수신처는 적당히 넣어준다.

여기서 나오는 수신처는 스크립트에서 입력한 첫번째 매크로 {ALERT.SENDTO} 에 들어가게 된다.

연락 허용 시간대를 넣어주는데, 1-7은 월-일요일을 의미하고, 시간은 24시간제로 입력하면 된다.

심각도 선택에서는 생성되는 이벤트 중 받고 싶은 심각도의 장애를 선택해 주면 된다.



 권한 파트는 유저 생성에서 설정이 불가능 하고 오직 유저 그룹에서만 지정 가능하다.



6 액션

Zabbix 서버는 발생하는 모든 이벤트를 따로 지정 된 메시지로 가공해 사용자에게 전달 해 줄 수 있다.

이때 이용하는 서비스가 액션 서비스 이다.

설정 메뉴는 “설정 - 액션 - 액션 작성” 으로 들어간다.

이제 필자가 사용하는 디스크 사용량 위험 알림을 이용해 설정 화면을 살펴보자.


6.1 액션

이 파트는 액션에서 전달 할 메시지를 작성하는 부분이다. 디폴트 메시지는 다음 매크로 규칙을 사용해 작성하면 된다.

https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

필자가 사용한 매크로는 “날짜/시간/Agent호스트이름(Agent호스트IP) 메시지” 로 구성되어 있다.

만약 문제 상황이 자동적으로 복구 되어 문제가 회복 되었다면 리커버리 메시지를 사용해 리커버리 메시지를 송신 할 수도 있다.



6.2 조건

조건 파트는 이 액션이 발동 할 조건을 지정하는 부분이다.

필자는 Template OS Windows에서 심각한 장애와 중증 장애가 발생 한다면 해당 액션이 발동하도록 지정 해놨다.

이름은 Disk인데 조건은 Windows 전체인 이유는 생성 당시엔 Disk만 보려다 귀찮아서 심각한, 중증 장애 이벤트 모두 수집하도록 만들어서

그런 것이다.



6.3 오퍼레이션

오퍼레이션은 말 그대로 누가 이 메시지를 수신 할 것인지 설정하는 파트이다.

해당 부분에 송신 방법은 여러가지가 있는데, 필자는 Disk알림만 담당하는 유저를 생성 한 다음 해당 유저가 액션에서 발생하는 메시지를

스크립트로 전달하는 방법을 사용했다. 이 부분은 사용자가 유연하게 설정 가능하니 이 매뉴얼을 보는 유저 분들이 테스트 해보기 바란다.

다시 앞으로 돌아가 미디어 타입과 액션에 액션 파트를 살펴보자.



스크립트 파라미터의 처음 {ALERT.SENDTO}는 앞서 나온 “유저 생성”에서 “연락 방법”에 “수신처”가 매칭 獰駭

다음  {ALERT.SUBJECT}는 “액션”에 “액션”파트의 “디폴트 제목”이 매칭되고 마지막 {ALERT.MESSAGE}도 “액션”에 “액션”파트의 “디폴트 메시지”가

매칭된다.

따라서 아래와 같이 변수 처리를 해 원하는 대로 사용 할 수 있다..

# cd /usr/lib/zabbix/alertscripts/
# vi test.sh
-----------------------------------------------------------------------------------------------------------------------------
#!/bin/bash

echo “$1”
echo “$2”
echo “$3”
-----------------------------------------------------------------------------------------------------------------------------
** 혹시 동작하지 않는다면 $1을 다른 변수로 치환해서 사용하면 된다 **


Outro.
 긴 글 봐주셔서 감사합니다. 뒤로 갈 수록 저도 어려워 제대로 설명하지 못한거 같아 아쉽습니다.
 혹시 보시고 궁금하신 부분은 댓글 달아주시면 알려 드리겠습니다.



Á¦¸ñPage 3/28
2023-03   33540   ±èÁØ¿¬
2023-03   25451   oht993
2023-03   29112   ±èÁØ¿¬
2023-03   18841   ¿ö´Ï´Ô
2023-03   15101   ¿ö´Ï´Ô
2023-03   12297   ¿ö´Ï´Ô
2023-03   11941   µö·¯´×¼­¹ö
2023-02   22107   µö·¯´×¼­¹ö
2023-02   31868   µö·¯´×¼­¹ö
2023-01   33412   µö·¯´×¼­¹ö
2023-01   44427   µö·¯´×¼­¹ö
2023-01   50550   ¹Ú¹®Çü
2023-01   49753   µö·¯´×¼­¹ö
2022-12   42702   ±¤ÁÖIµÎ±ÙÀÌ
2022-12   37656   ±¤ÁÖµ¿Å°È£Å×
2022-12   32121   µö·¯´×¼­¹ö
2022-11   35359   µö·¯´×¼­¹ö
2022-11   42426   µö·¯´×¼­¹ö
2022-11   45376   ocarina
2022-10   40848   µö·¯´×¼­¹ö