우분투 통합 · 6 min read · Oct 18, 2025
우분투 랜드스케이프와 옵스뷰 엔터프라이즈 통합
우분투 랜드스케이프와 옵스뷰 엔터프라이즈 통합
최근 우리는 마크 셔틀워스가 올해 오픈스택 기조 연설에서 설명한 우분투 도구 세트를 살펴보았습니다. 특히 관심을 끌었던 것은 우분투 랜드스케이프입니다. 이는 단일 콘솔에서 수천 대의 우분투 서버를 패치하고 관리할 수 있는 시스템 및 서버 관리 도구입니다.

랜드스케이프의 장점은 1000대의 우분투 서버가 있을 경우, 단일 뷰에서 소프트웨어를 업데이트하고 패치할 수 있다는 점입니다. 각 서버를 클릭하여 하드웨어 및 소프트웨어 인벤토리를 확인하고 CPU를 사용하는 프로세스에 대한 보고서를 볼 수 있습니다. 모두 단일 도구에서 가능합니다.
옵스뷰 관점에서 흥미로운 점은 각 장치에 대해 “모니터링” 탭이 포함되어 있다는 것입니다. 이 탭은 리소스 사용량, 네트워크 처리량 등 모니터링의 기본 사항만 보여줍니다:

이는 아마도 우분투 서버에서 실행 중인 랜드스케이프 클라이언트를 통해 수집되거나 폴링되고 있는 것으로 보이며, 일반적인 “로드” 등의 출력을 파싱하고 sed를 사용하여 처리하고 있습니다. 그러나 이 세부 사항은 상당히 기본적이므로 많은 사람들이 옵스뷰와 비교하여 이 도구를 단독으로 사용하지는 않을 것입니다. 이는 ‘X’의 상태를 확인할 수 있는 유용한 추가 도구에 가깝습니다.
하지만 이로 인해 우리는 생각하게 되었습니다. 옵스뷰를 주요 모니터링 도구로 사용하면서 고객이 대시보드를 통해 시스템을 보고 이메일 보고서를 받고 SMS 알림을 받을 수 있도록 하면서 이 옵스뷰 데이터를 랜드스케이프 대시보드에 통합할 수 있다면 어떨까요? 즉, 옵스뷰에서 “Server100”을 클릭하고 랜드스케이프에서 “Server100”을 클릭하여 동일한 그래프를 볼 수 있는 것입니다. 이를 통해 어떤 도구를 사용하든 서버의 상태를 확인할 수 있습니다.
랜드스케이프에서 이를 수행하는 것은 실제로 상당히 간단합니다(시스템의 뉘앙스에 익숙해지면). 먼저, 기본 콘솔에서 “사용자 정의 그래프”로 이동해야 합니다:
다음으로 “사용자 정의 그래프 추가“를 클릭하면 아래와 같은 페이지가 나타납니다(필드를 미리 채워 시간을 절약했습니다):

이미지에서 읽기 어려울 수 있으므로 “코드”는 아래에 붙여넣었습니다:
#!/bin/bash
cd /usr/local/nagios/bin
./opsview_rest --username=admin --password=initial --pretty GET '/rest/status/performancemetric?order=metricname&order=hostname&metricname=Max_used_connections&hostname=opsview' | grep value | sed -e 's/value => //g' | sed -e 's/,//g' | sed 's/ //g' 이것은 기본적으로 opsview_rest 명령을 사용하여 옵스뷰 모니터링 시스템에 연결하고 호스트 “opsview”에서 “max_used_connections” 메트릭을 가져온 다음, 그래프화 가능한 값인 “28”을 제공하기 위해 일부 sedding/grepping을 수행합니다. 즉, “value=>28;21;s…”와 같은 형식은 우분투가 좋아하지 않습니다.
이렇게 하면 옵스뷰 모니터링 시스템을 랜드스케이프 호스트로 추가하고 옵스뷰 시스템에 의해 모니터링되는 다른 호스트의 상태와 그에 대한 서비스 체크를 통해 모니터링할 수 있습니다. 이 정보를 얻으려면 다음 명령을 실행하면 됩니다:
opsview_rest --username=admin --password=initial --pretty GET /rest/status/performancemetric/?hostname=opsview여기서 “?hostname”은 성능 데이터를 보려는 호스트입니다. 이전 스크린샷에 따라 구성하고 저장한 후, “사용자로 실행:” (root 또는 다른 사용자) 및 “Y 축 제목” (초, db 연결, 온도 등)을 설정해야 합니다. 완료되면 “저장”을 클릭하면 모든 호스트에 적용됩니다(체크 박스를 선택한 경우).
그런 다음 하루 정도 지나면 호스트로 가서 “모니터링” 탭을 보고 사용자 정의 그래프를 확인할 수 있습니다:

…그리고 이렇게 해서 옵스뷰를 우분투 랜드스케이프와 통합할 수 있습니다.
도전 과제
다음으로 직면한 도전 과제는 랜드스케이프에서 관리하는 장치가 다음 명령을 실행한다는 것입니다:
./opsview_rest --username=admin --password=initial --pretty GET '/rest/status/performancemetric?order=metricname&order=hostname&metricname=Max_used_connections&hostname=opsview'..이는 bash를 통해 “opsview_rest”를 사용하고 로컬에서 실행됩니다. 이상적인 것은 이 명령을 어디서나(즉, 랜드스케이프에서 관리하는 서버) 실행할 수 있지만 여전히 옵스뷰 시스템에 대해 실행하는 것입니다. 후자는 쉽습니다. 아래와 같이 접두사를 추가할 수 있습니다:
./opsview_rest *--url-prefix=monitoringtool.company.com* --username=admin --password=initial --pretty GET '/rest/status/performancemetric?order=metricname&order=hostname&metricname=Max_used_connections&hostname=opsview'…하지만 여전히 “opsview_rest” 명령에 의존하고 있으며, 이는 명백히 사용자 정의 그래프가 우분투 랜드스케이프에서 로컬로 스크립트를 실행하기 때문에 로컬 박스에서 사용 가능해야 합니다. 또한 이는 사용자 이름과 비밀번호를 호스트 서버에 노출시킵니다. 즉, 웹 서버가 이제 옵스뷰에 대한 로그인 세부 정보를 가지고 있습니다. 그러나 우리는 그 역할에 대해 특정 항목에 대한 읽기 전용 접근만 허용하여 후자의 문제를 제한할 수 있습니다.

우리가 필요한 것은 옵스뷰에 의해 모니터링되고 우분투 랜드스케이프에 의해 관리되는 호스트가 자신의 상태에 대해 옵스뷰에 REST API를 통해 쿼리할 수 있는 능력입니다. 이렇게 하면 이 정보를 랜드스케이프로 되돌려 그래프를 그릴 수 있습니다. 그러나 Perl 문제, 종속성 등으로 인해 opsview_rest를 배포할 수 없으므로 우리는 무엇을 할 수 있을까요?
우리의 기준을 충족하는 유일한 항목은 “비전통적인 방식”으로 check_nrpe를 사용하는 것입니다. 제가 말하고자 하는 것은, 전통적으로 NRPE는 옵스뷰가 정보를 쿼리하는 클라이언트 측 프로그램입니다. 즉, “CPU가 얼마나 바쁜가요? 디스크가 얼마나 가득 차 있나요?” 이러한 값은 옵스뷰로 다시 전달되어 보고서, 대시보드 및 알림에 사용됩니다.
이 예제에서 우리가 발견한 것은, 모니터링/관리되는 호스트에 NRPE 클라이언트(옵스뷰 에이전트)를 설치하고 이를 사용하여 옵스뷰 마스터에서 실행 중인 NRPE를 쿼리할 수 있다는 것입니다.
이 옵스뷰 마스터에서 우리는 “ /usr/local/nagios/etc/nrpe_local/overrides.cfg”에 NRPE 명령을 지정합니다(이 파일은 존재하지 않으므로 생성해야 합니다) 그리고 아래와 같은 줄을 추가합니다:
############################################################################
# 옵스뷰를 위한 추가 NRPE 구성 파일
############################################################################
check_command[get_rest]=/usr/local/nagios/bin/landscape_monitor.pl $ARG1$ $ARG2$여기서 “get_rest”는 원격으로 호출할 명령이며, “=”의 동쪽에 있는 것은 로컬에서 실행되는 실제 명령입니다.
위에서 볼 수 있듯이, 우리는 “landscape_monitor.pl”이라는 것을 실행하고 있습니다. 이는 호스트 인수를 가져오는 Perl 스크립트입니다(즉, $ARG1$는 옵스뷰에서 “server00156” 또는 “networkswitch-X624”일 수 있습니다(‘호스트 이름’)). 이는 각 호스트에 대해 check_command를 생성할 필요 없이 $ARG1$을 사용할 수 있게 해줍니다.
다음으로, 실제 스크립트가 있습니다(이는 JSON과 IPC를 사용하므로 옵스뷰 시스템에 다음 패키지가 설치되어 있어야 합니다: libipc-run-perl libjson-any-perl)
#!/usr/bin/perl Shell
use strict;
use warnings;
use IPC::Run qw(run);
use JSON;
my $hostname = $ARGV[0] || '';
my $perf_metric = $ARGV[1] || '';
my @cmd = qw(/usr/local/nagios/bin/opsview_rest --username admin --password initial --data-format json GET);
push @cmd, '/rest/status/performancemetric?order=metricname&order=hostname&metricname='. $perf_metric .'&hostname='. $hostname;
run \\@cmd, \\undef, \\my $out;
my $data = decode_json($out);
print $data->{list}->[0]->{value};위에서 볼 수 있듯이, 우리는 변수를 가져와(호스트 이름) 이를 opsview_rest 명령에 추가하고 있습니다. 또한 성능 메트릭을 가져와 빌드된 명령을 실행한 후 JSON 형식에서 명령 출력을 인쇄합니다. 예를 들어 “23”입니다. 이는 우리가 실제로 랜드스케이프가 사용할 수 있는 값을 얻기 위해 grep/sed를 사용할 필요가 없도록 합니다.
따라서 “landscape_monitor.pl” 스크립트를 /usr/local/nagios/bin/에 추가하고 chmod/chown을 수행한 후, overrides.cfg 파일을 생성하고 위와 같은 줄을 추가할 수 있습니다.
마지막으로, 모니터링/관리되는 장치에서 NRPE를 시작하면 아래와 같이 준비가 완료됩니다.
시나리오
1단계: 우리는 표준 모니터링 환경을 가지고 있습니다. 옵스뷰는 “서버 A”를 모니터링하고 DB 통계, 아파치 통계 등의 정보를 요청하며, 이 정보를 사용자에게 GUI를 통해 대시보드에 표시하고, 문제가 발생할 경우 이메일/문자 메시지 알림을 보냅니다.

2단계: 이제 옵스뷰가 서버에서 수천 개의 메트릭과 통계를 수집하고 있으므로, 위의 Perl 스크립트를 사용하여 모니터링된 서버인 “서버 A”에서 이러한 통계를 쿼리하기 위해 REST API를 사용할 수 있습니다. 이를 위해 아래와 같은 명령을 실행하면 됩니다:
./check_nrpe -H opsview-master-server -c get_rest -a serverA Max_used_connectionsubunt@serverA:/usr/local/nagios/libexec$ ./check_nrpe -H opsview-master-server -c get_rest -a serverA Max_used_connections
23
ubunt@serverA:/usr/local/nagios/libexec$서버 A에서 check_nrpe를 사용하고 호스트 이름인 “서버 A”를 전달함으로써, 옵스뷰가 우리를 위해 가지고 있는 max_db_connections 값을 확인할 수 있습니다.

3단계: 이제 모니터링되는 장치가 자신의 메트릭을 알 수 있는 능력을 가지게 되었으므로, 우리가 할 수 있는 가능성은 무한합니다. 우리의 예에서는 단순히 랜드스케이프를 사용하여 옵스뷰가 수집한 메트릭을 그래프로 표시하여 랜드스케이프 시스템에서 “한눈에” 그래프에 접근할 수 있도록 하고, 옵스뷰에서 보고서/대시보드 및 더 많은 모니터링 관련 항목을 확인할 수 있도록 하고자 합니다. 그러나 이 기술을 사용하여 옵스뷰를 다른 그래프 도구와 통합하는 것을 막는 것은 없습니다.
랜드스케이프와 통합하기 위해서는 매우 간단합니다. 우리는 문서에서 앞서 설명한 대로 또 다른 “사용자 정의 그래프”를 생성하고 텍스트 상자에 다음을 추가하면 됩니다:
#!/bin/bash
cd /usr/local/nagios/bin
./check_nrpe –H opsviewserver –c get_rest -a servername max_used_connections
마지막으로, 이 그래프를 원하는 호스트에 적용하면, 우리는 이제 랜드스케이프를 통해 서버의 “최대 DB 연결”을 모니터링하고 있습니다. 그런 다음 이를 기반으로 구축하고 메트릭을 변경하는 등의 작업을 수행할 수 있으므로 본질적으로 우분투 랜드스케이프, RH 위성 등에서 옵스뷰가 수집한 모든 메트릭을 확인할 수 있습니다.

최종 검토
이론적으로 우리는 이제 다음과 같은 시나리오를 가지고 있습니다:
- 100대의 우분투 서버가 우분투 랜드스케이프에 의해 관리되고 패치됩니다.
- 100대의 우분투 서버가 옵스뷰 엔터프라이즈에 의해 모니터링되고 알림을 받습니다.
우리는 호스트를 랜드스케이프와 옵스뷰 모두에 추가하고, 더 세부적인 모니터링, 알림, 보고서, 대시보드, NetFlow 등을 위해 옵스뷰를 사용한 다음, 특히 흥미로운 ‘한눈에’ 메트릭을 해당 호스트의 랜드스케이프 페이지로 가져올 것입니다.
옵스뷰의 호스트
호스트는 위와 같이 옵스뷰에 추가됩니다. 우리는 모든 메트릭을 보고, 그래프를 작성하고, 모니터링되는 시점을 제어하고, 기간에 따라 메트릭을 변경할 수 있습니다.

랜드스케이프의 호스트
우리는 또한 랜드스케이프에 호스트를 가지고 있습니다. 이 보기에서 우리는 자산(하드웨어 등)을 보고, 패키지를 업데이트하고, 시스템의 상태에 대한 보고서를 확인할 수 있습니다. 또한 “모니터링”을 클릭하여 랜드스케이프 내에서 옵스뷰가 수집한 ‘한눈에’ 정보를 볼 수 있습니다:

(비록, 많이 사용되지 않는 아파치 서버입니다! ^_^ ).
옵스뷰 엔터프라이즈 체험하기 ›
우분투 랜드스케이프 체험하기 ›
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.