PowerShell 범용 대시보드: 대화형 대시보드 만들기

PowerShell 범용 대시보드



PowerShell Universal Dashboard은 매우 멋진 PowerShell 모듈이며 제가 접한 가장 흥미로운 오픈 소스 프로젝트 중 하나입니다.
PowerShell 명령만 사용하여 IT 시스템을 위한 웹 기반의 아름다운 대화형 대시보드를 만들 수 있습니다.
시스템을 추적하기 위해 모니터링 대시보드를 설정하는 데 유용합니다.

It's every sysadmin's dream to have a big screen in their office where they can see the status of their systems.




하나 만들자



본론으로 들어가 도구에 대해 알아볼 수 있도록 간단한 대시보드를 설정해 보겠습니다.
(따라 하려면 PowerShell 5 이상이 필요하고 모듈instructions on how to install을 따라야 합니다.)
dashboard.ps1 파일을 만들고 다음 코드를 추가합니다.

$dashboard = New-UDDashboard -Title "DevTo Dashboard" -Content{
    New-UDHeading -Text "DevTo"
}

Start-UDDashboard -Dashboard $dashboard -Port 1000 -AutoReload


여기서는 대시보드 개체를 만들고 머리글을 추가합니다.
이 파일을 실행한 후 모든 것이 올바르다면 다음과 같은 결과가 표시되어야 합니다.

Name       Port Running
---------       ---- -------
Dashboard2 1000    True


그리고 대시보드는 http://localhost:1000에서 사용할 수 있어야 합니다.



이제 더 시원하게 만들고 다른 테마를 추가해 보겠습니다. 저는 특히 기본 제공 Azure 테마를 좋아합니다.

$theme = Get-UDTheme -Name 'Azure'
$dashboard = New-UDDashboard -Title "DevTo Dashboard" -Theme $theme -Content{
    New-UDHeading -Text "DevTo"
}
...



훨씬 시원해졌죠?

모니터링



PowerShell 범용 대시보드에는 시간 경과에 따라 데이터를 추적하는 특정 유형의 차트인 monitor이라는 구성 요소가 있습니다. 예를 들어 CPU 또는 메모리 사용량을 표시하는 데 사용할 수 있습니다.

$theme = Get-UDTheme -Name 'Azure'
$dashboard = New-UDDashboard -Title "DevTo Dashboard" -Theme $theme -Content{
New-UdMonitor -Title "CPU (% processor time)" -Type Line -DataPointHistory 20 -RefreshInterval 10 -ChartBackgroundColor '#80FF6B63' -ChartBorderColor '#FFFF6B63'  -Endpoint {
            try {
                Get-Counter '\Processor(_Total)\% Processor Time' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue | Out-UDMonitorData
            }
            catch {
                0 | Out-UDMonitorData
            }
        }
}

Start-UDDashboard -Dashboard $dashboard -Port 1000 -AutoReload


기본적으로 여기서 수행하는 작업은 Get-Counter cmdlet을 사용하여 Windows 성능 모니터링 도구에서 실시간 데이터를 가져온 다음 이 정보를 모니터에서 읽을 수 있는 데이터로 변환하는 Out-UDMonitorData를 통해 파이핑하는 것입니다.

Un*x 사용자: 이 특정 명령은 Windows에서만 작동하므로 CPU 데이터를 가져오려면 다른 전략을 찾아야 합니다.mpstat 패키지의 sysstat 명령을 사용한 다음 Powershell로 데이터를 구문 분석해 보십시오.

차트



정말 유용한 또 다른 구성 요소는 charts 입니다. 모든 종류의 데이터를 막대, 선, 도넛 또는 원형 차트로 표시할 수 있습니다. Chart.js library 로 제작되었기 때문에 매우 사용자 정의가 가능하고 사용하기 쉽습니다.

예를 들어 도넛형 차트를 사용하여 사용한 디스크 공간과 사용 가능한 디스크 공간을 표시할 수 있습니다.

$theme = Get-UDTheme -Name 'Azure'
$dashboard = New-UDDashboard -Title "DevTo Dashboard" -Theme $theme -Content{

New-UDChart -Title "Disk Space" -Type Doughnut -RefreshInterval $refreshRate -Endpoint {  
            try {
                Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object {$_.DriveType -eq '3'} | Select-Object -First 1 -Property DeviceID,Size,FreeSpace | ForEach-Object {
                    @([PSCustomObject]@{
                        Label = "Used Space"
                        Data = [Math]::Round(($_.Size - $_.FreeSpace) / 1GB, 2);
                    },
                    [PSCustomObject]@{
                        Label = "Free Space"
                        Data = [Math]::Round($_.FreeSpace / 1GB, 2);
                    }) | Out-UDChartData -DataProperty "Data" -LabelProperty "Label" -BackgroundColor @("#80FF6B63","#8028E842") -HoverBackgroundColor @("#80FF6B63","#8028E842") -BorderColor @("#80FF6B63","#8028E842") -HoverBorderColor @("#F2675F","#68e87a")
                }
            }
            catch {
                0 | Out-UDChartData -DataProperty "Data" -LabelProperty "Label"
            }
        }

}

Start-UDDashboard -Dashboard $dashboard -Port 1000 -AutoReload


이제 대시보드에서 모니터와 차트를 모두 연결할 수 있습니다. 이제 대시보드는 다음과 같이 표시됩니다. 꽤 멋진 훈? 😃



Un*x 사용자: 이것은 Windows에서만 작동하지만 쉽게 해결하고 Un*x 시스템에 맞게 조정할 수 있습니다.

그리고 당신은 그것을 가지고 있습니다! 꽤 멋지고 보기 좋은 대시보드. 이제 벽에 큰 화면을 설치하고 표시하십시오.

탐구하다



이러한 예는 이 프레임워크가 수행할 수 있는 작업의 일부에 불과합니다. 또한 간단한 REST API를 구축하고, 여러 페이지를 동적으로 회전하고, 작성할 입력 양식과 기타 많은 구성 요소를 가질 수 있습니다.

당신이 할 수 있는 가장 좋은 일은 스스로 확인하는 것입니다. 그들은 꽤 좋습니다documentation .

이 도구가 저만큼 흥미롭고 유용하다고 느끼셨기를 바랍니다.

이 PowerShell 모듈에 대해 어떻게 생각하십니까? 이 도구를 사용한 경우 의견에 방법을 알려주십시오. :)

좋은 웹페이지 즐겨찾기