DigiMoon 맘대로 닦고 조이고 기름치는 재미가 있는 DigiMoon만의 기억 저장소

Posted
Filed under 컴퓨터 탐구/리눅스
작성자: 주인장 디지문
(http://www.digimoon.net/)


1. CentOS 7에 Zabbix Server & Zabbix agent 설치

※ 참고링크
https://www.zabbix.com/documentation/3.4/
 

2. SNMP 모니터링 (네트워크 스위치 or 방화벽 모니터링)
 

Step 1) 네트워크 장비에 SNMP 기능 활성화

※ 참고링크
Switch Cisco - Configure SNMP
http://fucking-it.com/articles/switch-cisco/120-switch-cisco-configure-snmp

 
Step 2) Zabbix 서버 대쉬보드에서 SNMP 모니터링 설정

※ 참고링크
Zabbix - Monitor Cisco Switch via SNMP
http://fucking-it.com/articles/zabbix/117-zabbix-monitor-cisco-switch-via-snmp

※ 네트워크 장비의 SNMP를 Zabbix에서 모니터링하는 설정엔 별도의 Zabbix 클라이언트(Zabbix 에이전트가 동작하는 시스템)가 필요 없습니다. Zabbix 서버가 장비에 직접 액세스하여 SNMP를 수집합니다.

※ Zabbix 서버에 net-snmpd 패키지 설치 불필요합니다. snmpwalk 바이너리도 필요 없습니다.
 

3. Tomcat 모니터링

Step 1) JMX(Java Management Extensions)가 동작하도록 Tomcat 설치 및 구동(JDK 1.5부터 JMX 기본 지원)
[root@tomcat-server ~]# wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz
[root@tomcat-server ~]# tar xvfz apache-tomcat-7.0.82.tar.gz -C /usr/local
[root@tomcat-server ~]# ln -s /usr/local/apache-tomcat-7.0.82 /usr/local/tomcat
[root@tomcat-server ~]# vi /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.



# Tomcat
JAVA_HOME=/usr/java/jdk1.7.0_80
CATALINA_HOME=/usr/local/tomcat
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CLASSPATH PATH CATALINA_HOME

...
[root@tomcat-server ~]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.82/bin/extras/catalina-jmx-remote.jar
[root@tomcat-server ~]# mv catalina-jmx-remote.jar /usr/local/tomcat/lib/
[root@tomcat-server ~]# vi /usr/local/tomcat/bin/setenv.sh
#!/bin/sh
JMX_OPTS=" -Dcom.sun.management.jmxremote \
                 -Dcom.sun.management.jmxremote.authenticate=false \
                 -Djava.rmi.server.hostname=192.168.93.147 \
                -Dcom.sun.management.jmxremote.ssl=false "
CATALINA_OPTS=" ${JMX_OPTS} ${CATALINA_OPTS}"
[root@tomcat-server ~]# chmod 755 /usr/local/tomcat/bin/setenv.sh
[root@tomcat-server ~]# vi /usr/local/tomcat/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">
....
 <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346"/>
...
</Server>
[root@tomcat-server ~]# vi /etc/init.d/tomcat
#!/bin/sh
 # chkconfig: 345 90 90
 # description: init file for tomcat
 # processname: tomcat
 # Get Config
 [ -f /usr/local/tomcat/conf/server.xml ] && [ -f /usr/local/tomcat/conf/web.xml ] || exit 0
 source /etc/profile
 # Source function library
 . /etc/rc.d/init.d/functions
 # caution :
 #           variable=<value> space between variable and value is not allowed
 RETVAL=0
 prog=tomcatd

 # Start function
 start()
 {
   echo -n "Starting $prog : "
   daemon $CATALINA_HOME/bin/startup.sh
   RETVAL=$?
   echo
   touch /var/lock/subsys/tomcat
   return $RETVAL
 }

 # Stop fucntion
 stop()
 {
   echo -n "Stopping $prog : "
   daemon $CATALINA_HOME/bin/shutdown.sh
   RETVAL=$?
   echo
   rm -f /var/lock/subsys/tomcat
   return $RETVAL
 }

 # Restart function
 restart()
 {
   stop
   start
 }

 # See how we were called
 case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            restart
            ;;
      *)
            echo $"Usage : $0 {start|stop|restart}"
 esac

 exit $RETVAL
[root@tomcat-server ~]# chmod 755 /etc/init.d/tomcat
[root@tomcat-server ~]# /etc/init.d/tomcat start
[root@tomcat-server ~]# netstat -ntlp

Step 2) Tomcat 서버에 Zabbix agent 설치


Step 3) Zabbix 서버에 Zabbix Java Gateway 구성

※ 참고링크

how to set up zabbix-java-gateway and monitor tomcat using built in template
https://www.zabbix.com/forum/showpost.php?p=184400&postcount=7

[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10052 <- default 10052
StartJavaPollers=5
[root@zabbix-server ~]# yum install zabbix-java-gateway
[root@zabbix-server ~]# systemctl enable zabbix-java-gateway
[root@zabbix-server ~]# systemctl start zabbix-java-gateway
[root@zabbix-server ~]# systemctl restart zabbix-server
 

Step 4) Zabbix 서버 대쉬보드에서 모니터링 구성


Step 4-1) Configure -> Host -> 대상 호스트 선택 -> Host 탭 메뉴에서 "JMX interfaces"에 아래 정보로 구성

  IP address : Tomcat Server의 IP
  Connect to : IP (기본값)
  Port : 28100 (기본값 12345)


Step 4-2) Configure -> Host -> 대상 호스트 선택 -> Templates 탭 메뉴에서 아래 2가지 Template 추가

  Template JMX Generic
  Template Tomcat
 

4. RabbitMQ 모니터링

Step 1) RHEL7/CentOS7에 rabbitmq-server rpm 설치

참고문서 :
https://www.rabbitmq.com/install-rpm.html

[root@rabbitmq-server ~]# wget https://github.com/rabbitmq/erlang-rpm/releases/download/v20.1.1/erlang-20.1.1-1.el7.centos.x86_64.rpm
[root@rabbitmq-server ~]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el7.noarch.rpm
[root@rabbitmq-server ~]# rpm -ivh erlang-20.1.1-1.el7.centos.x86_64.rpm rabbitmq-server-3.6.12-1.el7.noarch.rpm
[root@rabbitmq-server ~]# cp /usr/share/doc/rabbitmq-server-3.6.12/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
[root@rabbitmq-server ~]# systemctl start rabbitmq-server.service ; systemctl enable rabbitmq-server.service
[root@rabbitmq-server ~]# systemctl status rabbitmq-server.service
[root@rabbitmq-server ~]# rabbitmqctl set_permissions -p / guest "." "." ".*"
[root@rabbitmq-server ~]# rabbitmq-plugins enable rabbitmq_management

management interface에 guest 계정으로는 localhost 상에서만 액세스 가능하다.
http://www.rabbitmq.com/access-control.html

3.3.0부터 guest 계정은 오직 localhost만 액세스 가능하도록 보안이 강화되었다.
https://stackoverflow.com/questions/23020908/how-to-access-rabbitmq-publicly

http://localhost:15672 접속하여 아래 계정 정보로 로그인
Username : guest
Password : guest


Step 2) RabbitMQ 서버에 Zabbix agent 설치
 

Step 3) Zabbix Server, Client(RabbitMQ 서버)에 zabbix-sender 패키지 설치

[root@zabbix-server ~]# yum install zabbix-sender
[root@rabbitmq-server ~]# yum install zabbix-sender
 

Step 4) GitHub에서 rabbitmq-zabbix-master.zip(RabbitMQ용 Zabbix 템플릿 & 클라이언트 설정파일 & RabbitMQ 정보 수집용 파이썬 스크립트) 다운로드

https://github.com/jasonmcintosh/rabbitmq-zabbix


Step 5) RabbitMQ가 동작 중인 Zabbix Client에 스크립트 및 설정 파일 복사

[root@rabbitmq-server ~]# unzip rabbitmq-zabbix-master.zip
[root@rabbitmq-server ~]# cp -avr ./rabbitmq-zabbix-master/* /etc/zabbix/
[root@rabbitmq-server ~]# chown -R zabbix.zabbix /etc/zabbix/scripts
[root@rabbitmq-server ~]# chmod 755 /etc/zabbix/scripts/rabbitmq/*
 

Step 6) Zabbix Client에 .rab.auth 파일 작성(파라미터 변경 용도)

[root@rabbitmq-server ~]# vi /etc/zabbix/scripts/rabbitmq/.rab.auth
USERNAME=guest
PASSWORD=guest

LOGFILE=/var/log/zabbix/rabbitmq_zabbix.log
LOGLEVEL=DEBUG

HOSTNAME=localhost <-USERNAME이 guest면 HOSTNAME은 반드시 localhost여야 하는 듯... 안 그러면 아래와 같이 문제의 로깅 발생
PORT=15672

 

[root@zabbix-client1 rabbitmq]# tail -f /var/log/rabbitmq/rabbit@zabbix-client1.log
=ERROR REPORT==== 7-Mar-2017::10:49:48 ===
webmachine error: path="/api/nodes"
"Unauthorized"
=WARNING REPORT==== 7-Mar-2017::10:50:18 ===
HTTP access denied: user 'guest' - User can only log in via localhost
=ERROR REPORT==== 7-Mar-2017::10:50:18 ===
webmachine error: path="/api/nodes"
"Unauthorized"
PORT=15672


[root@rabbitmq-server ~]# chown zabbix.zabbix /etc/zabbix/scripts/rabbitmq/.rab.auth
[root@rabbitmq-server ~]# /etc/init.d/zabbix-agent restart
 

Step 7) Zabbix Server 대쉬보드에서 rabbitmq.template.xml을 import

Configuration -> Templates -> Import -> Import file의 "찾아보기"에서 rabbitmq.template.xml 찾아 넣기 -> Rules는 기본값으로 -> Import 클릭 -> 추가된 "Template App RabbitMQ v3" 를 Templates 메뉴에서 확인
 

Step 8) Zabbix 서버 대쉬보드에서 RabbitMQ 모니터링 설정

Step 7에서 import한 "Template App RabbitMQ v3"로 구성하면 된다.
 


5. MariaDB 모니터링

※ 몇몇 MariaDB용 Zabbix 비공식 커스텀 템플릿으로 구성 실패하여 Zabbix에 기본 내장된 MySQL 템플릿을 이용하였다. 따라서 Zabbix 대쉬보드에서 모니터링 대상은 MariDB가 아닌 MySQL로 출력된다.

참고링크
https://aikester.com/2017/01/zabbix-mysql-mariadb-monitoring/


Step 1) MariaDB 서버에 Zabbix agent 설치
 

Step 2) MariaDB 서버에서 zabbix user 권한 구성

[root@mariadb-server ~]# mysql -uroot -p'password' -e"GRANT USAGE ON *.* TO 'zabbix'@'127.0.0.1' IDENTIFIED BY 'password'";
[root@mariadb-server ~]# mysql -uroot -p'password' -e"GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password'";
[root@mariadb-server ~]# mysql -uroot -p'password' -e"flush privileges"
[root@mariadb-server ~]# mysql -uzabbix -p'password' -e"status"


Step 3) MariaDB 서버의 userparameter_mysql.conf를 MariaDB 설치된 경로(/mariadb)에 맞게 수정

[root@mariadb-server ~]# vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
※ HOME 변수에 정의한 경로는 .my.cnf가 저장되는 디렉토리여야 한다.
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix -N | awk '{print $$2}'

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | HOME=/var/lib/zabbix /mariadb/bin/mysql -N
UserParameter=mysql.ping,HOME=/etc/zabbix ping | grep -c alive
UserParameter=mysql.version,/mariadb/bin/mysql -V


Step 4) 신규 유저를 위한 로그인 정보를 /etc/zabbix/.my.cnf에 작성
[mysql]
user=zabbix
password=password

[mysqladmin]
user=zabbix
password=password
 

Step 5) zabbix agent 재시작

[root@mariadb-server ~]# /etc/init.d/zabbix-agent restart
 

Step 6) Zabbix 서버 대쉬보드에서 MariaDB 모니터링 설정

Configure -> Host -> 대상 호스트 선택 -> Templates 탭 메뉴에서 "Template App MySQL" 템플릿 추가



6. Windows OS 모니터링

http://www.tecmint.com/install-zabbix-agent-and-add-windows-host-to-zabbix-monioring/


7. Windows IIS 8 모니터링

https://github.com/jjmartres/Zabbix/tree/master/zbx-templates/zbx-windows/zbx-windows-iis

윈도 cmd 창에서 perf_counter 리스트 뽑아볼 수 있으며 이 리스트를 통해 원하는 값을 zabbix_get 도구로 뽑아볼 수 있다.

윈도 cmd나 powershell에서 실행
c:\typeperf -qx > perfcounters.txt

zabbix server에서 실행(zabbix agent 실행 중인 시스템의 특정 counter 정보 출력하기)
root@SRVZABBIXFE:~# yum install zabbix-get
root@SRVZABBIXFE:~# zabbix_get -s192.168.250.240 -p10050 -k "perf_counter["\\SRVEXTRANET\Web Service(_Total)\Bytes Received/sec",300]"


https://www.zabbix.com/documentation/2.0/manual/config/items/perfcounters
https://www.zabbix.com/forum/showthread.php?t=12342
https://www.zabbix.com/forum/showthread.php?t=24239


8. Windows MySQL 모니터링

Zabbix에 내장된 MySQL 템플릿은 리눅스에 설치된 MySQL 기반으로 만들어졌다. 이 템플릿을 Windows에서도 쓰려면 약간의 수정이 필요하다.

참고문서
http://justindoles.com/zabbix-monitor-mysql-windows/

Step 1) MySQL 서버에서 MySQL 바이너리 경로 PATH 설정

Step 2) 윈도우 MySQL 서버에 Zabbix 모니터링용 MySQL 사용자 생성
C:\Users\Administrator> mysql -uroot -p -e "GRANT PROCESS ON *.* TO 'zabbix'@'127.0.0.1' IDENTIFIED BY 'ZabbixPassword'";
C:\Users\Administrator> mysql -uroot -p -e "flush privileges"



Step 3) 리눅스 서버의 MySQL을 모니터링하는 Zabbix 템플릿은 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf의 사용자 파라미터를 참고하여 MySQL 모니터링을 구현하고 있다.
userparameter_mysql.conf에는 리눅스 CoreUtils 패키지에 포함되어 있는 grep, cut, echo 등 윈도우에는 없는 바이너리 실행문이 포함되어 있다.
윈도우용 CoreUtils을 설치하면 위 바이너리들을 윈도우에서도 쓸 수 있다. 윈도우용 CoreUtils를 MySQL 서버에 설치한다.

다운로드
http://gnuwin32.sourceforge.net/packages/coreutils.htm

Complete package, except sources 을 다운로드

설치하였으면 PATH 설정
제어판 -> 시스템 -> 고급 시스템 설정 -> 환경 변수 -> "시스템 변수"에서 Path 편집 클릭하여 추가 -> C:\Program Files (x86)\GnuWin32\bin






Step 4) Zabbix Agent 시스템의 userparameter_mysql.conf 설정
C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.d\zabbix_agentd.userparams.conf

UserParameter=mysql.status[*],mysql --defaults-extra-file="C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.d\zabbix_mysql.cnf" -N -e "show global status like '$1';" -s | cut -f2
UserParameter=mysql.ping,mysqladmin --defaults-extra-file="C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.d\zabbix_mysql.cnf" ping | grep alive | wc -l | cut -d" " -f 7
UserParameter=mysql.version,mysql -V


Step 5) Zabbix Agent 시스템의 zabbix_mysql.cnf 설정
C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.d\zabbix_mysql.cnf
[client]
user = zabbix
password = "ZabbixPassword"
host = 127.0.0.1

Step 6) Zabbix Agent 시스템의 conf 파일에 userparameter_mysql.conf 인클루드 설정 적용 C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.win.conf
### Option: Include
# You may include individual files in the configuration file.
#
# Mandatory: no
# Default:
# Include=
# Include=c:\zabbix\zabbix_agentd.userparams.conf
# Include=c:\zabbix\zabbix_agentd.conf.d\
# Include=c:\zabbix\zabbix_agentd.conf.d\*.conf
Include=C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.d\zabbix_agentd.userparams.conf

Step 7) zabbix agent 재시작

Step 8) 마지막으로 Zabbix Web UI에 "Template App MySQL" 템플릿 반영



Creative Commons License
2017/03/18 09:32 2017/03/18 09:32