DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Why Architecture Matters: Structuring Modern Web Apps
  • A Systematic Approach for Java Software Upgrades
  • Running Legacy SAP Versions on AWS
  • Understanding the Power of Coefficient of Variation in Software Performance Testing

Trending

  • Top JavaScript/TypeScript Gen AI Frameworks for 2026
  • Ujorm3: A New Lightweight ORM for JavaBeans and Records
  • Building an Image Classification Pipeline With Apache Camel and Deep Java Library (DJL)
  • Multi-Scale Feature Learning in CNN and U-Net Architectures
  1. DZone
  2. Data Engineering
  3. AI/ML
  4. .NET Deployment Tips From New Relic Community Forum Users

.NET Deployment Tips From New Relic Community Forum Users

By 
Fredric Paul user avatar
Fredric Paul
·
Jun. 26, 15 · Interview
Likes (0)
Comment
Save
Tweet
Share
1.7K Views

Join the DZone community and get the full member experience.

Join For Free

[This article was written by Wyatt Lindsay]

New Relic’s Community Forum is designed to be a place for our users to share their experiences, questions, problems, and fixes. The collective expertise and creativity of the New Relic community has generated some outstanding solutions to everyday issues, and we want to call out some of them in the area of .NET agent deployment excellence.

Basic installation

Installing New Relic’s .NET agent is designed to be simple: run the installer on the target host and choose the features you want to include. For Microsoft Azuredeployments, install one of our NuGet packages. Installation requires a reset of IIS for the software to load into your application. To upgrade, we recommend first stopping IIS, installing the newer agent version, and then starting up IIS again.

It’s also possible to perform a “silent” (manual) install using msiexec.exe, for example:

msiexec.exe /i C:\NewRelicAgent.msi /qb NR_LICENSE_KEY=<license key> INSTALLLEVEL=1

See the documentation for complete manual installation options.

Leveraging PowerShell

Scripting the silent installation provides convenience and flexibility. Here’s an example script provided by community member Jon Carl in this post:

$msiName = <name of your msi>
$licenseKey = <your NR license key>
$arguments = "/i $msiName /L*v install.log /qn NR_LICENSE_KEY=$licenseKey"

if ($msiName -ne $null) {
    $exitCode = (Start-Process -FilePath "msiexec" -ArgumentList $arguments -Wait 
-PassThru).ExitCode;
    if($exitCode -eq 0) {
        Write-Host "Installation successful!" -ForegroundColor Green
    } else {
        Write-Host "Installation unsuccessful. Exitcode: $exitCode" -ForegroundColor Red
    }
}

This script works great when run directly on the target machine. Another forum user (Kym McGain) noticed that the installation didn’t complete before the session ended when executing the script remotely. This caused the installer to quit partway through. Kym posted this script that uses a ‘while’ loop to ensure the installer completes. As a bonus, it stops IIS before and restarts it after the software installs. As mentioned above, these steps are usually needed when upgrading.

$installNewRelic = {
    $runProcess = {
        param($process,$arguments)

        $res = Start-Process -FilePath $process -ArgumentList $arguments -Wait -PassThru

        while ($res.HasExited -eq $false) {
            Write-Host "Waiting for $process..."
            Start-Sleep -s 1
        }

        $exitCode = $res.ExitCode
        if($exitCode -eq 0) {
            Write-Host "$process successful!" -ForegroundColor Green
        } else {
            Write-Host "$process unsuccessful. Exitcode: $exitCode" -ForegroundColor Red
        }
    }

    $msiName = <name of your msi>
    $licenseKey = <your NR license key>

    $arguments = "/i $msiName /L*v install.log /qn NR_LICENSE_KEY=$licenseKey"

    Invoke-Command $runProcess -ArgumentList "IISRESET","/STOP"
    Invoke-Command $runProcess -ArgumentList "msiexec.exe",$arguments
    Invoke-Command $runProcess -ArgumentList "IISRESET","/START"
}

Chef, Puppet, and Chocolatey

Deployment options abound for modern Web developers. These solutions often require a known download path and installer name. New Relic offers a consistent filepath and MSI name for the agent in an effort to make automated deployment easier for .NET customers:

http://download.newrelic.com/dot_net_agent/release/NewRelicDotNetAgent_x64.msi
http://download.newrelic.com/dot_net_agent/release/NewRelicDotNetAgent_x86.msi

Several Community members have created packages for these utilities. Chocolatey users are invited to use the following NuGet package created by kireevco:

https://chocolatey.org/packages/newrelic-dotnet

New Relic community member ePitty built a Puppet module to handle .NET agent deployment:

https://github.com/epitty1023/puppet-newrelicappmon

Chef users, meanwhile, can check out the following cookbook for .NET and many other platforms New Relic supports:

http://community.opscode.com/cookbooks/newrelic

New Relic Community member E_Bow wrote a Chef recipe that goes a step further by stopping IIS before the installation and starting it again after completion:

#Stop IIS
iis_site 'Website' do
  action [:stop]
end

# install latest Newrelic agent from web
include_recipe 'newrelic::repository'
include_recipe node['newrelic']['dotnet-agent']['dotnet_recipe']

license = node['newrelic']['application_monitoring']['license']

windows_package 'Install New Relic .NET Agent' do
  source node['newrelic']['dotnet-agent']['https_download']
  options "/qb NR_LICENSE_KEY=#{license} INSTALLLEVEL=#{node['newrelic']['dotnet-agent']['install_level']}"
  installer_type :msi
  action :install

end

#Start IIS
iis_site 'Website' do
  action [:start]
end

The author states that they were unable to pull the New Relic license key from the configuration JSON in Chef Overrides, requiring them to modify the config file on each machine and manually enter the key. We invite any Chef experts out there to extend and improve this recipe so that it correctly pulls the license key.

We are continually impressed by the smarts and spirit of our New Relic Community Forum members, and jump at the chance to highlight their contributions. Look for more Forum projects in the New Relic blog in the future.

Do you have your own approach, tips, or recipes? Please share them in the New Relic Community Forum.

.NET Chef (software) Installer (macOS) Machine Chocolatey NuGet Software Host (Unix) application Excellence (software)

Opinions expressed by DZone contributors are their own.

Related

  • Why Architecture Matters: Structuring Modern Web Apps
  • A Systematic Approach for Java Software Upgrades
  • Running Legacy SAP Versions on AWS
  • Understanding the Power of Coefficient of Variation in Software Performance Testing

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook