본문으로 바로가기

[Ubuntu] 우분투 서버모니터링 - Munin

category 리눅스/Ubuntu 2013. 8. 2. 08:37

Munin은 네트워크, CPU, 각종 입출력 값등을 그래프로 보여주는 툴입니다. 플러그인을 이용하면 Apache 및 MySQL도 모니터링이 가능합니다.

우분투에 Apache 웹서버가 설치되어 있다는 가정하에 진행된다.

Munin 설치

munin은 munin-node가 설치되어 있는 시스템으로부터 정보를 받아와 취합한다. 서버를 물리적으로 여러대 사용하는 경우가 아니라면 한대의 서버에 munin과 munin-node를 설치하여 진행한다.

현재 우분투 12.04에서는 1.4.6 버전의 munin이 설치되는데 오류도 있고 해서 PPA를 통해 최신버전을 설치하길 권장한다.

sudo apt-get install munin munin-node

(munin PPA 설치)

sudo add-apt-repository ppa:tuxpoldo/munin
sudo apt-get update
sudo apt-get install munin munin-node
dpkg -l munin

munin : Master / munin-node : node

Munin 설정

Mster 와 node로 분류된다.

Munin Master 설정

Master 설정파일은 /etc/munin/munin.conf 파일이다.

sudo vi /etc/munin/munin.conf

아래의 4가지 디렉토리들은 패키지 설치시 자동 생성되고 그곳에 각각의 관련파일들이 존재한다. 이중에 htmldir의 경우 munin이 웹페이지에서 실행될 디렉토리인데 원하는 곳으로 수정해서 사용할 수 있다.

# dbdir /var/lib/munin
# htmldir /var/cache/munin/www
# logdir /var/log/munin
# rundir  /var/run/munin

기본적으로 설정되어 있는 node 정보로 한개의 웹서버에 한개의 웹사이트를 운영할 계획이라면 기본값만을 사용해도 문제가 없다. 추가적으로 가상호스트별로 나누어 정보를 얻으려면 이 구역 하부에 노드를 추가한다.

[localhost.localdomain]
  address 127.0.0.1
  use_node_name yes 

가상호스트 추가 예)

[www.uzuro.com]
  address 127.0.0.1
  use_node_name yes 

Munin node 설정

node의 설정파일에 master의 접근을 허용해 줘야 한다. 기본값으로 127.0.0.1이 설정되어 있다.

sudo vi /etc/munin/munin-node.conf

  allow ^127\.0\.0\.1$

가상호스트 추가 예)

host 127.0.0.1
host_name admin.uzuro.com

Apache 설정

munin 설치시 /etc/munin/apache.conf 파일이 생성되고 이는 /etc/apache2/conf.d/munin 으로 심볼릭 링크가 설정된다. 가상호스트를 사용중이라면 해당 가상호스트에 복사하여 설정하면 된다.

아래의 값들은 localhost에서만 접속할 수 있게 되어 있다.

sudo vi /etc/apache2/conf.d/munin

  Alias /munin /var/cache/munin/www
  <Directory /var/cache/munin/www>
    Order allow,deny
    Allow from localhost 127.0.0.0/8 ::1
    # 접속할 IP 추가 설정
    Allow from 192.168.0.3  
    Options None

    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault M310
    </IfModule>
  </Directory> 

.htaccess를 이용한 인증

만약 IP 접속제한 없이 어디서나 접근가능하게 만들고 .htaccess 를 이용하여 접근제하려면 아래와 같이한다. 이때 아파치설정에서 .htaccess 파일의 사용이 허가되어 있어야 한다.

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
      AllowOverride All
      Order allow,deny    
      Allow from All
      Options None

    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault M310
    </IfModule>
</Directory>

.htaccess 파일을 만들어 /var/cache/munin/www 에 위치시킨다.

sudo vi /var/cache/munin/www/.htaccess

  ; 접근이 허락된 유저의 아이디와 비번을 저장할 파일위치
  AuthUserFile /etc/munin/.htpasswd
   
  ; 인증창에 나타날 이름
  AuthName "Munin"
  
  ; 인증 방법
  AuthType Basic  
  require valid-user    

.htpasswd 파일을 만든다.

sudo htpasswd -c /etc/munin/.htpasswd 원하는아이디

  ; 패스워드 입력
  New password: 

  ; 패스워드 재입력
  Re-type new password: 

아파치를 재시작

sudo servicce apache2 restart

Munin 확인

Munin의 경우 하나의 Munin 사이트에서 등록된 node들의 정보를 분리하여 보여준다. 만일 위의 기본설정처럼 IP로 제한을 하고 있다면 도메인네임으로는 접속이 되질 않을 것이다.

그러므로 http://localhost/munin 혹은 http://ip주소/munin 으로 접속한다.

Munin 플러그인

Munin에서 사용가능한 플러그인들은 /usr/share/munin/plugins 에 저장되어 있다. 이 플러그인들중에 /etc/munin/plugins 에 심볼릭링크되어 있는 것들의 정보만 취합하고 있는 것들이다.

플러그인 활성/비활성 리스트

sudo /usr/sbin/munin-node-configure

플러그인 정상작동 여부 판단

sudo /usr/sbin/munin-node-configure --suggest

플러그인을 추가하거나 삭제한 후에는 아래와같이 node를 재시작해줘야 한다.

sudo service munin-node restart

아피치프로세스 관련 모니터링을 추가

플러그인 정상작동 여부 판단을 먼저 한다.

sudo /usr/sbin/munin-node-configure --suggest

에러가 발생한다.

[LWP::UserAgent not found] 와 같은 에러가 발생한다 Munin은 Perl로 작성되었고 'LWP::UserAgent'는 Perl 라이브러리이다.

Perl 라이브러리 설치

sudo apt-get install libwww-perl

플러그인 정상작동 여부 재판단

sudo /usr/sbin/munin-node-configure --suggest

[no apache server-status or ExtendedStatus missing on ports 80] 에러가 발생한다. 이는 아파치의 server-status 모듈을 활성화하고 ExtendedStatus의 값을 On 시킨다.

플러그인 활성화

문제를 해결한 후 아래의 명령을 이용하여 자동으로 플러그인을 활성화

sudo /usr/sbin/munin-node-configure --shell | sudo sh

가끔 sudo과 연속적으로 동작해서 인증이 실패되는 경우가 있는데 sudo를 사용하는 명령어를 한번 입력한후 위의 명령을 바로 실행하면 된다.

혹은 필요한 것만 직접 심볼릭 링크시켜도 된다.

sudo ln -s /usr/share/munin/plugins/apache_* /etc/munin/plugins/

MySQL 모니터링 추가하기

플러그인 정상작동 여부 판단을 먼저 한다.

sudo /usr/sbin/munin-node-configure --suggest

[Missing dependency Cache::Cache] 와 같은 에러가 발생한다.

관련 라이브러리를 설치한다.

sudo apt-get install libcache-cache-perl

플러그인 활성화

문제를 해결한 후 아래의 명령을 이용하여 자동으로 플러그인을 활성화

sudo /usr/sbin/munin-node-configure --shell | sudo sh

가끔 sudo과 연속적으로 동작해서 인증이 실패되는 경우가 있는데 sudo를 사용하는 명령어를 한번 입력한후 위의 명령을 바로 실행하면 된다.

혹은 필요한 것만 직접 심볼릭 링크시켜도 된다.

sudo ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/

만약 mysql을 우분투 기본으로 설치하고 자동으로 세팅되는 사용자 debian-sys-maint 를 수정하지 않았다면 그대로 사용하면 된다. mysql을 컴파일 하였거나, debian-sys-maint 사용자를 수정하였다면 조정이 필요하다.

[mysql*] 부분에 아래와 같이 추가한다.

sudo vi /etc/munin/plugin-conf.d/munin-node

  [mysql*]
    env.mysqlopts -uroot -p비밀번호
    env.mysqladmin /usr/bin/mysqladmin 

node 재시작

sudo service munin-node restart
sudo service apache2 restart 

이후에도 로그를 살펴보니 에러가 3가지나 발생한다.

tail -f /var/log/munin/munin-node.log

관련정보를 찾아보면 이미 패치되었다곤 하는데 설치한 PPA버전도 최선이 아니였던듯 싶다. 패치된 버전을 다운로드 설치해야 될듯 싶다. 그것이 최신버전에 적용됬는지는 모르겠지만...


에러내용

2013/11/06-22:55:05 [26591] Error output from mysql_replication:
2013/11/06-22:55:05 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_replication line 885.
2013/11/06-22:55:05 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_replication line 885.
2013/11/06-22:55:05 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_replication line 885.
2013/11/06-22:55:08 [26591] Error output from mysql_innodb_io_pend:
2013/11/06-22:55:08 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_io_pend line 885.
2013/11/06-22:55:08 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_io_pend line 885.
2013/11/06-22:55:08 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_io_pend line 885.
2013/11/06-22:55:08 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_io_pend line 885.
2013/11/06-22:55:08 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_io_pend line 885.
2013/11/06-22:55:09 [26591] Error output from mysql_innodb_insert_buf:
2013/11/06-22:55:09 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_insert_buf line 885.
2013/11/06-22:55:09 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_insert_buf line 885.
2013/11/06-22:55:09 [26591] Use of uninitialized value in printf at /etc/munin/plugins/mysql_innodb_insert_buf line 885.

그리하여 그냥 세가지 플러그인은 제거했다.

sudo rm -rf /etc/munin/plugins/mysql_replication
sudo rm -rf /etc/munin/plugins/mysql_innodb_io_pend
sudo rm -rf /etc/munin/plugins/mysql_innodb_insert_buf