frameworkResources/Scripts/DevScripts/InstallScript_Dev_Win_Client.ps1
Param( [Parameter(Mandatory)] [string]$Key, [Parameter(Mandatory)] [string]$Company, [Parameter(Mandatory)] [string]$FirstName, [Parameter(Mandatory)] [string]$LastName, [Parameter(Mandatory)] [string]$Email, [string]$InstallDir = "C:\Program Files\NCache" ) function DownloadNcache { Start-BitsTransfer -Source "https://www.alachisoft.com/downloads/ncache.ent.net.x64.msi" -Destination "C:\Temp\ncache.ent.net.x64.msi" } function installNCache { $msiPath = "C:\Temp\ncache.ent.net.x64.msi" $logPath = "C:\Temp\ncache_install.log" $arguments = @( "/i `"$msiPath`"" "/qn" "/l*v `"$logPath`"" "INSTALLMODE=3" "COMPANYNAME=$Company" "USERFIRSTNAME=$FirstName" "USERLASTNAME=$LastName" "EMAILADDRESS=$Email" "KEY=$Key" "INSTALLDIR=`"$InstallDir`"" ) -join " " Write-Host $arguments Start-Process msiexec.exe -ArgumentList $arguments -Wait -NoNewWindow } function SetSecurityRules { New-NetFirewallRule -DisplayName "NCache-In" -Direction Inbound -Action Allow ` -Protocol TCP -LocalPort 9800, 8250-8260, 7800-7900, 8300-8400, 9900, 10000-11000 New-NetFirewallRule -DisplayName "NCache-Out" -Direction Outbound -Action Allow ` -Protocol TCP -LocalPort 7800-7900, 10000-11000 } function InstallAzureMonitoring { # ================================ # Variables # ================================ $TELEGRAF_CONFIG = "C:\Program Files\InfluxData\telegraf\telegraf.conf" $NAMESPACE_PREFIX = "ncache-metrics" # ================================ # Install Telegraf (if not installed) # ================================ Start-BitsTransfer ` -Source "https://dl.influxdata.com/telegraf/releases/telegraf-1.36.1_windows_amd64.zip" ` -Destination "C:\Temp\telegraf-1.36.1_windows_amd64.zip" Expand-Archive "C:\Temp\telegraf-1.36.1_windows_amd64.zip" ` -DestinationPath 'C:\Program Files\InfluxData\telegraf\' Set-Location "C:\Program Files\InfluxData\telegraf" Move-Item .\telegraf-1.36.1\telegraf.* . # ================================ # Fetch Azure Metadata # ================================ $headers = @{ "Metadata" = "true" } $azMetadata = Invoke-RestMethod -Headers $headers -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" $RESOURCE_ID = $azMetadata.compute.resourceId $REGION = $azMetadata.compute.location if ([string]::IsNullOrEmpty($RESOURCE_ID) -or [string]::IsNullOrEmpty($REGION)) { exit 1 } # ================================ # Configure Telegraf (PerfMon) # ================================ @" [agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "0s" [[inputs.win_perf_counters]] [[inputs.win_perf_counters.object]] ObjectName = "NCache Client" Instances = ["*"] Counters = ["Read Operations/sec", "Write Operations/sec", "Additions/sec", "Deletes/sec", "Fetches/sec", "Updates/sec", "Average Item Size", "Request queue size", "Average us/add", "Average us/fetch", "Average us/remove", "Average us/insert"] Measurement = "*" IncludeTotal = true [[inputs.win_perf_counters.object]] ObjectName = "Processor Information" Instances = ["*"] Counters = ["% Processor Time"] Measurement = "win_cpu" IncludeTotal = false [[inputs.win_perf_counters.object]] ObjectName = "Memory" Counters = ["% Committed Bytes In Use"] Instances = ["------"] Measurement = "win_mem" IncludeTotal = false [[outputs.azure_monitor]] region = "$REGION" namespace_prefix = "$NAMESPACE_PREFIX" resource_id = "$RESOURCE_ID" timeout = "20s" "@ | Set-Content -Path $TELEGRAF_CONFIG -Encoding ascii # ================================ # Enable & Start Telegraf # ================================ & "C:\Program Files\InfluxData\telegraf\telegraf.exe" --service install --config $TELEGRAF_CONFIG & "C:\Program Files\InfluxData\telegraf\telegraf.exe" --config $TELEGRAF_CONFIG --test & "C:\Program Files\InfluxData\telegraf\telegraf.exe" --service start } function ExecuteCommands { DownloadNcache installNCache SetSecurityRules InstallAzureMonitoring } ExecuteCommands |