웹사이트 검색

Rocky Linux에 LibreNMS 모니터링 솔루션을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 저장소 설정
  3. 패키지 종속성 설치
  4. 방화벽 설정\n
  5. LibreNMS 소스 코드 다운로드
  6. LibreNMS용 PHP 종속성 설치
  7. PHP-FPM 구성
  8. MariaDB 서버 구성
  9. Nginx 서버 블록 설정
  10. SELinux 구성
  11. LibreNMS 구성 완료
  12. LibreNMS 웹 설치 액세스
  13. 결론

LibreNMS는 SNMP, ARP, OSPF 및 BGP를 포함한 여러 프로토콜로 자동 검색을 지원하는 모니터링 도구입니다. 운영 체제를 모니터링하려면 Linux, Windows 및 BSD를 비롯한 대부분의 OS에서 사용할 수 있는 SNMP 프로토콜을 사용할 수 있습니다.

SNMP 프로토콜에는 커뮤니티 암호로만 보호되는 v1 및 v2와 인증 및 암호화를 위한 암호를 지원하는 프로토콜 v3의 세 가지 버전이 있습니다. 프로덕션 환경의 경우 v2 및 v1보다 안전한 SNMP 프로토콜 v3을 사용하는 것이 좋습니다.

이 가이드에서는 Rocky Linux 서버에 LibreNMS 모니터링 도구를 설치하는 방법을 배웁니다. 이 가이드에는 LEMP 스택(Nginx, MariaDB 및 PHP-FPM) 설치 및 SNMP 서비스의 기본 구성이 포함되어 있습니다.

끝까지 프로덕션 준비가 된 모니터링 솔루션 LibreNMS를 갖게 되며 LibreNMS를 모니터링하기 위해 새 호스트나 서버 또는 장치를 추가하기만 하면 됩니다.

전제 조건

이 가이드를 완료하려면 다음 요구 사항이 필요합니다.

  • Rocky Linux 서버 - 이 예에서는 Rocky Linux 8을 사용합니다.\n
  • sudo 루트/관리자 권한이 있는 루트가 아닌 사용자.\n
  • 로컬 배포를 위한 로컬 도메인 이름입니다.\n

리포지토리 설정

패키지 설치를 시작하기 전에 이제 Rocky Linux 시스템에 리포지토리를 설정합니다. EPEL 리포지토리(Enterprise Linux용 추가 패키지) 및 PHP Remi 리포지토리를 추가해야 합니다.

다음 dnf 명령을 실행하여 시스템에 EPEL 리포지토리를 추가합니다.

sudo dnf install epel-release

확인 메시지가 표시되면 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

다음으로 다음 dnf 명령을 실행하여 PHP Remi 리포지토리를 추가합니다. 이 리포지토리는 LibreNMS 설치에 필요한 최신 PHP 8.1을 포함하는 여러 버전의 PHP를 제공합니다.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

이제 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

EPEL과 Remi 저장소 추가 후 아래 dnf 명령어를 사용하여 확인합니다.

sudo dnf repolist

Rocky Linux 시스템에서 EPEL 및 Remi 저장소가 추가되고 사용 가능한 것을 볼 수 있습니다.

패키지 종속성 설치

EPEL 및 Remi 리포지토리를 추가한 후 이제 LibreNMS에 대한 패키지 종속성 설치를 시작합니다. 여기에는 LEMP 스택, SNMP 패키지 및 일부 기본 Python 종속성이 포함됩니다.

설치를 시작하기 전에 다음 명령을 실행하여 PHP 리포지토리 모듈 remi-8.1을 활성화합니다. 최신 버전의 LibreNMS에는 최소 PHP 8이 필요합니다.

sudo dnf reset php
sudo dnf module enable php:remi-8.1

y를 입력하여 PHP Remi 8.1 리포지토리를 확인하고 활성화합니다.

다음으로 다음 dnf 명령을 실행하여 LibreNMS에 대한 패키지 종속성을 설치합니다. 설치를 확인하라는 메시지가 표시되면 y를 입력하고 Enter 키를 눌러 계속 진행하면 설치가 시작됩니다.

sudo dnf install bash-completion cronie fping git ImageMagick mariadb-server mtr net-snmp net-snmp-utils nginx nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-devel python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip

종속성이 설치된 후 다음 명령을 실행하여 Nginx, MariaDB, PHP-FPM 및 snmpd와 같은 일부 서비스를 시작하고 활성화합니다.

sudo systemctl enable nginx php-fpm mariadb snmpd
sudo systemctl start nginx php-fpm mariadb snmpd

이 시점에서 일부 기본 서비스 Nginx, MariaDB, PHP-FPM 및 snmpd는 시스템 부팅 시 자동으로 시작됩니다. 그리고 이러한 모든 서비스가 실행 중입니다.

방화벽 설정

이 예에서는 방화벽이 활성화된 Rocky Linux를 사용했습니다. 이제 방화벽에 HTTP 및 HTTPS 프로토콜을 모두 추가합니다.

다음 firewall-cmd 명령을 실행하여 HTTP 및 HTTPS 서비스를 firewalld에 추가합니다. 새 규칙이 추가되었음을 의미하는 성공 메시지가 출력되어야 합니다.

sudo firewall-cmd --permanent --zone public --add-service http
sudo firewall-cmd --permanent --zone public --add-service https

그런 다음 방화벽을 다시 로드하여 새 변경 사항을 적용합니다. 그런 다음 다음 명령을 사용하여 firewalld 상태를 확인합니다.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

HTTP 및 HTTPS 프로토콜의 출력이 firewalld에 추가됩니다.

LibreNMS 소스 코드 다운로드

이 단계에서는 GitHub에서 LibreNMS 소스 코드를 다운로드합니다. 그러나 그 전에 LibreNMS 응용 프로그램을 실행하는 데 사용할 새 전용 사용자 librenms도 생성합니다.

다음 명령을 실행하여 새 시스템 사용자 librenms를 생성합니다. 이 사용자는 LibreNMS 응용 프로그램을 실행하는 데 사용됩니다.

sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

이제 작업 디렉토리를 /opt로 이동하고 아래 git 명령을 통해 LibreNMS 소스 코드를 다운로드합니다. 이제 LibreNMS 설치 디렉토리로 사용될 새 디렉토리 /opt/librenms를 가져와야 합니다.

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

LibreNMS 설치 디렉토리 /opt/librenms의 소유권과 권한을 변경하십시오. 설치 소유권은 librenms 사용자여야 하며 권한 771을 통해 사용자는 디렉토리에서 쓰기 및 실행을 읽을 수 있습니다.

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms

마지막으로 다음 명령을 실행하여 일부 LibreNMS 디렉토리에 대한 액세스 제어 목록을 설정합니다. 이렇게 하면 librenms 그룹이 일부 특정 LibreNMS 디렉토리에서 읽고 쓰고 실행할 수 있습니다.

sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

LibreNMS용 PHP 종속성 설치

LibreNMS 소스 코드를 다운로드하고 올바른 권한을 구성한 후 이제 LibreNMS용 PHP 종속성을 설치하게 됩니다.

다음 명령을 사용하여 librenms 사용자로 로그인합니다.

su - librenms

이제 아래와 같이 설치 프로그램 스크립트를 통해 PHP 종속성을 설치합니다.

./scripts/composer_wrapper.php install --no-dev

이제 LibreNMS에 필요한 PHP 종속성 설치가 표시됩니다. 또한 LibreNMS용 Python 패키지 설치를 볼 수 있습니다.

PHP 종속성 설치가 완료되면 이제 Ctrl+d를 누르거나 exit 명령을 입력하여 librenms 사용자를 종료할 수 있습니다.

PHP-FPM 구성

이 단계에서는 LibreNMS용 PHP-FPM 설치를 구성합니다. 기본 구성 /etc/php.ini을 수정하고 LibreNMS용 특정 PHP-FPM 풀을 설정합니다.

다음 명령을 실행하여 Rocky Linux 시스템에 올바른 시간대를 설정하십시오.

sudo timedatectl set-timezone Europe/Stockholm

이제 다음 nano 편집기를 사용하여 PHP 구성 /etc/php.ini을 편집하십시오.

sudo nano /etc/php.ini

date.timezone 옵션의 주석을 제거하고 현재 서버 시간대로 값을 변경하십시오.

date.timezone = Europe/Stockholm

파일을 저장하고 완료되면 편집기를 닫습니다.

다음으로 기본 PHP-FPM 풀 구성 www.conflibrenms.conf에 복사합니다. 이 예에서는 LibreNMS 모니터링 도구에 대한 특정 PHP-FPM 풀을 설정합니다.

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf

이제 다음 nano 편집기를 사용하여 PHP-FPM 풀 구성 /etc/php-fpm.d/librenms.conf을 편집하십시오.

sudo nano /etc/php-fpm.d/librenms.conf

기본 풀 이름을 [www]에서 [librenms]로 변경합니다.

[librenms]

기본 사용자 및 그룹을 librenms로 변경합니다. 그러면 사용자 및 그룹 librenms로 PHP-FPM 프로세스가 실행됩니다.

user = librenms
group = librenms

마지막으로 수신 옵션을 /run/php-fpm-librenms.sock으로 변경합니다. 이것은 PHP-FPM librenms 풀에 대한 양말 파일을 지정합니다.

listen = /run/php-fpm-librenms.sock

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 다음 systemctl 명령을 실행하여 PHP-FPM 서비스를 다시 시작하고 새로운 변경 사항을 적용하십시오.

sudo systemctl restart php-fpm

MariaDB 서버 구성

PHP-FPM을 구성한 후 MariaDB 데이터베이스 서버를 설정하고 LibreNMS용 새 데이터베이스 및 사용자를 생성합니다.

LibreNMS에는 InnoDB가 활성화된 MariaDB 데이터베이스 서버가 필요했습니다. 이제 활성화해야 합니다. 그런 다음 LibreNMS에 대한 새 데이터베이스와 사용자를 생성합니다.

다음 나노 편집기를 사용하여 MariaDB 서버 구성 /etc/my.cnf.d/mariadb-server.cnf을 편집합니다.

sudo nano /etc/my.cnf.d/mariadb-server.cnf

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

[mysqld]
....
innodb_file_per_table=1
lower_case_table_names=0

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 아래의 systemctl 명령을 실행하여 MariaDB 서비스를 다시 시작하고 새로운 변경 사항을 적용하십시오. MariaDB 서버는 이제 InnoDB 데이터베이스 엔진이 활성화된 상태로 실행 중입니다.

sudo systemctl restart mariadb

다음으로 아래의 mysql 명령을 통해 MariaDB 셸에 로그인합니다. 암호를 묻는 메시지가 표시되면 Enter 키를 누르거나 MariaDB 루트 암호를 입력하면 됩니다.

sudo mysql -u root -p

다음 쿼리를 실행하여 LibreNMS용 새 데이터베이스 및 사용자를 생성합니다. 이 예에서는 새 데이터베이스와 librenms 사용자를 만들고 데이터베이스 암호를 암호로 변경해야 합니다.

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;

그런 다음 다음 쿼리를 실행하여 [email 데이터베이스 사용자의 권한을 확인합니다.

SHOW GRANTS FOR ;

librenms@localhost 사용자에게 librenms 데이터베이스에 대한 권한이 있음을 볼 수 있습니다.

이제 exit을 입력하여 MariaDB 셸에서 로그아웃합니다.

Nginx 서버 블록 설정

MariaDB 서버를 구성하고 데이터베이스와 사용자를 생성한 후에는 이제 LibreNMS용 새 Nginx 서버 블록 구성을 생성하게 됩니다.

시작하기 전에 LibreNMS에 사용할 로컬 도메인을 결정했는지 확인하십시오. 이 예에서 LibreNMS는 도메인 librenms.hwdomain.io와 함께 실행되어야 합니다.

다음 나노 편집기를 사용하여 새 Nginx 서버 블록 구성 /etc/nginx/conf.d/librenms.conf을 만듭니다.

sudo nano /etc/nginx/conf.d/librenms.conf

다음 구성을 파일에 추가하고 도메인 이름을 도메인으로 변경해야 합니다.

server {
    listen      80;
    server_name librenms.hwdomain.io;
    root        /opt/librenms/html;
    index       index.php;

    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 ~ [^/]\.php(/|$) {
        fastcgi_pass unix:/run/php-fpm-librenms.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

파일을 저장하고 완료되면 편집기를 종료하십시오.

그런 다음 다음 명령을 실행하여 Nginx 구성을 확인하고 구성이 올바른지 확인하십시오.

sudo nginx -t

Nginx 구성이 올바른 경우 test successful - Syntax OK와 같은 출력 메시지가 표시됩니다.

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

sudo systemctl restart nginx

이 시점에서 LibreNMS에 대한 LEMP 스택(Nginx, MariaDB 데이터베이스 및 PHP-FPM) 구성을 완료했습니다. 또한 이제 Rocky Linux 시스템에서 LibreNMS가 실행 중이어야 합니다.

SELinux 구성

이 가이드에서는 시행 모드에서 SELinux를 활성화하여 LibreNMS를 실행합니다. 이제 LibreNMS에 대한 SELinux 규칙을 설정하게 됩니다.

먼저 아래의 dnf 명령을 실행하여 policycoreutils-python-utils 패키지를 Rocky Linux 시스템에 설치합니다. 이 패키지는 SELinux 관리를 위한 여러 명령줄을 제공합니다.

sudo dnf install policycoreutils-python-utils

메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다.

그런 다음 다음 명령을 실행하여 LibreNMS 소스 코드에 대한 레이블을 설정합니다.

semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?'
semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?"
semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py'
restorecon -RFvv /opt/librenms
chcon -t httpd_sys_rw_content_t /opt/librenms/.env

Nginx 웹 서버의 일부 서비스에 대한 액세스를 허용하려면 다음 명령을 실행하십시오.

setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1

이제 다음 nano 편집기를 사용하여 새 파일 http_fping.tt을 만듭니다.

nano http_fping.tt

파일에 다음 구성을 추가합니다.

module http_fping 1.0;

require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 다음 명령을 실행하여 http_fping.tt를 SELinux용 형식으로 변환합니다. 그런 다음 새 컴파일된 규칙을 SELinux에 추가하십시오.

checkmodule -M -m -o http_fping.mod http_fping.tt
semodule_package -o http_fping.pp -m http_fping.mod
semodule -i http_fping.pp

이제 LibreNMS에 대한 SELinux 구성을 완료했습니다. 다음으로 LibreNMS에 대한 몇 가지 추가 구성을 설정합니다.

LibreNMS 구성 완료

LibreNMS 구성을 완료하려면 이제 lnms 명령줄을 설정하고 cron 및 logrotate에 대한 구성을 포함하여 일부 기본 구성 LibreNMS를 복사합니다. 또한 LibreNMS용 SNMP 서비스를 설정하게 됩니다.

다음 명령을 실행하여 lnms 명령줄을 활성화하고 lnms 명령의 bash 완료를 복사합니다.

ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

LibreNMS cron의 예제 구성을 /etc/cron.d/librenms에 복사합니다.

sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

LibreNMS의 기본 logrotate 구성을 /etc/logrotate.d/librenms에 복사합니다.

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

이제 기본 snmpd 서비스 구성을 /etc/snmp/snmpd.conf에 복사합니다. 그런 다음 nano 편집기를 사용하여 새 파일 /etc/snmp/snmpd.conf를 편집합니다.

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf

snmpd 서비스 RANDOMSTRINGGOESHERE의 기본 커뮤니티 비밀번호를 귀하의 비밀번호로 변경하십시오.

# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly  default         RANDOMSTRINGGOESHERE

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 모든 대상 호스트의 운영 체제를 자동으로 감지하기 위해 LibreNMS에서 사용할 바이너리 파일을 다운로드합니다. 그런 다음 기본 권한을 변경하여 실행 가능하게 만드십시오.

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

마지막으로 snmpd 서비스를 다시 시작하여 새 변경 사항과 새 구성을 적용합니다.

systemctl restart snmpd

이제 모든 기본 구성이 완료되었습니다. 다음으로 웹 브라우저를 통해 LibreNMS 설치를 시작합니다.

LibreNMS 웹 설치에 액세스

로컬 컴퓨터에서 /etc/hosts 파일을 편집하고 LibreNMS 설치의 로컬 도메인 이름을 정의합니다. 또한 서버 IP 주소로 IP 주소를 변경해야 합니다.

192.168.5.100   librenms.hwdomain.io

이제 웹 브라우저를 열고 LibreNMS 설치의 도메인 이름(예: http://librenms.hwdomain.io/)을 방문하십시오.

처음에 LibreNMS 설치 프로그램은 설치 환경을 확인합니다. 모든 요구 사항이 녹색으로 표시되어 시스템이 LibreNMS 설치 준비가 되었음을 의미합니다.

계속하려면 데이터베이스 아이콘을 클릭하십시오.

이제 LibreNMS에 대한 세부 정보 데이터베이스와 사용자를 입력하고 자격 증명 확인을 클릭합니다. 데이터베이스 자격 증명이 올바른 경우 섹션이 녹색으로 표시됩니다.

이제 Build Database를 클릭하여 LibreNMS에 대한 데이터베이스 마이그레이션을 시작하십시오.

데이터베이스 마이그레이션이 완료되면 녹색으로 표시된 데이터베이스 구축 섹션이 표시됩니다.

LibreNMS에 대한 관리 사용자 구성을 시작하려면 열쇠 아이콘을 클릭하십시오.

이제 LibreNMS 설치를 위한 새 관리 사용자, 비밀번호 및 이메일 주소를 입력하고 사용자 추가를 클릭하십시오.

이제 설치가 완료되고 다음 페이지가 표시됩니다. 설치가 완료되고 구성이 .env 파일에 기록된 것을 볼 수 있습니다.

이제 설치 확인 링크를 클릭하여 LibreNMS 설치를 확인하십시오.

이제 LibreNMS 로그인 페이지로 리디렉션됩니다. 관리자 사용자와 암호를 입력한 다음 로그인을 클릭합니다.

이제 모든 구성이 OK로 표시되어 구성에 오류가 없음을 의미합니다.

LibreNMS에서 권장하는 지침에 따라 모든 오류 또는 경고를 수정할 수도 있습니다.

이제 새로운 대상 호스트, 가상 머신 또는 네트워크 장치를 추가하여 LibreNMS 모니터링 솔루션을 모니터링할 수 있습니다.

결론

축하합니다! Rocky Linux 서버에 LibreNMS 모니터링 솔루션을 설치했습니다. Rocky Linux에서 LEMP 스택(Nginx, MariaDB 및 PHP-FPM)의 기본 구성도 배웠습니다.

여기에서 모니터링할 호스트 또는 대상 시스템을 계속 추가하고, LibreNMS 에이전트를 설정하고, 경고 또는 알림을 설정하고, Graylog와의 타사 통합을 설정하고, 기타 작업을 수행할 수 있습니다.