생산을 위한 구축: 웹 응용 프로그램 - 모니터링

생산을 위한 구축: 웹 응용 프로그램 - 모니터링

2022-06-01 last update

11 minutes reading Monitoring Ubuntu

소개


이제 운영 애플리케이션 서버 설정, 복구 계획 및 백업을 통해 서버 및 서비스 상태에 대한 이해를 높이기 위해 모니터링을 추가할 수 있습니다.모니터 소프트웨어(예: Nagios, Icinga, Zabbix)를 사용하면 응용 프로그램이 설정한 구성 요소를 표시하기 위해 대시보드와 경보를 만들 수 있습니다.이렇게 하는 목적은 사용자가 문제가 발생하기 전에 설정의 문제를 검사하고 복구를 시작하는 데 도움을 주는 것입니다.

이 강좌에서는 Nagios 4를 모니터링 소프트웨어로 설정하고 응용 프로그램을 구성하는 서버에 NRPE 에이전트를 설치합니다.
설정 중인 모든 서버에 대해 서버가 시작되었는지, 메인 프로세스 (즉apache, mysql 또는haproxy) 가 실행 중인지 확인하기 위해 감시를 설정합니다.비록 이 모니터링 지침은 전면적이지 않지만, 당신은 우리가 여기에 관련되지 않는 다른 검사를 설정하기를 원할 수도 있습니다. 이것은 좋은 시작입니다.

선결 조건


도메인 이름을 통해 로그 대시보드에 액세스하려면 도메인 아래에 감시 서버의 공공 IP 주소를 가리키는 a기록을 만듭니다. 예를 들어 "monitoring.example.com"입니다.또는 공통 IP 주소를 통해 모니터링 대시보드에 액세스할 수 있습니다.모니터링 웹 서버를 HTTPS를 사용하도록 설정하고 VPN 뒤에 배치하여 액세스를 제한하는 것이 좋습니다.

모니터링 서버에 Nagios 설치


다음 강좌에 따라 모니터링 서버에 Nagios: How To Install Nagios 4 and Monitor Your Servers on Ubuntu 14.04을 설정합니다.원한다면 Icinga을 사용할 수도 있습니다. 이것은 Nagios의 지점입니다.
NRPE가 있는 Ubuntu 호스트 모니터 섹션에 도달하면 중지됩니다.

Nagios에 서버 추가


설정 중인 모든 서버(db1, app1, app2, lb1)에서 Nagios 강좌의 Monitor an Ubuntu Host with NRPE 부분을 완성합니다.
NRPE 프로필의 allowed_hosts 설정에 모니터링 서버의 개인 호스트 이름이나 IP 주소를 추가해야 합니다.
각 호스트를 추가한 후 모니터링할 서버마다 db1.cfg, app1.cfg, app2.cfglb1.cfg의 단독 파일이 있어야 합니다.각 파일에는 각 호스트 이름과 주소(서버의 호스트 이름 또는 IP 주소일 수 있음)를 참조하는 호스트 정의가 포함되어야 합니다.

호스트 및 서비스 모니터링 설정


각 서버에서 모니터링할 일반적인 내용을 보여 줍니다.각 서버의 경우 다음 서비스를 모니터링합니다.
  • SSH
  • 현재 부하
  • 현재 사용자
  • 디스크 활용도
  • 지금 바로 설치합시다.

    공공 서비스 정의


    Nagios 설치 강좌에서 .cfg에서 /usr/local/nagios/etc/servers 파일을 찾거나 Icinga에서 /etc/icinga/objects/ 파일을 찾도록 Nagios를 구성합니다.조직의 질서를 유지하기 위해서, 우리는 감시할 공공 서비스에'common.cfg'라는 새 Nagios 프로필을 만들 것입니다.
    먼저 편집할 호스트 구성 파일을 엽니다.
    1. sudo vi /usr/local/nagios/etc/servers/common.cfg
    각 서버의 host\u 이름 (이전 호스트 정의에서 정의) 을 사용하여 다음 서비스 정의를 추가합니다.
    Nagios 구성 - 공공 서비스
    define service {
            use                             generic-service
            host_name                       db1,app1,app2,lb1
            service_description             PING
            check_command                   check_ping!100.0,20%!500.0,60%
    }
    
    define service {
            use                             generic-service
            host_name                       db1,app1,app2,lb1
            service_description             SSH
            check_command                   check_ssh
            notifications_enabled           0
    }
    
    define service {
            use                             generic-service
            host_name                       db1,app1,app2,lb1
            service_description             Current Load
            check_command                   check_nrpe!check_load
    }
    
    define service {
            use                             generic-service
            host_name                       db1,app1,app2,lb1
            service_description             Current Users
            check_command                   check_nrpe!check_users
    }
    
    define service{
            use                             generic-service
            host_name                       db1,app1,app2,lb1
            service_description             Disk Utilization
            check_command                   check_nrpe!check_hda1
    }
    
    저장하고 종료합니다.
    현재, 우리는 모든 서버에 특정한 서비스를 정의할 준비가 되어 있다.우리는 데이터베이스 서버부터 시작할 것이다.

    ySQL 프로세스 정의


    NRPE 명령 만들기(클라이언트에서)


    데이터베이스 서버db1에서 새로운 NRPE 명령을 설정합니다.새 NRPE 구성 파일 "commands.cfg"열기:
    1. sudo vi /etc/nagios/nrpe.d/commands.cfg
    다음 명령 정의를 추가합니다.
    NRPE 구성(commands.cfg) - mysqld 확인
    command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld
    
    저장하고 종료합니다.이것은 NRPE가 "mysqld"라는 프로세스를 검사할 수 있도록 합니다. 실행되는 프로세스가 1개 미만이면 관건적인 상태를 보고합니다.
    NRPE 구성을 다시 로드하려면 다음과 같이 하십시오.
    1. sudo service nagios-nrpe-server reload

    서비스 정의 만들기 (서버에서)


    Nagios 서버 모니터링에서 새로운 서비스를 정의해야 합니다. 이 서비스는 NRPE를 사용하여 check_mysqld 명령을 실행합니다.
    데이터베이스 호스트를 정의하는 파일을 엽니다.예제에서는 "db1.cfg"라고 합니다.
    1. sudo vi /usr/local/nagios/etc/servers/db1.cfg
    파일 끝에 서비스 정의를 추가합니다(host_name 값이 호스트 정의 이름과 일치하는지 확인).
    db1.cfg-check\u mysql
    define service {
            use                             generic-service
            host_name                       db1
            service_description             Check MySQL Process
            check_command                   check_nrpe!check_mysqld
    }
    
    저장하고 종료합니다.이것은 NRPE를 사용하여 데이터베이스 서버에서 check\u mysqld 명령을 실행하도록 Nagios를 구성합니다.
    이 변경 사항을 적용하려면 Nagios를 다시 로드해야 합니다.그러나 우선 Apache 프로세스를 계속 모니터링합니다.

    Apache 프로세스 정의


    NRPE 명령 만들기(클라이언트에서)


    응용 프로그램 서버 app1과 app2에서 새로운 NRPE 명령을 설정합니다.새 NRPE 구성 파일 "commands.cfg"열기:
    1. sudo vi /etc/nagios/nrpe.d/commands.cfg
    다음 명령 정의를 추가합니다.
    NRPE 구성(commands.cfg) - apache2 확인
    command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
    
    저장하고 종료합니다.이것은 NRPE가 "apache2"라는 프로세스를 검사할 수 있도록 합니다. 일치하는 프로세스가 실행되지 않으면 관건적인 상태를 보고하고, 일치하는 프로세스가 세 개 미만이면 경고 상태를 보고합니다.
    NRPE 구성을 다시 로드하려면 다음과 같이 하십시오.
    1. sudo service nagios-nrpe-server reload
    다른 응용 프로그램 서버에서 이 작업을 반복해야 합니다.

    서비스 정의 만들기 (서버에서)


    Nagios 서버 모니터링에서 새로운 서비스를 정의해야 합니다. 이 서비스는 NRPE를 사용하여 check_apache2 명령을 실행합니다.
    응용 프로그램 호스트를 정의하는 파일을 엽니다.우리의 예시에서 그것들은 "app1.cfg"와 "app2.cfg"라고 불린다.
    1. sudo vi /usr/local/nagios/etc/servers/app1.cfg
    파일 끝에 서비스 정의를 추가합니다(host_name 값이 호스트 정의 이름과 일치하는지 확인).
    부록 1.cfg와 부록 2.cfg-check\u apache2
    define service {
            use                             generic-service
            host_name                       app1
            service_description             Check Apache2 Process
            check_command                   check_nrpe!check_apache2
    }
    
    저장하고 종료합니다.이것은 NRPE를 사용하여 응용 프로그램 서버에서 check\u apache2 명령을 실행하도록 Nagios를 구성합니다.각 응용 프로그램 서버에 대해 이 작업을 반복해야 합니다.
    이 변경 사항을 적용하려면 Nagios를 다시 로드해야 합니다.그러나 그 전에 HAProxy 프로세스를 계속 모니터링할 것입니다.

    HAProxy 프로세스 정의


    NRPE 명령 만들기(클라이언트에서)


    부하 평형기 서버lb1에서 새로운 NRPE 명령을 설정합니다.새 NRPE 구성 파일 "commands.cfg"열기:
    1. sudo vi /etc/nagios/nrpe.d/commands.cfg
    다음 명령 정의를 추가합니다.
    NRPE 구성(commands.cfg) -\u haproxy 확인
    command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
    
    저장하고 종료합니다.이것은 NRPE가 "haproxy"라는 프로세스를 검사할 수 있도록 합니다. 실행되는 프로세스가 1개 미만이면 관건적인 상태를 보고합니다.
    NRPE 구성을 다시 로드하려면 다음과 같이 하십시오.
    1. sudo service nagios-nrpe-server reload
    다른 응용 프로그램 서버에서 이 작업을 반복해야 합니다.

    서비스 정의 만들기 (서버에서)


    Nagios 서버 모니터링에서 새로운 서비스를 정의해야 합니다. 이 서비스는 NRPE를 사용하여 check_haproxy 명령을 실행합니다.
    데이터베이스 호스트를 정의하는 파일을 엽니다.예제에서는 "lb1.cfg"라고 합니다.
    1. sudo vi /usr/local/nagios/etc/servers/lb1.cfg
    파일 끝에 서비스 정의를 추가합니다(host_name 값이 호스트 정의 이름과 일치하는지 확인).
    lb1.cfg-검사\u haproxy
    define service {
            use                             generic-service
            host_name                       lb1
            service_description             Check HAProxy Process
            check_command                   check_nrpe!check_haproxy
    }
    
    이것은 NRPE를 사용하여 부하 평형기 서버에서 check\u haproxy 명령을 실행하도록 Nagios를 구성합니다.
    이 변경 사항을 적용하려면 Nagios를 다시 로드해야 합니다.

    Nagios 구성 다시 로드


    Nagios를 다시 로드하고 모든 변경 사항을 적용하려면 다음 명령을 입력합니다.
    sudo service nagios reload
    
    구성에 구문 오류가 없으면 설정해야 합니다.

    Nagios 서비스 확인


    계속하기 전에 Nagios가 정의한 모든 호스트와 서비스를 감시하고 있는지 확인해야 합니다.Nagios 서버의 공용 호스트 이름이나 IP 주소(예: http://monitoring.example.com/nagios/)를 통해 Nagios 서버에 액세스합니다.Nagios 서버 설치 중에 설정한 로그인 이름을 입력합니다.
    측면 메뉴에서 서비스 링크를 클릭합니다.다음 페이지로 이동해야 합니다.
    Nagios Services
    이상적인 경우 각 호스트가 표시되고 모든 서비스가 "OK"상태가 됩니다.화면 캡처에서 앱2 서버에 문제가 있는 것을 볼 수 있습니다. 왜냐하면 최근 상태 검사 기간에 전원을 껐기 때문입니다.서비스가 정상적이지 않으면 복구하십시오. 서비스가 정상적이라면 Nagios 설정에 오류가 있는지 확인하십시오.

    기타 고려 사항


    모니터링 서버를 위한 복구 계획을 작성하고 Nagios 프로필(/usr/local/nagios/etc)을 백업하기를 원할 수 있습니다.백업을 설정하면 모니터링, 추가 서비스 및 이메일 알림을 구성해야 할 수 있습니다.

    결론


    이제 모니터링 계기판을 훑어보면 서버와 서비스의 상태를 볼 수 있습니다.다운타임이 발생하면 모니터링 시스템을 통해 애플리케이션의 다운타임을 줄이는 데 도움이 되는 서버 및 서비스가 제대로 작동하지 않는지 확인할 수 있습니다.
    다음 강좌를 진행하여 생산 서버에 집중 로그를 설정하기 시작합니다: Building for Production: Web Applications — Centralized Logging.