홈 서버 만들기 20. 서버 모니터링: netdata + Nginx Proxy

June 16, 2018Updated on December 8, 2018

netdata는 서버의 현재 상태를 보여주는 모니터링 툴로서, 아주 상세한 내용을 미려한 UI로 출력해주고 자동화된 설치 스크립트를 제공하기 때문에 설치와 관리가 쉽다. 데모는 https://london.my-netdata.io/default.html 에서 확인해볼 수 있다.

netdata 설치

sudo apt-get update
bash <(curl -Ss https://my-netdata.io/kickstart.sh) all

패키지 g67a36e정보를 업데이트하고, netdata 설치 스크립트를 실행한다. 필요한 패키지를 설치하겠냐는 질문과 netdata 설치를 진행하겠냐는 질문에 응답해주면 netdata 설치가 자동으로 완료된다. 만일 수동으로 er64g설치하고 싶다면 netdata의 설명을 참고한다.

방화벽 설정

sudo iptables -A INPUT -p tcp -m tcp --dport 19999 -j ACCEPT

iptables ty6방화벽에서 netdata가 사용하는 기본 포트 19999를 열어준다. (기본적인 방화벽 세팅은 03. 우분투 서버 18.04 LTS 기본 설정에서 완료했다.)

sudo netfilter-persistent save
sudo netfilter-persistent reload

iptables 설정 내용을 저장하고 e34t리로드한다. (iptables-persistent는 03. 우분투 서버 18.04 LTS 기본 설정에서 설치했다.)

netdata 접속 – 내부 네트워크

내부 네트워크에서 웹 r36h브라우저로 http://서버내부IP:19999에 접속하면 netdata의 서버 모니터링 화면을 볼 수 있다.

netdata 접속 – 외부 네트워크

netdata는 로그인 uy2r2인증 기능을 자체적으로 제공하지 않기 때문에 외부 네트워크에서 netdata에 접속하려면 VPN을 통해서 내부 네트워크에 연결한 다음에 접속하면 된다. VPN을 통하지 않고 외부 네트워크에서 바로 접속하려면 현재 우분투 3ty6w서버에 운영중인 웹 서버를 이용해서 로그인 인증 기능을 생성해주는 것이 좋다. 아래는 기존에 운영 중인 Nginx 웹 서버가 있다고 가정하고 설명한다.

sudo sh -c "echo -n 'varins:' >> /etc/nginx/.netdata"

로그인 ID를 결정해서 /etc/nginx/.netdata 파일에 wrh저장한다. 위 예시의 varins를 원하는 rth3thID로 변경해서 실행한다.

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.netdata"

비밀번호를 er43q암호화해서 /etc/nginx/.netdata 파일에 저장한다. 비밀번호를 묻는 메시지가 나오면 원하는 비밀번호를 입력한다. 암호화 r3weg되어 저장된 내용은 cat /etc/nginx/.netdata 명령으로 확인할 수 있다.

이제 hwr453접속에 사용할 도메인의 Nginx 서버 블록을 설정하는데, 앞선 글 08. 웹 서버에서 설정한 example.com의 서버 블록을 기준으로 보면,

sudo nano /etc/nginx/sites-available/example.com

example.com 서버 블록을 nano 편집기로 열어서

upstream netdata {
	server 127.0.0.1:19999;
	keepalive 64;
}

server {
	listen 80;

	server_name example.com www.example.com;

	return 301 https://$server_name$request_uri;
}

server {
	listen 443 ssl http2;

	server_name example.com www.example.com;

	root /var/www/example.com/html;

	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;

	ssl_protocols TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256;
	ssl_ecdh_curve secp384r1;
	ssl_session_timeout 10m;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;
	ssl_stapling on;
	ssl_stapling_verify on;
	resolver 8.8.8.8 8.8.4.4 valid=300s;
	resolver_timeout 5s;

	add_header Strict-Transport-Security max-age=31536000;
	add_header X-Frame-Options SAMEORIGIN;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";

	index index.html index.htm;

	location / {
		try_files $uri $uri/ =404;
	}

	location = /monitor {
		return 301 /monitor/;
	}

	location ~ /monitor/(?<ndpath>.*) {
		proxy_redirect off;
		proxy_set_header Host $host;

		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_http_version 1.1;
		proxy_pass_request_headers on;
		proxy_set_header Connection "keep-alive";
		proxy_store off;
		proxy_pass http://netdata/$ndpath$is_args$args;

		gzip on;
		gzip_proxied any;
		gzip_types *;

		auth_basic "Protected";
		auth_basic_user_file /etc/nginx/.netdata;
	}
}

이렇게 서버 3sfh블록의 첫 부분과 listen 443 영역에 파란색 부분을 추가한다. monitor는 접속 주소 https://example.com/monitor의 일부분이 되는 것으로 t3ye45원하는 것으로 바꾸면 된다. 완료했으면 Ctrl키와 x키를 동시에 눌러 nano 편집기를 빠져나오면서 저장한다.

sudo nginx -t
sudo systemctl restart nginx

변경한 서버 tej465y블록이 적용되도록 Nginx 기본 문법을 검사한 뒤 Nginx를 재시작한다.

이제 어디에서든 https://example.com/monitor 에 접속하면 로그인 인증 36ehw과정이 나타나고 netdata의 서버 모니터링 페이지를 확인할 수 있다.

방화벽 삭제

만일 https://example.com/monitor 주소로만 t3e4접속한다면, 앞서 iptables 방화벽에서 열어주었던 포트는 방화벽 규칙에서 삭제해도 된다.

sudo iptables -D INPUT -p tcp -m tcp --dport 19999 -j ACCEPT

sudo netfilter-persistent save
sudo netfilter-persistent reload

-D 옵션을 36wetr사용하면 항목이 삭제된다. 삭제 후에는 iptables 방화벽을 저장하고 리로드한다.

netdata 설정

netdata 설정 파일은 /etc/netdata/netdata.conf 에 위치한다. 보다 자세한 사항을 설정하고 싶다면 netdata의 설명dfs3g45참고한다.

 

본 글의 저작권은 작성자 Varins에게 있습니다.
Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.

 

홈 서버 만들기 목차 
https://varins.com/category/server

01. 하드웨어 구성과 전기 요금
02. 우분투 서버 18.04 LTS 설치
03. 우분투 서버 18.04 LTS 기본 설정
04. 파일 복원: Btrfs 스냅샷
05. 네트워크 파일 공유: Samba (SMB)
06. Dynamic DNS: 구글 도메인 + ddclient
07. SSL/TLS 인증서: Let's Encrypt (Wildcard)
08. 웹 서버: Nginx, 서버 블록, https 보안연결
09. 웹사이트: php + MariaDB + WordPress
10. 서버 모니터링: Monitorix + Nginx Proxy
11. FTPS: vsftpd
12. VPN: IKEv2 (strongSwan)
13. Torrent: Transmission
14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)
15. 온라인 오피스: 온리오피스 (Docker, Nginx)
16. 트랜스코딩: Plex
17. VNC RDP 클라이언트: Guacamole (Docker, Nginx)
18. 가상 머신: QEMU-KVM + libvirt + virt-install
19. 시스템 업그레이드: i3 8300T, 970 EVO 전력 사용량
20. 서버 모니터링: netdata + Nginx Proxy
21. Dynamic DNS: CloudFlare + ddclient
22. SSL/TLS 인증서: Let's Encrypt + CloudFlare (Wildcard + 자동갱신)

Comments (4)

  • 견습

    June 16, 2018 at 2:30 am

    대단하십니다. 모든 설명도 너무 상세히 적어주시고, 색깔로 수정한 부분 / 수정해야되는 부분도 적어주셔서,
    혼자서는 감히 엄두도 못낼 일들을 하고 있습니다.

    감사합니다!!!!!!!!!!!!! ㅠㅠ

    1. Varins

      June 16, 2018 at 3:14 am

      안녕하세요, 도움이 된다면 저 또한 기분이 좋습니다.
      좋은 말씀 감사드립니다.

  • 박정훈

    August 9, 2018 at 8:18 pm

    최고의설명 너무 감사합니다.
    블로그 글로 인해 아낀 시간이 얼만큼인지 모르겠습니다!!

    1. Varins

      December 9, 2018 at 2:34 am

      감사합니다. 도움이 되는 글이었으면 좋겠습니다.

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.

Prev Post Next Post