리눅스를 워크스테이션 으로 사용 하고 있는 사람입니다. 보통 리눅스에서 윈도우의 "에프터 버너"나 "HW모니터"를 대용으로 아래 보시는 것처럼 "conky"를 사람들이 많이 쓰죠. 우연히 구글링을 하다가 "NetData"라는 모니터링 툴을 발견했습니다. 기글에 해당 소프트웨어에 대한 설명이 없어서 글 남겨 봅니다.
X 윈도우 용 무료 HW monitor "conky"
사실 리눅스에는 리소스 모니터링 툴은 top과 같이 간단하게 cli에서 작동하는 패키지부터 대규모 서버를 효과적으로 관리하기 위한 모니터링 및 관리 소프트웨어들이 많은 것으로 알고 있습니다. 이전에 "Prometheus"로 모니터링을 하려고 사용해 봤습니다만 생각보다 복잡하고, 제가 필요하지 않는 기능들이 너무 많아 사용을 안 했습니다 (몇년 전이라 지금은 어떻게 변했을지 모르겠네요..).
"NetData"의 경우는 오픈소스이고, 상당히 가볍고 설치도 간편합니다. 제일 좋았던 것이 서버의 경고나 알람을 실시간으로 다른 매체로 전송을 해준다는 것입니다.
설치는 아래 첫 번째 라인을 입력하시면 자동 설치 됩니다. 혹은 아래 깃 허브로 들어가서 소스를 받으셔서 직접 컴파일 하셔도 됩니다.
bash <(curl -Ss https://my-NetData.io/kickstart.sh)
또는
https://github.com/NetData/NetData
설치를 하시고 19999 포트를 열어 주고, localhost:19999로 접속하시면 아래 그림처럼 바로 서버를 모니터링 할 수 있습니다. 저 같은 경우는 CPU, 메모리, GPU 의 사용량과 온도만 필요 하기 때문에 차트의 좀 바꿨습니다. 19999 포트를 포트 포워딩 해주면 외부 네트워크에서도 사용 가능 하지만 보안 기능이 없기 때문에 아무나 접속을 할 수 있습니다. 그렇기 때문에 웹 서버를 통과해서 접속 시켜 주는 것이 좋긴 하지만 저는 외부에서는 vpn으로 접속 해서 사용했습니다.
"NetData"의 기본 메인 화면
모니터링 화면의 우측을 보시면 상당히 많은 리소스들에 대한 서브 메뉴가 보입니다. 뭘 의미하는 것인지도 모르는 차트들이 많습니다...ㅎ /etc/NetData 폴더 내 NetData.conf 파일을 열어서 “# priority = “에서 주석을 제외하고 숫자를 변경해서 필요 없는 것들은 뒤로 보낼 수도 있고, “# enable = “ 에서 “no”를 입력 해주면 필요 없는 차트는 지워 집니다.
NetData.conf 파일 내에서 데이터 차트에 대한 단위나 내용들을 변경을 할 수 있습니다.https://docs.NetData.cloud/ 에 들어가면 자세한 방법이 나와 있습니다. 저 같은 경우는 apps.cpu차트에 제가 자주 쓰는 소프트웨어의 실행 파일 명 들을 넣어 놨습니다. 해당 소프트웨어의 cpu 점유율이 일정 수준 이상 넘어가거나 얼마 이하의 점유율이 될 때 알림 설정을 해줄 수 있습니다.
Alarms 기능
여러 종류의 알림들
상단에 보시면 위의 그림처럼 알람 창이 있습니다. NetData 자체로 health monitoring이라는 기능으로 서버의 리소스 변화를 알림 또는 경고 해주는 기능을 해줍니다. 크롬에 띄워 알림 허용 해주시면, 예를 들어 메모리를 80 % 이상 사용 시에 경고를 뜨게 설정 해 놓을 수 있습니다. 첫 설치 시에는 상당히 많은 알람이 설정 창에 보일 것입니다. 저는 필요한 것들만 빼고 다 지웠습니다. /usr/lib/NetData/conf.d/health.d 폴더 내에 보시며 conf 파일들이 있는데 “to” 부분에 silent를 넣어주시거나 내용을 다 지워 주시고, NetData 서비스를 재시작 해주시면 알람이 꺼지거나 불필요 한 알람들이 알람 패널에서 사라지게 됩니다.
알림 기능도 세부적으로 변경 할수 있다.
제가 개인적으로 제일 마음에 드는 기능은 위에 언급한 알림들을 실시간으로 메일이나, 텔레그램, SMS 등으로 보내 준다는 것입니다. 20가지가 넘는 방식으로 알림들을 전달을 할 수 있다고 합니다. Doc 페이지에 들어가 보시면 상세한 설명을 볼 수 있습니다. 저는 워크스테이션으로 쓰기 때문에 어떤 작업이 서버에 올라가 돌아갈 때 언제 끝날지 알 수 가 없습니다. NetData의 알림 기능을 사용해서 특정 프로그램의 cpu나 gpu의 점유율이 어느 정도 만큼 줄었을 때 메일이나 SMS의 알림을 통해 전달 해주기 때문에 작업 종료를 빠르게 파악 할 수 있습니다.
처음에 Email 알림을 이용해 설정해서 사용 했었는데, 도메인이 없어서 메일이 모두 스팸으로 가는 문제가 있더라구요.. 이메일 서버를 만들기 번거로워서 Telegram을 이용했습니다.
아래 그림처럼 텔레그램에서 Botfather를 찾아서 /Newbot을 입력 해주시고 봇을 생성하면 봇 토큰이 생성 됩니다. 생성 해준 봇을 친추 해주시고, IDBot을 추가해서 새로운 그룹을 만들어서 방금 생성한 봇과 IDBot을 같은 그룹방으로 초대 해줍니다. 그리고 /getgroupid 해주시면 해당 그룹 방에 대한 id가 나옵니다. 봇 토큰과 "그룹 id"를 /usr/lib/NetData/conf.d 폴더 내 health_alarm_notify.conf 파일에서 TELEGRAM_BOT_TOKEN=" “, DEFAULT_RECIPIENT_TELEGRAM=" ” 이 두 부분에 차례로 넣어주고 NetData 서비스를 재시작 해주시면 알림이 시작됩니다. 설치 한지 아직 하루가 채 안 되서 이것 저것 만져보고 해봐야겠습니다. 관심 있으시면 Doc 페이지 가셔서 보시면 자세히 설명이 나와있습니다.
Telegram 내 봇 추가 과정
텔레그램으로 알림이 전달되고 있습니다.
팡팡!에 당첨되어 50포인트를 보너스로 받으셨습니다.