Скрипт обращается к API RabbitMQ для получения списка очередей. Список фильтруется так, чтобы включать только очереди, соответствующие указанному шаблону (amq.gen*
).
Функция Get-Queues
получает список доступных очередей, а функция remove-queue
удалениет найденные очереди соответствующие заданной маске.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
$log_path = "C:\zabbix_agent\_test.log" $size_mb = $($(Get-ChildItem $log_path | Measure-Object -Property Length -sum).Sum /1Mb) $size_mb_max = 5; $queues_like = "amq.gen*" # Учетные данные $username = "admin" $password = "admin" $baseurl_srv = "http://127.0.0.1:15672/api/queues/" if ($size_mb -gt $size_mb_max){ Remove-Item -Path $log_path -Force -ErrorAction Ignore } Add-Content -Value "*************************" -Path $log_path Add-Content -Value "baseurl_srv = $baseurl_srv" -Path $log_path function Get-Queues{ param ( [string] $uname, [string] $passwd, [string] $url ) # Кодирование учетных данных в base64 $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(($uname+ ":" +$passwd))) # Заголовок Authorization $headers = @{ Authorization = ("Basic {0}" -f $base64AuthInfo) } # Выполняем GET-запрос с заголовком Authorization $response = Invoke-RestMethod -Uri $url -Method Get -Headers $headers # Выводим результат $queuees = @() foreach ($m in $response.name) { $queuees += $m } return $queuees } function remove-queue{ param ( [string] $uname, [string] $passwd, [string] $url, [object] $queues_mass ) foreach ($q1 in $queues_mass){ Add-Content -Value "queue deleted = $q1" -Path $log_path $encoded_queue_name = [System.Uri]::EscapeDataString($q1) $_baseurl = $url + "%2F/" + $encoded_queue_name # Кодирование учетных данных в base64 $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(($uname+ ":" +$passwd))) # Заголовок Authorization $headers = @{ Authorization = ("Basic {0}" -f $base64AuthInfo) } try{ # Выполняем GET-запрос с заголовком Authorization $response = Invoke-RestMethod -Uri $_baseurl -Method Delete -Headers $headers Add-Content -Value $response -Path $log_path } catch{ Add-Content -Value $($_.Exception.Message) -Path $log_path } finally{ Add-Content -Value "*************************" -Path $log_path } } } $qs = Get-Queues -uname $username -passwd $password -url $baseurl_srv $massiv_for_delete_queues = @(); foreach ($_q in $qs) { if ($_q -like $queues_like) { Write-Host $_q $massiv_for_delete_queues += $_q; } } remove-queue -uname $username -passwd $password -url $baseurl_srv -queues_mass $massiv_for_delete_queues |