[iwinv GPU 클라우드] 리눅스 이미지 웹 모니터링 툴 추가 안내

| 2020년 10월 12일 | 0 Comments

리눅스 이미지 웹 모니터링 툴 추가


iwinv GPU 클라우드의 리눅스 이미지에 서버의 CPU, 메모리, 디스크, 네트워크등의 사용량을 그래프로 제공하는 오픈소스 웹 모니터링 툴인 netdata가 추가되었습니다.   

 

※ 추가된 이미지


웹 모니터링 툴 netdata 사용 방법


1. netdata를 사용하려면 서비스를 활성화 후 시작한뒤 유저 아이디를 생성합니다.
 

※ Ubuntu 계열의 경우 

systemctl enable netdata
systemctl enable apache2
service netdata start
service apache2 start

※ CentOS 계열의 경우 

systemctl enable netdata
systemctl enable httpd
service netdata start
service httpd start

 

2. htpasswd 명령어를 사용하여 유저 아이디를 생성합니다.

htpasswd -c /etc/apache2/.htpasswd 유저 아이디


3. 웹 브라우저에 인스턴스의 IP를 기재 후 접속하면 로그인 창을 확인할수 있습니다. 2번
    에서 만든 유저 아이디 및 비밀번호를 기재한뒤 로그인합니다.


4. 로그인 하면 인스턴스의 리소스 사용량과 nvidia-smi를 통한 그래픽카드 사용량을 확인
    할수 있습니다.

 

 

나만의 대쉬보드 제작 방법


netdata의 API를 통해 나만의 대쉬보드를 만들수 있습니다. 이 내용은 netdata만 운용
되고 있고 nvidia-smi만 대쉬보드로 만든다는 전제를 가지고 설명합니다.


공식 대쉬보드 설명 페이지 : https://my-netdata.io/dashboard.html

예시 
vi /var/www/html/index.html

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<meta charset=”utf-8″>
<meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<meta name=”apple-mobile-web-app-capable” content=”yes”>
<meta name=”apple-mobile-web-app-status-bar-style” content=”black-translucent”>
</head>
<body>
<h1> RTX 2080 : gpu0 </h1>
<div data-netdata=”nvidia_smi.gpu0_mem_utilization”
data-chart-library=”dygraph”
data-width=”600″
data-height=”200″
data-after=”-600″
></div>

</body>
<script type=”text/javascript” src=”http://xxx.xxx.xxx.xxx:19999/dashboard.js”></script>
</html>

 

여기서 주로 사용하게될 코드를 설명하면 아래와 같습니다.

 

# netdata api에 들어있는 nvidia data명 
<div data-netdata=”nvidia_smi.gpu0_mem_utilization”

# 그래프 형식
data-chart-library=”dygraph”

# 그래프 사이즈
data-width=”600″
data-height=”200″
data-after=”-600″
></div>

</body>

# 인스턴스 IP 기재
<script type=”text/javascript” src=”http://xxx.xxx.xxx.xxx:19999/dashboard.js”></script>

 

div data-netdata에 들어가는 옵션들입니다. nvidia-smi가 아닌 다른 옵션을 넣고싶을
경우 http://xxx.xxx.xxx.xxx:19999/api/v1/charts 로 접속해서 확인해보시면 됩니다.

 

nvidia_smi.gpu0
다수의 그래픽카드를 0,1,2,3 으로 지정가능

nvidia_smi.gpu0_mem_utilization
메모리

nvidia_smi.gpu0_clocks
GPU 클럭

nvidia_smi.gpu0_gpu_utilization
GPU 코어

nvidia_smi.gpu0_encoder_utilization
인코더

nvidia_smi.gpu0_power
파워 ( 전력량 )

nvidia_smi.gpu0_mem_usage
메모리 사용량

nvidia_smi.gpu0_temperature
온도

nvidia_smi.gpu0_fan_speed
쿨러 속도

nvidia_smi.gpu0_pci_bandwidth
PCI 대역폭

 

옵션을 참고하여 아래와 같이 메모리 사용량과 GPU 클럭을 확인할수 있는 대쉬보드를
만들수 있습니다.

 

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<meta charset=”utf-8″>
<meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<meta name=”apple-mobile-web-app-capable” content=”yes”>
<meta name=”apple-mobile-web-app-status-bar-style” content=”black-translucent”>
</head>
<body>
<h1> RTX 2080 : gpu0 </h1>
<div data-netdata=”nvidia_smi.gpu0_mem_utilization”
data-chart-library=”dygraph”
data-width=”600″
data-height=”200″
data-after=”-600″
></div>

<div data-netdata=”nvidia_smi.gpu0_clocks”
data-chart-library=”dygraph”
data-width=”600″
data-height=”200″
data-after=”-600″
></div>

</body>
<script type=”text/javascript” src=”http://xxx.xxx.xxx.xxx:19999/dashboard.js”></script>
</html>

 

index.html을 생성한뒤 웹으로 접근하면 자신이 만든 대쉬보드로 접근할수 있습니다.


 

설정된 이미지 참고 사항



1. netdata는 19999 포트로 운용되나 apache2, httpd를 통해 80번 포트를 사용하는 이유

netdata는 별도의 로그인 과정이 없이 웹브라우저에서 접속할수 있으며 인스턴스 IP를
알고있다면 누구라도 리소스 사용량을 아무런 조건없이 볼수있는 보안적인 문제가 있기에
apache2, httpd의 proxy 설정과 htpasswd 기능을 사용하는것입니다.  


공식 홈페이지 참고 : https://learn.netdata.cloud/docs/agent/running-behind-apache


※ Ubuntu의 설정
vi /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
AllowOverride None
AuthType Basic
AuthName “Protected site”
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>

ProxyPass “/” “http://localhost:19999/” connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse “/” “http://localhost:19999/”

ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
</VirtualHost>


※ CentOS의 설정
vi /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
AllowOverride None
AuthType Basic
AuthName “Protected site”
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Proxy>

ProxyPass “/” “http://localhost:19999/” connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse “/” “http://localhost:19999/”

ErrorLog /var/log/httpd/netdata-error.log
CustomLog /var/log/httpd/netdata-access.log combined
</VirtualHost>

2. iptables등의 방화벽에서 19999 포트 차단 권장
apache2, httpd의 proxy 설정이 되어있어 웹브라우저에서 접근시 19999 포트에서 80 포트로 연결하여 로그인을 하게되지만 19999 포트를 열게되면 htpasswd의 유무와는 관계없이 해당 포트로 바로 접근하여 인스턴스의 리소스를 볼수 있기 때문입니다.


3. 이번 업데이트에 CentOS 6이 포함되지 못한 이유
여러 테스트를 걸쳤으나 netdata의 nvidia-smi 항목이 표시되지않을때가 있어 추후 정상 작동을 확인하게 되면 업데이트를 진행하겠습니다. 

Category: LINUX

Avatar

About the Author ()