How to Boost IronWorker Monitoring with New Relic?

Did you know that efficient task monitoring can reduce error rates by up to 45%? Unlock this potential by integrating IronWorker with New Relic, a leading observability platform. This blog post offers a concise, step-by-step guide to help you optimize performance, minimize downtime, and maximize ROI. Don't miss out on these benefits—dive in and explore code snippets for seamless integration.

New Relic Monitoring

Table of Contents

  1. Frequently Asked Questions About Monitoring IronWorker with New Relic
  2. Prerequisites for the New Relic and IronWorker Integration
  3. Step 1: Configure New Relic agent in Docker
  4. Step 2: Create hello.php
  5. Step 3: Package your code in Docker Image
  6. Step 4: Queue Your IronWorker Tasks
  7. Monitor Tasks in New Relic
  8. Conclusion

Q1: What is New Relic?

A: New Relic is a cloud-based APM tool providing real-time insights into application performance, availability, and health, helping you resolve issues, optimize resources, and make data-driven decisions.

Q2: What data can I expect from New Relic after integrating with IronWorker?

A: Integration offers performance metrics such as task durations, memory usage, task throughput, error rates, and custom metrics relevant to your application or business needs.

Q3: Do IronWorker and New Relic support the same programming languages?

A: Yes, both IronWorker and New Relic support Ruby, Python, PHP, Node.js, Go, and Java, enabling easy integration of New Relic monitoring into IronWorker tasks.

Q4: Are there alternatives to New Relic for monitoring IronWorker tasks?

A: Alternative APM tools include Datadog, AppDynamics, and Dynatrace. Evaluate your requirements and choose a solution that best fits your needs.

Prerequisites for the New Relic and IronWorker Integration

  1. IronWorker account - Sign up if you haven't already.
  2. New Relic account - Sign up if you don't have one.
  3. IronWorker CLI - Install it on your local machine.
  4. New Relic agent for your programming language - Download the appropriate agent.

Step 1: Configure New Relic agent in Docker

Start by installing the New Relic agent for your preferred programming language. For this tutorial, we'll use the New Relic agent for PHP. To install and configure, add the following commands to Dockerfile:

#Download and install New Relic PHP Agent
RUN curl -L <https://download.newrelic.com/php_agent/release/newrelic-php5-10.9.0.324-linux-musl.tar.gz> | tar -C /tmp -zx && \\
    NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 /tmp/newrelic-php5-*/newrelic-install install && \\
       sed -i -e 's/"REPLACE_WITH_REAL_KEY"/"YOUR_LICENCE_KEY"/' \\
     -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "YOUR_APP_NAME"/' \\
     -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \\
     -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \\
         /usr/local/etc/php/conf.d/newrelic.ini

#External startup mode requires a newrelic.cfg
RUN cp /etc/newrelic/newrelic.cfg.template /etc/newrelic/newrelic.cfg

Configure the above commands with your New Relic license key, app name, and other settings. Replace the placeholders with your actual credentials.

Step 2: Create hello.php

<?php
print("Hello World");
?>

Step 3: Package Your code in Docker Image

Create a Dockerfile:

FROM php:7.1.31-zts-alpine3.10

COPY ./hello.php /app/

WORKDIR /app

#Download and install New Relic PHP Agent
RUN \\
curl -L <https://download.newrelic.com/php_agent/release/newrelic-php5-10.9.0.324-linux-musl.tar.gz> | tar -C /tmp -zx && \\
    NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 /tmp/newrelic-php5-*/newrelic-install install && \\
       sed -i -e 's/"REPLACE_WITH_REAL_KEY"/"YOUR_LICENCE_KEY"/' \\
     -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "YOUR_APP_NAME"/' \\
     -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \\
     -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \\
         /usr/local/etc/php/conf.d/newrelic.ini

#External startup mode requires a newrelic.cfg
RUN cp /etc/newrelic/newrelic.cfg.template /etc/newrelic/newrelic.cfg

CMD /usr/bin/newrelic-daemon -c /etc/newrelic/newrelic.cfg; wait; php hello.php; sleep 60

Please note, we added “sleep 60” after running our php script due to the “harvest cycle”. The harvest cycle is 60 sec.

Build your docker image and push to Dockerhub:

docker build -t USERNAME/new_relic
docker push USERNAME/new_relic

Register the docker image with IronWorker:

iron register -name new_relic_worker USERNAME/new_relic

Step 4: Queue Your IronWorker Tasks

Once your worker is deployed, you can schedule it to run using the IronWorker CLI or the Iron.io dashboard. For example, to run your twilio_worker immediately:

iron worker queue new_relic_worker

Step 5: Monitor Tasks in New Relic

Once you start triggering tasks, you can monitor their performance and other metrics in the New Relic Dashboard. Follow these steps:

  1. Log in to your New Relic account.
  2. Click on the "APM & Services" tab in the top menu.
  3. Select your application from the list.
  4. Explore the available metrics, charts, and graphs to monitor your tasks performance.
Metrics and graphs from an example IronWorker project in New Relic
Metrics and graphs from an example IronWorker project in New Relic

Conclusion

Integrating IronWorker with New Relic allows you to monitor the performance of your tasks and microservices in real-time. By following the steps in this blog post, you can set up the integration and gain valuable insights into your application's performance. This, in turn, helps you identify bottlenecks, optimize resource usage, and improve overall system efficiency.

Have more questions on the integration? Write us at support@iron.io.

blank

About Korak Bhaduri

Korak Bhaduri, Director of Operations at Iron.io, has been on a continuous journey exploring the nuances of serverless solutions. With varied experiences from startups to research and a foundation in management and engineering, Korak brings a thoughtful and balanced perspective to the Iron.io blog.

Leave a Comment





This site uses Akismet to reduce spam. Learn how your comment data is processed.