Grafana와 Mysql을 이용해서 CPU, Memory 모니터링

OS는 Windows입니다.
VM이나 로컬PC에서 진행하면 됩니다.
저는 Azure VM(Windows 10 Pro)에서 진행했습니다.

  1. MySql 설치 및 설정

https://dev.mysql.com/downloads/installer/ 에서 MySql을 다운로드 합니다.

다운로드 받은 파일로 설치합니다.
MySql Server와 MySql Workbench가 필요하기 때문에 Custom으로 설치하겠습니다.


MySql Root 패스워드를 입력합니다.

설치가 끝나면 MySql Workbench를 실행합니다.

설치할 때 설정한 Root 패스워드를 입력해서 접속합니다.

CREATE DATABASE grafana_db;
CREATE TABLE grafana_db.resource_tb(date datetime, cpu INT NOT NULL, ram INT NOT NULL) ENGINE = INNODB;

위 쿼리를 입력해서 데이터베이스와 테이블을 생성합니다.

  1. Powershell로 CPU, RAM 사용률 DB에 적재

https://dev.mysql.com/downloads/connector/net/ 에서 MySql Connector/NET을 다운로드 합니다.

다운로드 받은 파일을 설치 합니다.

PowerShellISE를 실행합니다.
아래 스크립트를 입력하고 F5를 눌러서 실행합니다.
1분마다 CPU사용량과 메모리 사용량을 조회해서 MySql에 적재하는 스크립트 입니다.
MySql Password만 본인이 설정한 값을 입력하면 됩니다.

스크립트

# Connect to the library MySql.Data.dll
Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector NET 8.4\MySql.Data.dll'

while(1){

# 날짜, 시간
$Date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

# CPU 사용량
$CPU = (Get-WmiObject win32_processor).LoadPercentage

# 메모리 정보 불러오기
$Operating_system = Get-WmiObject win32_OperatingSystem

# 전체 메모리 크기
$total_memory = $Operating_system.TotalVisibleMemorySize    # KiloByte 단위 출력
$total_memory_gb = [Math]::Round($total_memory / 1024 / 1024, 1)    # GB 변환

# 여유 메모리 크기 
$free_memory = $Operating_system.FreePhysicalMemory    # KiloByte 단위

# 사용 중 메모리 크기
$using_memory = $total_memory - $free_memory    # KiloByte 단위
$using_memory_gb = [Math]::Round($using_memory / 1024 / 1024, 1)	# GB 변환

# 메모리 사용률 (%)
$memory_usage_rate = [Math]::Round(($total_memory - $free_memory) * 100 / $total_memory, 1)


# MySql 저장
$Connection = [Mysql.Data.MysqlClient.MysqlConnection]@{ConnectionString='server=127.0.0.1;uid=root;pwd=password;database=grafana_db'}
$Connection.Open()

$sql = New-Object Mysql.Data.MysqlClient.MysqlCommand
$sql.Connection = $Connection
$sql.CommandText = "INSERT INTO grafana_db.resource_tb(date, cpu, ram) VALUES ('$Date', $CPU, $memory_usage_rate)"
$sql.ExecuteNonQuery()
$Connection.Close()

# 값 출력
$Date
$CPU
$memory_usage_rate

# 딜레이
Start-Sleep -Seconds 59
}
  1. Grafana 설치 및 설정

https://grafana.com/get/?tab=self-managed 에서 Grafana를 다운로드 합니다.

다운로드 받은 파일을 설치 합니다.

브라우저를 열고 localhost:3000으로 접속합니다.

초기 패스워드 admin/admin 으로 로그인 합니다.

Connections > Data sources 로 들어가서 Add data source를 클릭합니다.

mysql을 검색하고 클릭합니다.

HostURL, Database name, MySql 계정 정보를 입력합니다.

아래로 내려서 Save & test 버튼을 클릭합니다.
글미과 같이 Database Connection OK라고 나오면 DB 연결이 완료됩니다.

오른쪽 상단의 +버튼을 눌러서 New dashboard를 클릭합니다.

Add visualization을 클릭합니다.

data source에서 아까 추가한 mysql을 클릭합니다.

Table과 Column을 선택합니다.
Run query를 눌러서 미리 그래프를 확인할 수 있습니다.
Apply를 눌러서 적용합니다.

추가한 대시보드 및 패널을 확인할 수 있습니다.
상단의 저장 버튼을 눌러서 대시보드를 저장합니다.

대시보드 이름을 입력하고 Save버튼을 클릭합니다.

Grafana 홈 화면에서 저장한 Dashboard를 확인할 수 있습니다.

Similar Posts