เซิร์ฟเวอร์ Syslog/ไคลเอ็นต์ และรีเลย์ UDP ที่ใช้ .NET Framework Class System.Net.Sockets เป็นโหมดงานพื้นหลัง
เอกสารที่ใช้ (ซ็อกเก็ต udp): metanit.com
เอกสารที่ใช้ (ข้อความ syslog): devconnected.com
เซิร์ฟเวอร์ syslog การปรับโครงสร้างซอร์สโค้ด: Spiderip.com
ไคลเอนต์ udp ต้นทาง: cloudbrothers.info
ติดตั้งโมดูลจากที่เก็บ NuGet:
Install-Module pSyslog - Repository NuGet
คุณต้องลงทะเบียนพื้นที่เก็บข้อมูล NuGet:
Register-PSRepository - Name " NuGet " - SourceLocation " https://www.nuget.org/api/v2 " - InstallationPolicy Trusted
หรือใช้โมดูลการติดตั้งหรืออัปเดตจากที่เก็บ GitHub (ใช้สคริปต์ Deploy-pSyslog.ps1 ) ใช้คำสั่งในคอนโซล PowerShell :
Invoke-Expression(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/Lifailon/pSyslog/rsa/Module/Deploy-pSyslog.ps1")
PSVersion ที่รองรับ: 5.1 และ 7.3
นำเข้าโมดูลและรับรายการคำสั่ง:
PS C:UsersLifailon> Import-Module pSyslog
PS C:UsersLifailon> Get-Command -Module pSyslog
CommandType Name Version Source
----------- ---- ------- ------
Function Get-pSyslog 0.6 pSyslog
Function Send-pSyslog 0.6 pSyslog
Function Show-pSyslog 0.6 pSyslog
Function Start-pSyslog 0.6 pSyslog
Function Start-UDPRelay 0.6 pSyslog
Function Stop-pSyslog 0.6 pSyslog
PS C:UsersLifailon> Start-pSyslog -Port 514
PS C:UsersLifailon> Get-pSyslog -Status | Format-List
Status : Running
StartTime : 06.06.2023 1:09:47
StopTime :
PS C:UsersLifailon> Get-pSyslog
PS C:UsersLifailon> Get-pSyslog
Jun 6 01:11:01 zabbix-01 Informational authpriv CRON[3052]: pam_unix(cron:session): session opened for user root by (uid=0)
Jun 6 01:11:01 zabbix-01 Informational cron CRON[3053]: (root) CMD (date >> /dump/zabbix/cron-test-date.txt)
Jun 6 01:11:01 zabbix-01 Informational authpriv CRON[3052]: pam_unix(cron:session): session closed for user root
Jun 6 01:11:03 zabbix-01 Informational daemon multipathd[784]: sda: add missing path
Jun 6 01:11:03 zabbix-01 Informational daemon multipathd[784]: sda: failed to get udev uid: Invalid argument
Jun 6 01:11:03 zabbix-01 Informational daemon multipathd[784]: sda: failed to get sysfs uid: Invalid argument
Jun 6 01:11:03 zabbix-01 Informational daemon multipathd[784]: sda: failed to get sgio uid: No such file or directory
Jun 6 01:11:01 plex-01 Informational user Service[WinRM] Running
...
PS C:UsersLifailon> Stop-pSyslog
PS C:UsersLifailon> Get-pSyslog -Status | Format-List
Status : Stopped
StartTime : 06.06.2023 1:09:47
StopTime : 06.06.2023 1:13:43
Send-pSyslog -Content "Test" -Server 192.168.3.99
Send-pSyslog -Content "Test" -Server 192.168.3.99 -Type Informational -PortServer 514 -PortClient 55514
ใช้ไปป์ไลน์และส่งไปยังเซิร์ฟเวอร์ rSyslog:
(Get-Service -Name WinRM).Status | Send-pSyslog -Server 192.168.3.102 -Tag Service[WinRM]
Send-pSyslog -Content "test" -Server 192.168.3.99 -PortServer 514
Send-pSyslog -Content "test" -Server 192.168.3.99 -PortServer 514 -Base64
ตัวกรอง Wireshark: udp.dstport == 514 && ip.src == 192.168.3.100 && !icmp
เซิร์ฟเวอร์ (192.168.3.102): Start-pSyslog -Port 514
รีเลย์ (192.168.3.99): Start-UDPRelay -inPort 515 -outIP 192.168.3.102 -outPort 514
ลูกค้า (192.168.3.100): Send-pSyslog -Server 192.168.3.99 -PortServer 515 -Content $(Get-Date)
ออกไฟล์บันทึกไปยัง Object เพื่อรวบรวมเมตริก
PS C:UsersLifailon> Show-pSyslog -Type Warning -Count
2917
PS C:UsersLifailon> Show-pSyslog -Type Alert -Count
36
PS C:UsersLifailon> Show-pSyslog -Type Critical -Count
5
PS C:UsersLifailon> Show-pSyslog -Type Error -Count
5
PS C:UsersLifailon> Show-pSyslog -Type Emergency -Count
0
PS C:UsersLifailon> Show-pSyslog -Type Informational -Count
15491
Show-pSyslog | Out-GridView
หรือดูบันทึกเก่าด้วยชื่อไฟล์ไวด์การ์ด:
Show-pSyslog -LogFile 05-06 | Out-GridView
ตัวอย่างการรีบูตระบบไฟล์บันทึก: 06-06-2023_reboot.log
การหมุนเวียนไฟล์บันทึกและแสดงไฟล์บันทึกทั้งหมดใน 24 ชั่วโมง:
Start-pSyslog -RotationSize 500
Show-pSyslog -Count
Show-pSyslog -Count -LogFile 10-06
ตัวอย่างเอาต์พุต syslog ภายในเครื่อง (โดยใช้ส่วนท้าย):
ตัวอย่างเอาต์พุตเซิร์ฟเวอร์ pSyslog ไปยังคอนโซล PowerShell: