[프로젝트] raspi-monitor | 데이터베이스 정의

dev2820·2021년 10월 9일
0

크게 cpu,memory,network,io 네가지의 정보를 얻어올 예정이니 4개의 테이블을 만들고, 각 정보와 기타정보(uptime 등)를 취합하는 summary 테이블까지 만드는 것이 좋을 것 같습니다.

먼저 스키마 정의와 관계도를 정의해봅시다.

cpu_status table

라즈베리파이는 4코어라서 각 정보의 필드를 4개씩, 그리고 총 cpu 사용량을 저장할 total 속성을 만들겠습니다.(total,cpu0,cpu1,cpu2,cpu3) 그리고 사용률은 %로 나타내기 위해 unsigned float을 사용하겠습니다. 또한 기본값은 0으로 하죠.

속성 이름typenot nulldefault값설명
datetimestampOnow()데이터를 기록한 시각, 기본키
cpu_usageunsigned floatX총 cpu 사용률, 100-total_id와 같다
cpu_usunsigned floatX유저모드 cpu 사용률
cpu_syunsigned floatX시스템모드 cpu 사용률
cpu_niunsigned floatXnice가 0 미만인 유저모드 cpu 사용률
cpu_idunsigned floatXcpu가 사용되지 않는 비율
cpu_waunsigned floatXcpu wait 비율(주로 io) 사용률
cpu_hiunsigned floatXhardware interrupt
cpu_siunsigned floatXsoftware interrupt
cpu_stunsigned floatXvirtual cpu 사용률
cpu0_usageunsigned floatX총 cpu 사용률, 100-total_id와 같다
cpu0_usunsigned floatX유저모드 cpu 사용률
cpu0_syunsigned floatX시스템모드 cpu 사용률
cpu0_niunsigned floatXnice가 0 미만인 유저모드 cpu 사용률
cpu0_idunsigned floatXcpu가 사용되지 않는 비율
cpu0_waunsigned floatXcpu wait 비율(주로 io) 사용률
cpu0_hiunsigned floatXhardware interrupt
cpu0_siunsigned floatXsoftware interrupt
cpu0_stunsigned floatXvirtual cpu 사용률
cpu1_usageunsigned floatX총 cpu 사용률, 100-total_id와 같다
cpu1_usunsigned floatX유저모드 cpu 사용률
cpu1_syunsigned floatX시스템모드 cpu 사용률
cpu1_niunsigned floatXnice가 0 미만인 유저모드 cpu 사용률
cpu1_idunsigned floatXcpu가 사용되지 않는 비율
cpu1_waunsigned floatXcpu wait 비율(주로 io) 사용률
cpu1_hiunsigned floatXhardware interrupt
cpu1_siunsigned floatXsoftware interrupt
cpu1_stunsigned floatXvirtual cpu 사용률
cpu2_usageunsigned floatX총 cpu 사용률, 100-total_id와 같다
cpu2_usunsigned floatX유저모드 cpu 사용률
cpu2_syunsigned floatX시스템모드 cpu 사용률
cpu2_niunsigned floatXnice가 0 미만인 유저모드 cpu 사용률
cpu2_idunsigned floatXcpu가 사용되지 않는 비율
cpu2_waunsigned floatXcpu wait 비율(주로 io) 사용률
cpu2_hiunsigned floatXhardware interrupt
cpu2_siunsigned floatXsoftware interrupt
cpu2_stunsigned floatXvirtual cpu 사용률
cpu3_usageunsigned floatX총 cpu 사용률, 100-total_id와 같다
cpu3_usunsigned floatX유저모드 cpu 사용률
cpu3_syunsigned floatX시스템모드 cpu 사용률
cpu3_niunsigned floatXnice가 0 미만인 유저모드 cpu 사용률
cpu3_idunsigned floatXcpu가 사용되지 않는 비율
cpu3_waunsigned floatXcpu wait 비율(주로 io) 사용률
cpu3_hiunsigned floatXhardware interrupt
cpu3_siunsigned floatXsoftware interrupt
cpu3_stunsigned floatXvirtual cpu 사용률

memory_status table

메모리는 KB형식으로 저장합시다. 라즈베리파이 4B 4GB모델이라 렘이 4기가입니다. byte로 변환하면 4,294,967,296 Bytes인데 byte로 저장하면 데이터 타입을 int로 해야하니 kb로 저장하고 (4,194,304 KB) unsigned mediumints 타입을 쓰겠습니다.

속성 이름typenot nulldefault값설명
datetimestampOnow()데이터를 기록한 시각, 기본키
mem_usageunsigned floatX메모리 사용률(used_memory/total_memory)
total_memoryunsigned mediumintX총 메모리양, 사실 유동적인 값은 아닌데 없으면 섭하니까 넣었습니다.
free_memoryunsigned mediumintX사용 가능한 메모리
used_memoryunsigned mediumintX사용중인 메모리
buff_memoryunsigned mediumintX버퍼 크기
cache_memoryunsigned mediumintX캐쉬 크기
available_memoryunsigned mediumintOswapping없이 프로세스에 할당 가능한 메모리
total_swapunsigned mediumintX총 swap 메모리 양
free_swapunsigned mediumintX사용 가능한 swap 메모리 양
used_swapunsigned mediumintX사용중인 swap 메모리 양

io_status table

disk 장치의 읽기, 쓰기 KB/s 를 저장합니다. 현재 sata케이블로 하드디스크한대가 물려있고, 마이크로sd 위에서 os가 돌아가고 있는데, 이 둘과 총합을 기록합시다.

속성 이름typenot nulldefault값설명
datetimestampOnow()데이터를 기록한 시각, 기본키
disk_total_readunsigned floatX총합 read KB/s
disk_total_writeunsigned floatX총합 write KB/s
mmcblk_readunsigned floatXsd카드 read KB/s
mmcblk_writeunsigned floatXsd카드 write KB/s
sda_readunsigned floatXsata로 연결된 장치에 대한 read KB/s
sda_writeunsigned floatXsata로 연결된 장치에 대한 write KB/s

network_status table

라즈베리파이가 공유기에 랜선으로 연결되어 있고, 다른데 연결된 곳은 없기 때문에 이더넷에 오는 트래픽만 기록하면 됩니다. 사실 라즈베리파이엔 wifi모듈이 있기때문에 wlan도 고려하는게 좋을 것 같긴한데, wifi를 사용할 일이 아마 안생길 것 같아서 뺍니다.

네트워크 트래픽 단위는 byte per sec가 아니라bit per sec를 쓰더라구요. 이유는 모르지만 Kbps로 저장해줍시다.

속성 이름typenot nulldefault값설명
datetimestampOnow()데이터를 기록한 시각, 기본키
net_receiveunsigned floatX전체 네트워크 수송 Kbps 여기선 이더넷만 고려
net_transmitunsigned floatX전체 네트워크 전송 Kbps 여기선 이더넷만 고려
net_receive_errunsigned floatX네트워크 수송 중 에러 Kbps
net_transmit_errunsigned floatX네트워크 전송 중 에러 Kbps

summary_status table

요약 + 기타정보 저장 테이블입니다. 다른 테이블을 참조해서 생성되는 테이블이며, 그 외에도 uptime 등을 저장합니다.

속성 이름typenot nulldefault값설명
datetimestampOnow()데이터를 기록한 시각, 기본키
uptimeunsigned intX부팅 후 지난 시간
cpu_thermalunsigned floatXcpu 온도
loadavg_1munsigned floatX1분 평균 loadavg
loadavg_5munsigned floatX5분 평균 loadavg
loadavg_15munsigned floatX15분 평균 loadavg
cpu_usageunsigned floatXcpu 사용률(%), cpu_status테이블의 cpu_usage 과 같다
mem_usageunsigned floatXmem 사용률(%), memory_status테이블의 mem_usage 과 같다
disk_total_readunsigned floatX디스크 read KB/s, io_status테이블의 disk_total_read 과 같다
disk_total_writeunsigned floatX디스크 write KB/s, io_status테이블의 disk_total_write 과 같다
net_receiveunsigned floatXnetwork read Kbps, network_status테이블의 net_receive 과 같다
net_transmitunsigned floatXnetwork write Kbps, network_status테이블의 net_transmit 과 같다

음...관계도라기에... 연결이 서로 없네요.

profile
공부,번역하고 정리하는 곳

0개의 댓글