[go] os 패키지를 활용하여 시스템 모니터링 및 경고

시스템 운영 시, 실시간으로 시스템 상태를 모니터링하고 문제가 발생할 경우 즉각적으로 대응할 수 있는 기능은 매우 중요합니다. Go의 os 패키지는 이러한 시스템 모니터링 및 경고를 위한 다양한 기능을 제공합니다.

시스템 리소스 모니터링하기

os 패키지를 활용하여 현재 CPU와 메모리 사용량, 네트워크 상태 등 다양한 시스템 리소스 정보를 모니터링할 수 있습니다. 아래는 CPU 사용량과 메모리 사용량을 출력하는 예제 코드입니다.

package main

import (
    "fmt"
    "os"
)

func main() {
    cpuUsage, err := os.CPUPercent(0, true)
    if err != nil {
        fmt.Println("Error getting CPU usage:", err)
    } else {
        fmt.Printf("CPU 사용량: %.2f%%\n", cpuUsage)
    }

    memInfo, err := os.MemoryInfo()
    if err != nil {
        fmt.Println("Error getting memory info:", err)
    } else {
        fmt.Printf("총 메모리: %d MB, 사용 중: %d MB\n", memInfo.Total>>20, memInfo.Used>>20)
    }
}

시스템 임계값 비교하여 경고 발생

특정 시스템 리소스 사용량이나 네트워크 상태 등이 임계값을 초과할 경우, 즉시 경고를 발생시켜 대응할 수 있습니다. 이를 위해 os 패키지의 기능을 활용하여 임계값 비교를 수행하고, 필요에 따라 경고를 발생시키는 코드를 작성할 수 있습니다.

package main

import (
	"fmt"
	"os"
	"time"
)

func main() {
    thresholdCPU := 80.0 // CPU 임계값 설정 (%)
    thresholdMem := 85.0 // 메모리 임계값 설정 (%)

    ticker := time.NewTicker(5 * time.Second)
    defer ticker.Stop()

    for {
        <-ticker.C
        cpuUsage, _ := os.CPUPercent(0, true)

        if cpuUsage >= thresholdCPU {
            fmt.Printf("경고: CPU 사용량이 %.2f%%로 임계값을 초과했습니다!\n", cpuUsage)
            // 경고 발생 시 대응 로직 추가
        }

        memInfo, _ := os.MemoryInfo()
        memUsage := float64(memInfo.Used) / float64(memInfo.Total) * 100

        if memUsage >= thresholdMem {
            fmt.Printf("경고: 메모리 사용량이 %.2f%%로 임계값을 초과했습니다!\n", memUsage)
            // 경고 발생 시 대응 로직 추가
        }
    }
}

위의 예제 코드는 CPU 사용량과 메모리 사용량이 설정한 임계값을 초과할 경우 콘솔에 경고 메시지를 출력하는 예시를 보여줍니다.

os 패키지를 활용하여 시스템 모니터링과 경고 기능을 통해 실시간으로 시스템 상태를 체크하고, 문제가 발생하는 즉시 대응할 수 있습니다.

자세한 내용은 여기를 참조하세요.