프로젝트 좀보이드(Project Zomboid, PZ, 프좀) 서버 만들기② - Grafana 설치, 자동 호스트 켜고 끄기
게임서버 만들기 계속
이전 글에 이어서, 그라파나 설치 및 구성과 서버 켜고 끄기 작업의 자동화를 진행해 보겠다.
Grafana 대쉬보드 만들기
Grafana는 편리한 관리를 위해 호스트에서 Docker로 깔기로 했다. 호스트도 윈도우즈이다 보니, 공식 홈페이지의 exe 딸깍으로 간단히 설치할 수 있다.
참고로 Docker Desktop의 원활한 실행을 위해서는, Windows 기능 켜기/끄기에서(작업표시줄 검색창으로 검색하면 됩니다) Linux용 Windows 하위 시스템을 켜 줘야 한다!
Docker가 원래 리눅스 기반이다 보니, 윈도우 네이티브가 아닌 윈도우에서 리눅스를 가상화하는 기능(WSL)으로 작동한다 해서 그러나
아무튼 Docker Desktop이 설치되었으면 powershell 또는 cmd 창에
docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise
이것만 입력하면 끝난다. 리눅스 콘솔에서 하던 짓을 윈도우 콘솔창에서 그대로 하면 되는 것이다.
대쉬보드 구성은 그때 해 보았으니까 간단히 넘어가본다. 초기 계정인 admin(ID)/admin(PW)로 로그인한 다음,
Connections→Data sources→Add new data source 선택 후
Prometheus server URL에 http://VM 내부 IP:9090를 입력하여 아래 Save & test를 눌렀을 때 정상적으로 저장 되면 끝이다.
대쉬보드 구성은 간단하게 CPU/RAM/DISK 만 하였다. 현재로서는 많아봤자 10여 명이 들어오는 서버인만큼, 네트워크 대역폭 등보다는 이 셋이 가장 중요했기 때문이다.
쿼리는 아래와 같다.
1
2
3
4
5
6
7
8
(CPU)
100 * (1 - avg(rate(windows_cpu_time_total{mode="idle"}[5m])) by (instance))
(RAM)
100 * (1 - (windows_memory_available_bytes / windows_memory_physical_total_bytes))
(DISK)
100 * (windows_logical_disk_size_bytes{volume="C:"} - windows_logical_disk_free_bytes{volume="C:"}) / windows_logical_disk_size_bytes{volume="C:"}
윈도우다 보니까 windows_가 붙는 등 기존 리눅스 기반 쿼리와는 다른 점이 있다. 참고로 그래프 범례에 보통 VM IP와 포트가 뜰 텐데, 사진처럼 특정 문구로 바꾸려면
1
2
3
4
5
6
7
8
9
10
11
12
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "Zomboid"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9182"]
# The label name is added as a label `label_name=<label_value>` to any timeseries scraped from this config.
labels:
app: "Zomboid"
prometheus 폴더의(보통 C:\Program Files\prometheus-...) prometheus.yaml에 들어가 scrape_configs의 labels: app: 값을 원하는 이름으로 바꿔준 다음,
Grafana 대쉬보드 패널의 Edit에 들어가 Options-Legend를 {{app}}으로 바꿔주면 된다.
라벨 키 이름을 기준으로 판단하기에, yaml에 app 말고 asdf 이렇게 입력하면 \{\{asdf\}\} 이렇게
서버 부팅, 종료 자동화
WOL 활성화
본 글의 핵심이다. 보통 서버는 24시간 틀어놓는 게 정상이지만, 사정상 전기료를 아끼기 위해 평일에는 20시부터 새벽 2시까지만 열기로 했다.
이렇게 컴퓨터를 켜고 끄는 것을 자동화하기 위해서는 WOL이라는 기능을 활성화해줘야 한다.
WOL이란, Wake-On-Lan의 약자로 물리적 신호가 아닌 네트워크 신호(이를 매직-패킷이라 한다)만으로 컴퓨터를 켜고 끌 수 있게 하는 기능이다.
그러기 위해서는 먼저 메인보드 바이오스(정확히는 UEFI) 설정창에 들어가야 하는데,
컴퓨터가 부팅될 때 delete 또는 F12 키를 연타하면 보통 들어가진다.
(사정상 화면을 찍지 못해, 같은 메인보드로 추정되는 여기서 돛거해 왔습니다. 원작자 분께 죄송합니다)
당직이 쓰는 아수스 메인보드 기준으로, Advanced 탭의 Advanced\APM Configuration 항목에 들어가 Power On By PCI-E를 Enable로 바꿔주면 된다.
혹시 설정창에 들어갔을 때 목록이 뜨지 않고 무슨 그래프 같은 것만 뜬다면, F7을 눌러 Advanced Mode에 진입해 줘야 한다.
이렇게 설정한 다음 F10을 눌러 설정값을 저장한 채로 컴퓨터를 재부팅한다.
컴퓨터가 재부팅됐으면, 장치 관리자(마찬가지로 작업표시줄 검색창에 검색하면 나옵니다)에 들어가 네트워크 어댑터→본인 네트워크 장치(랜카드)→우클릭→속성에 들어간다.
참고로 네트워크 어댑터가 사진처럼 많을 텐데, Realtek…, Intel…로 시작하는 거 선택하면 된다. 그게 보통 랜 카드라고 말하는 컴퓨터의 네트워크 장치이고, 대부분은 리얼텍(꽃게텍)이나 인텔 사에서 만들기 때문이다.
그 다음에는 고급 탭에 들어가 매직 패킷 웨이크 온을 사용으로, 전원 관리 탭에서 모든 항목에 체크해주면 된다.
참고로 Realtek… 기준이고, 혹시나 속성에서 전원 관리 탭이 나오지 않는 경우 여기서 랜카드 드라이버를 다운로드받아 준다. 인텔랜도 마찬가지로 인텔 홈페이지에서 받고
컴퓨터 끄기 자동화
컴퓨터 자동 끄기는 간단하다. 보통 cmd 창에서 shutdown -s -t (시간-초단위)를 입력하면 (시간-초단위) 이후 컴퓨터가 꺼진다는 것이다.
이를 자동화하기 위해, 작업 스케줄러에 들어가(또 검색창에 검색~)
우측의 작업 만들기 클릭→트리거 탭에서 새로 만들기→원하는 시간 간격 선택하고 확인
동작 탭 에서 새로 만들기→프로그램/스크립트에 shutdown.exe→인수 추가에 -s -f -t (원하는 시간-초 단위) 하고 확인
하면 트리거에서 설정한 시간 때마다 동작에서 지정한 shutdown이 동작해서 자동 종료할 수 있다.
참고로 인수 추가에서의 -f는 강제 종료(즉 평소 윈도우에서 종료할 때 현재 실행중인 프로그램이 있습니다 이 화면을 생깐다는 뜻)이다.
마지막으로 최종 확인하기 전, 일반 탭에서 사용자의 로그온 여부에 관계없이 실행과, 가장 높은 수준의 권한으로 실행을 체크해주고 확인 버턴을 누르면 저장 된다.
(비밀번호가 있는 경우, 비밀번호 입력 창도 나올 것입니다)
컴퓨터 켜기 자동화-삼성 스마트싱스 스테이션을 사용한
여기는 조금 어렵다. 아까 말했던 WOL의 원리상 네트워크 신호만으로 컴퓨터를 켤 수 있기에,
공유기가 iptime같은 경우 설정페이지에서 주기적으로 컴퓨터를 켜는 기능을 제공하지만,
당직의 컴퓨터는 KT 공유기에 묶여있고, KT 공유기는 해당 기능을 제공하지 않는다…
하지만! 마침 2년 전 휴대폰 사고 사은품으로 받은 스마트띵스 스테이션(Smarthings station)을 사용하면 주기적 자동 켜기가 가능한다기에, 한줄기 빛이 비쳤다!! 사은품으로 받고 막상 쓸 일이 없어 방구석에 넣어놨는데, 이게 빛을 발할 일이 있을 줄이야
당직은 이 문서를 참고해서 할 수 있었다. 한국어 번역 겸 설명하자면…
우선 이 프로그램을 받는다. 페이지에 들어가 우측 Releases 탭에서 최신 zip파일을 받을 수 있다. 이 zip파일을 풀어 속의 exe파일을 실행시켜 주면,
우측하단 작업 표시줄 창에 표시한 것과 같은 같은 아이콘이 나타나고, 우클릭해서 settings에 들어간 다음 체크박스에 체크하고 OK를 눌러 주자.
(눈치 빠른 분들은 아시겠지만, 매직-패킷은 5001 포트를 사용합니다)
그 다음부터는 휴대폰을 통해 스마트싱스에서 작업을 해 줘야 한다. 삼성은 친절하니까, 여기에서 스테이션을 홈 네트워크에 등록하는 방법을 제공해 주고 있다. (본인 휴대폰이 아이폰이여도 smartthings 어플리케이션만 깔면 됩니다~)
스마트싱스 스테이션이 연결되었으면, 휴대폰에서 이 링크에 접속해 스마트싱스에 Edge Driver라는 기능을 설치해줘야 한다.
설치하면, 연결된 기기에 PC Control…이라는 게 생길 텐데, 그 중 맨 왼쪽의 것을 누르고,
우측 위 … 클릭→설정→WOL MAC Address에 PC의 MAC 주소, RSM IP Address:Port에 PC 내부 IP:5001을 입력해 준다.
참고로 MAC 주소는 cmd창에 ipconfig /all을 쳤을 때 나오는 이더넷(또는 Wi-fi)의 물리적 주소를 -(슬래쉬) 대신 :(콜론)으로 입력하면 된다.
이렇게 됐으면, Main의 꺼짐(또는 켜짐) 버튼을 눌러 컴퓨터가 켜지는지/꺼지는지를 확인해본 다음,
아래 루틴 탭에서 전원 켜기를 클릭해 원하는 시간에 켜지도록 설정해주면 된다!!!
(이론적으로 자동 꺼짐도 되긴 하는데, 꺼지는 것은 잘 동작하지 않아 위의 shutdown 명령어로 자동화해 주었다)












