웹사이트 검색

Ubuntu 16.04 LTS에서 Nginx로 LibreNMS 모니터링 도구를 설정하는 방법


LibreNMS는 PHP/MYSQL/SNMP 기반의 오픈 소스 모니터링 도구입니다. FreeBSD, Cisco, Linux, HP 등을 포함한 광범위한 네트워크 하드웨어 및 운영 체제를 지원하는 기능을 갖춘 네트워크 모니터링 시스템입니다.

이 튜토리얼에서는 Nginx를 웹 서버로, MariaDB를 데이터베이스로, Ubuntu 16.04 서버를 메인 서버로 사용하여 오픈 소스 모니터링 도구 LibreNMS를 설치하고 구성하는 방법을 보여드리겠습니다. Ubuntu 16.04 Xenial Xerus 서버에 LibreNMS를 설치하고 구성하는 방법을 단계별로 안내해 드립니다.

우리가 할 일

  1. 패키지 설치
  2. Nginx 웹서버 설치
  3. PHP-FPM 설치 및 구성
  4. MariaDB 설치 및 구성
  5. LibreNMS 다운로드 및 구성
  6. LibreNMS 웹 설치 프로그램
  7. 최종 구성

전제 조건

  • 우분투 16.04 서버
  • 루트 권한

1단계 - 패키지 설치

LibreNMS 모니터링 도구를 설치하기 위해 수행해야 하는 첫 번째 단계는 서버에 필요한 일부 패키지를 설치하는 것입니다. 서버에 연결하고 리포지토리를 업데이트합니다.

ssh 
sudo apt update

다음 명령을 사용하여 Ubuntu 리포지토리에서 LibreNMS에 필요한 모든 패키지를 설치합니다.

apt install fping imagemagick whois mtr-tiny nmap python-mysqldb snmpd  rrdtool git snmp graphviz

설치가 완료되면 다음 단계로 이동합니다.

2단계 - Nginx 웹서버 설치

이 튜토리얼에서는 Nginx 웹 서버에서 LibreNMS를 실행합니다. Nginx는 Ubuntu 저장소에서 사용할 수 있는 강력한 웹 서버입니다.

다음과 같은 방법으로 리포지토리에서 apt 명령을 사용하여 nginx를 설치합니다.

apt install nginx

완료되면 서비스를 시작하고 시스템 부팅 시마다 자동으로 실행되도록 설정합니다.

systemctl start nginx
systemctl enable nginx

Nginx 웹 서버는 기본 포트 80에서 실행됩니다. netstat 명령을 사용하여 포트를 확인하고 curl 명령을 사용하여 Nginx를 확인하여 아래와 같이 HTTP 상태 코드를 얻을 수 있습니다.

netstat -plntu | grep 80
curl -I localhost

Nginx 설치가 완료되었습니다.

3단계 - PHP-FPM 설치 및 구성

LibreNMS는 PHP 기반 웹 애플리케이션 모니터링 도구입니다. 새로운 PHP 버전 7.0을 지원하며 이 가이드에서 사용할 것입니다.

아래의 apt 명령을 사용하여 LibreNMS 설치에 필요한 PHP, PHP-FPM 및 모든 확장/모듈을 설치합니다.

apt install php7.0-cli php7.0-mysql php7.0-gd php7.0-snmp php-pear php7.0-curl php7.0-fpm php7.0-mcrypt php7.0-json php-net-ipv4 php-net-ipv6

다음으로 php.ini 파일에 몇 가지 구성을 추가해야 합니다. php.ini 파일에서 기본 시간대를 정의하고 시간대가 시스템에서 사용하는 현재 시간대와 일치하는지 확인해야 합니다.

다음 명령을 사용하여 시스템에서 현재 사용하는 시간대를 확인하십시오.

timedatectl

다음과 유사한 결과가 나타납니다.

서버가 유럽/파리 시간대를 사용하고 있음을 알 수 있습니다.

이제 PHP 구성 디렉토리로 이동하여 cli 및 fpm 구성에 대한 php.ini 파일을 수정합니다.

cd /etc/php/7.0/
vim fpm/php.ini
vim cli/php.ini

date.time 줄의 주석을 제거하고 시스템 시간대 Europe/Paris로 값을 변경합니다.

date.time = Europe/Paris

아래 cgi 구성의 주석을 제거하고 값을 0으로 변경합니다.

cgi.fix_pathinfo = 0

저장 및 종료.

모든 구성이 완료되었습니다. 이제 서비스를 시작하고 다음 systemctl 명령을 사용하여 시스템 부팅 시마다 실행되도록 활성화합니다.

systemctl start php7.0-fpm
systemctl enable php7.0-fpm

PHP-FPM은 이제 우분투 서버에서 실행 중입니다. 양말 파일에서 실행 중입니다. netstat 명령으로 확인하십시오.

netstat -pl | grep php

4단계 - MariaDB 설치 및 구성

이 단계에서는 LibreNMS 데이터베이스용 mariadb-server를 설치합니다. LibreNMS 설치를 위해 새 데이터베이스와 새 사용자를 설치, 구성 및 생성합니다.

아래의 apt 명령을 사용하여 우분투 리포지토리에서 mariadb-server를 설치합니다.

apt install mariadb-server mariadb-client mariadb

완료되면 서비스를 시작하고 시스템 부팅 시 자동으로 실행되도록 설정합니다. 다음 systemctl 명령을 사용하여 수행할 수 있습니다.

systemctl start mysql
systemctl enable mysql

이제 데이터베이스 서버 mariadb가 실행 중입니다. 다음으로 mariadb의 루트 비밀번호를 구성해야 합니다. 아래의 mysql_secure_installation 명령을 사용하여 루트 비밀번호를 구성할 수 있습니다.

mysql_secure_installation

새 루트 암호에 대해 묻는 메시지가 표시됩니다. 암호를 입력하고 Enter 키를 눌러 계속하십시오.

Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

mariadb의 루트 비밀번호가 구성되었습니다.

다음으로 LibreNMS용 새 데이터베이스와 사용자를 생성해야 합니다. 암호 hakase-labs123을 사용하여 librenms라는 새 사용자인 librenms라는 새 데이터베이스를 생성합니다.

다음 명령을 사용하여 mariadb 셸에 로그인합니다.

mysql -u root -p
Type the ROOT Password:

아래 mariadb 쿼리를 실행하여 새 데이터베이스와 사용자를 생성하고 새 사용자에게 데이터베이스에 대한 모든 권한을 부여합니다.

CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;

LibreNMS용 새 데이터베이스 및 사용자가 생성되었습니다.

LibreNMS 설치를 위해 구성 파일에 몇 가지 구성을 추가해야 합니다. /etc/mysql/ 디렉토리로 이동하여 mariadb 구성 파일을 편집합니다.

cd /etc/mysql/
vim mariadb.conf.d/50-server.cnf

[mysqld] 섹션 아래에 구성을 붙여넣습니다.

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

저장 및 종료.

이제 서비스를 다시 시작하여 새 구성을 적용하십시오.

systemctl restart mysql

mariadb 데이터베이스 구성이 완료되었습니다.

5단계 - LibreNMS 다운로드 및 구성

이 단계에서는 LibreNMS 설치를 위해 시스템을 구성합니다.

- 새 사용자 추가 및 LibreNMS 다운로드

librenms라는 새 시스템 사용자를 만들고 /opt/librenms를 사용자의 기본 홈 디렉토리로 정의하고 새 librenms 사용자를 www-data 그룹에 할당합니다.

모든 작업을 수행하려면 다음 명령을 실행하십시오.

useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data

이제 /opt/ 디렉토리로 이동하여 git 명령을 사용하여 LibreNMS 소스 코드를 다운로드합니다.

cd /opt/
git clone https://github.com/librenms/librenms.git librenms

다음으로 libreNMS 로그 파일 및 rrd 파일을 위한 새 디렉토리를 만듭니다.

mkdir -p /opt/librenms/{logs,rrd}

rrd 디렉토리에 대한 소유권 권한을 775로 변경하고 librenms 디렉토리의 소유자를 librenms 사용자 및 그룹으로 변경합니다.

chmod -R 775 /opt/librenms/rrd/
chown -R librenms:librenms /opt/librenms/

새로운 librenms가 생성되었고 LibreNMS 소스 코드가 다운로드되었습니다.

- LibreNMS 가상 호스트 구성

nginx 구성 디렉토리로 이동하고 vim으로 새 가상 호스트 파일 librenms를 만듭니다.

cd /etc/nginx/
vim sites-available/librenms

다음 LibreNMS 가상 호스트 구성을 거기에 붙여넣습니다.

server {

    # Add your own domain name
    listen      80;
    server_name librenms.irsyadf.me;

    # LibreNMS Webroot directory
    root        /opt/librenms/html;
    index       index.php;

    # LibreNMS logs
    access_log  /opt/librenms/logs/access_log;
    error_log   /opt/librenms/logs/error_log;
   
    # Enabling Gzip compression on Nginx
    charset utf-8;
    gzip on;
    gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
   
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
   
    location /api/v0 {
        try_files $uri $uri/ /api_v0.php?$query_string;
    }

    # PHP-FPM handle all .php files requests
    location ~ \.php {
        include fastcgi.conf;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
 
    location ~ /\.ht {
        deny all;
    }
}

저장 및 종료. 이제 가상 호스트를 활성화하십시오.

ln -s /etc/nginx/sites-available/librenms /etc/nginx/sites-enabled/

nginx 구성을 테스트하고 오류가 없는지 확인하십시오. 그런 다음 서비스를 다시 시작하십시오.

nginx -t
systemctl restart nginx

- UFW 방화벽 구성

방화벽에 새 포트를 추가합니다. 새 ssh, http, https 및 snmpd 161 udp 유형에서 사용하는 포트를 ufw 방화벽에 추가합니다.

다음 ufw 명령을 실행합니다.

ufw allow ssh
ufw allow http
ufw allow https
ufw allow 161/udp

아래와 같이 ufw enable 명령으로 ufw 방화벽을 시작합니다.

ufw enable

y를 입력하고 Enter 키를 눌러 확인합니다. 시스템 부팅 시마다 실행되도록 시작하고 활성화합니다.

방화벽 상태를 보려면 ufw status 명령을 실행하십시오.

ufw status

방화벽 상태(활성 또는 비활성)와 방화벽에 추가된 포트 및 서비스 목록이 표시됩니다.

6단계 - LibreNMS 웹 설치 프로그램

위의 모든 단계가 완료되면 웹 브라우저를 통해 LibreNMS를 설치해야 합니다. 웹 브라우저를 열고 주소 표시줄에 LibreNMS 도메인 이름 librenms.hakase-labs.co를 입력한 다음 Enter 키를 누릅니다.

- PHP 모듈 확인

PHP 모듈 지원 검사 결과를 보여주는 install.php 페이지로 리디렉션됩니다. 아래와 같이 모든 상태가 녹색인지 확인하십시오.

계속하려면 다음 단계를 클릭하세요.

- 데이터베이스 구성

모든 데이터베이스 정보를 자신의 DB로 채우십시오.

  • DB 사용자: librenms
  • DB 패스: hakase-labs123
  • DB 이름: librenms

그리고 다음 단계를 클릭합니다.

- MySQL 데이터베이스 가져오기

설치 프로그램 스크립트가 데이터베이스 샘플을 Google 데이터베이스로 가져올 때까지 기다립니다. 이 프로세스 중에 브라우저 탭을 닫지 마세요.

모든 db를 가져온 후 사용자 추가로 이동을 클릭합니다.

- 관리 사용자 추가

여기에 관리 사용자, 이메일 및 비밀번호를 입력하십시오.

사용자 추가를 클릭합니다.

- LibreNMS 구성 생성

구성 생성 버튼을 클릭합니다.

그러면 아래와 비슷한 구성 파일이 생성됩니다.

php 구성 스크립트를 복사하고 ssh 세션으로 돌아갑니다. /opt/librenms 디렉토리로 이동하고 vim을 사용하여 수동으로 config.php 파일을 생성합니다.

cd /etc/librenms/
vim config.php

거기에 구성을 붙여넣고 파일 소유권을 librenms 사용자 및 그룹으로 변경합니다.

chown librenms:librenms config.php

웹 브라우저로 돌아가 설치 완료 버튼을 클릭합니다.

이제 librenms 웹 설치 프로그램의 마지막 페이지로 이동합니다. 아래를 참조하세요.

7단계 - 최종 구성

웹 브라우저를 통한 설치가 완료되면 몇 가지 다른 단계를 수행해야 합니다.

- SNMP 구성

기본 구성 파일을 백업하고 샘플 구성을 /etc/snmp/ 디렉토리에 복사합니다.

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.aseli
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

vim으로 새 구성을 편집합니다.

vim /etc/snmp/snmpd.conf

아래와 같이 RANDOMSTRINGGOESHERE 줄을 고유한 커뮤니티 이름 hakaselabs로 바꿉니다.

com2sec readonly  default         hakaselabs

저장 및 종료.

다음으로 배포판 감지 스크립트를 다운로드해야 합니다. curl을 사용하여 다운로드한 다음 스크립트를 실행 가능하게 만든 다음 마지막으로 snmp 서비스를 다시 시작합니다.

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl restart snmpd

- Crontab 및 Logrotate 구성

librenms 디렉토리로 이동하여 Crontab 및 Logrotate에 대한 샘플 구성을 복사합니다.

cd /opt/librenms/

구성을 복사합니다.

cp librenms.nonroot.cron /etc/cron.d/librenms
cp misc/librenms.logrotate /etc/logrotate.d/librenms

이제 cron 서비스를 다시 시작하고 logrotate 구성을 다시 로드하십시오.

systemctl restart cron
logrotate -f /etc/logrotate.conf

- 구성 확인

cron 스크립트가 시스템에서 실행될 때까지 잠시 기다립니다. 완료되면 validate.php 스크립트로 유효성을 검사합니다.

librenms 디렉토리로 이동하여 유효성 검사 스크립트를 실행합니다.

cd /opt/librenms/
./validate.php

설치가 제대로 되었다면 아래와 같은 결과를 얻을 수 있습니다.

Ubuntu 16.04에서 Nginx Webserver로 LibreNMS 설치가 완료되었습니다.

참조

  • http://docs.librenms.org