netdata 커스텀 대시보드를 이용한 서버 모니터링

여러 대의 서버 상태를 모니터링하기 위해 각 서버에 netdata 를 설치했고 모니터링 정보 중 cpu, ram, fpm, nginx 등의 상태를 한 눈에 볼 수 있도록 netdata 에서 제공하는 커스텀 대시보드를 이용해 영상과 같은 대시보드를 구성했다. 기존 대시보드에서 fpm, nginx, db 모니터링이 추가됐다.  fpm 등의 모니터링 추가는 아래 포스트를 참고한다.

모니터링 대시보드를 계속해서 볼 수는 없기 때문에 서버 상태에 이상이 생길 경우는 slack 등으로 알림을 전송하도록 설정하는 게 좋다. 현지 slack 의 서버 모니터링 채널로 알림을 전송하도록 설정한 상태이다.

netdata slack 알림 : https://github.com/netdata/netdata/tree/master/health/notifications/slack

netdata 에 nginx 모니터링 추가

php-fpm, mariadb 모니터링에 이어 nginx 모니터링 차트를 netdata 에 추가하는 설정이다. nginx 모니터링은 stub_status 모듈을 통해 이뤄지는데 nginx 설치 때 해당 모듈이 설치되어 있어야 한다. 모듈 설치 여부는 아래 명령을 통해 확인할 수 있다.

nginx -V 2>&1 | grep -o with-http_stub_status_module

모듈이 설치되어 있다면 아래 설정 항목을 추가해주면 된다.

server {
    listen      80;
    server_name localhost;
    access_log  off;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /stub_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

nginx 재시작 후 curl http://localhost/stub_status 를 실행해 아래와 같은 결과가 나오면 정상적으로 설정된 것이다.

Active connections: 8 
server accepts handled requests
 11027 11027 24401 
Reading: 0 Writing: 1 Waiting: 7

netdata 를 재시작하면 아래 이미지와 같은 차트를 확인할 수 있다.

참고자료 : https://docs.iredmail.org/integration.netdata.linux.html

netdata 에 php-fpm, mariadb 모니터링 추가

netdata 설치 후  php-fpm, mariadb 모니터링이 되지 않는다면 다음의 추가 작업이 필요하다. 설정 작업은 Ubuntu 16.04 환경을 기준으로 한다.

1. mariadb 모니터링 추가

위 이미지와 같이 mariadb(mysql) 서버의 모니터링 차트를 표시하기 위해서는 우선 python-mysqldb 패키지 설치가 필요하다.

sudo apt-get -y install python-mysqldb

다음으로 netdata 에서 mariadb 로 접속하기 위해 사용자를 추가해야 한다.

MariaDB [(none)]> create user 'netdata'@'localhost';
MariaDB [(none)]> grant usage on *.* to 'netdata'@'localhost';
MariaDB [(none)]> flush privileges;

netdata 를 재시작하면 이미지와 MySQL 차트가 표시된다. Read More

여러 대의 서버 모니터링을 위한 netdata 커스텀 대시보드

netdata 는 무료이면서 강력한 기능을 제공하는 모니터링 도구이다. netdata 모니터링 항목은 netdata 데모 (https://london.my-netdata.io/default.html) 를 참고한다. 또한 첨부한 이미지와 같이 netdata api 를 통해 여러 대의 서버 자원을 한 눈에 모니터링할 수도 있다. 이를 위해서 netdata 의 커스텀 대시보드를 구성해 본다.

커스텀 대시보드 데모 : http://demo.ncube.net/netdata-dashboard.html

데모에는 cpu, ram, diskuptime 정보를 제공한다. 커스텀 대시보드 데모의 코드는 아래와 같다. Read More

smartmontools의 저장장치 오류 알림 메일로 받기

smartmontools 는 SSD 등의 저자장치 상태를 모니터링하는 툴이다. 저장장치에서 오류가 발생했을 때 메일로 오류 알림을 받을 수 있어 서버의 저장장치 오류를 확인하고 대비할 수 있는 방법이 될 수 있다. smartmontools 를 설치하고 메일 알림을 받기 위한 설정이다. 우분투 서버 16.04 x64 환경에서 테스트했다.

sudo apt-get -y install sendmail
sudo apt-get -y install mailutils
sudo apt-get -y install smartmontools

sendmail 등의 메일 패키지와 smartmontools 를 설치한다.

smartd 데몬 실행을 위해 /etc/default/smartmontools 파일을 아래와 같이 수정한다. #start_smartd=yes 의 주석을 제거한다.

# Defaults for smartmontools initscript (/etc/init.d/smartmontools)
# This is a POSIX shell fragment

# List of devices you want to explicitly enable S.M.A.R.T. for
# Not needed (and not recommended) if the device is monitored by smartd
#enable_smart="/dev/hda /dev/hdb"

# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
#smartd_opts="--interval=1800"

/etc/smartd.conf 에 메일 설정을 한다.

# The word DEVICESCAN will cause any remaining lines in this
# configuration file to be ignored: it tells smartd to scan for all
# ATA and SCSI devices.  DEVICESCAN may be followed by any of the
# Directives listed below, which will be applied to all devices that
# are found.  Most users should comment out DEVICESCAN and explicitly
# list the devices that they wish to monitor.
DEVICESCAN -d removable -n standby -m usermail@gmail.com -M exec /usr/share/smartmontools/smartd-runner

-m root 부분을 -m usermail@gmail.com 으로 변경한다. usermail@gmail.com 은 실제 알림을 받을 메일 주소를 지정한다. 설정 변경 후 smartd 데몬의 설정을 다시 로드 한다.

/etc/init.d/smartmontools reload

smartd 데몬에서 메일이 발송되는지 확인해 보기 위해서는 아래 명령을 실행한다.

sudo echo "/dev/sda -m usermail@gmail.com -M test" > /etc/smartd.conf.test
sudo smartd -c /etc/smartd.conf.test
sudo rm -f /etc/smartd.conf.test

smartmontools 등의 패키지 설치와 메일 발송 테스트를 자동화한 스크립트는 아래와 같다.

#!/bin/bash

# Install mail
sudo apt-get -y install sendmail
sudo apt-get -y install mailutils
sudo apt-get -y install smartmontools

# add email
sudo sed -i "21s/-m root/-m usermail@gmail.com/" /etc/smartd.conf
/etc/init.d/smartmontools reload

# email test
sudo echo "/dev/sda -m usermail@gmail.com -M test" > /etc/smartd.conf.test
sudo smartd -c /etc/smartd.conf.test
sudo rm -f /etc/smartd.conf.test

 

참고자료