Synthetic Test Simultaneously Returning OK and Not Found

I have a synthetic test running every minute from two locations. I’d expect that it should return 2 results per minute. What I’m observing though, is that it’s both returning an OK response and a “Not Found” response. I believe this service was fine the whole time. Additionally, it’s an API check, and the API does not have any type of redirect page. Has anyone else observed this?

SELECT count(*)  FROM SyntheticRequest WHERE monitorName = '...' TIMESERIES 1 minute FACET responseStatus

Hello @brett.barrett! This is Lela from New Relic Support. Does it look like the checks are going through on the Synthetics Results page? Are you able to share the monitor name so I can try and reproduce this in your account? Thank you!

Hey, thanks for your response. Yes, you can look at this one - MarcTech - Drupal via Infinite API Proxy - Ping. You will see that it has 0/60 checks failed, but every test shows a 202 and 404 response code simultaneously.

Hey @brett.barrett. Thanks for including those permalinks!

Ping monitors are the simplest type of monitor. They simply check to see if an application is online. You can see in the results of each check that some of the resources are reporting a 200 OK and others a 404 not found. These resources do not look to be vital to the success of the application which is why the checks are passing.

If you wish to collect more detail about your site I suggest looking into Scripted browser monitors. Scripted browser monitors are used for more sophisticated, customized monitoring. You can create a custom script that navigates your website, takes specific actions, and ensures specific resources are present.

I hope this is helpful. Please let us know if you have any further questions!

Hey there,

Thank you for your response. So, what I’m gleaning is that NR can show multiple Ping results based on the content loaded on that page? That sounds like a really bad practice - if an element on the page didn’t load, but everything else loaded fine and the HTTP response was a 200, it should only report a 200. When I have to write clauses that say both 200 + 404 are acceptable, how will a Ping monitor ever show me when my site is down (because I will miss the 404 from my NRQL)

Anyway, can you tell me what actually failed in that request? The overall result is a success, and NR sent both requests at the same exact time? So why is there 1 failure and 1 pass within the same check. I don’t have any text validation set up for this.

I am very familiar with Synthetics. I plan to have 1-min checks for Uptime (via Ping) and then 5-min checks for Functionality (scripted) across all of my key business functions.

Thank you for your time!

Wait, I can see it’s sending both a HEAD request and a GET request. I found an Advanced Setting for Bypass HEAD request so I’m going to try that out. The NR Ping documentation you linked doesn’t say anything about the types of requests sent. I assumed, poorly, that you’d only send GET requests.


image

Hey @brett.barrett - Thanks for sharing that! Appreciate you making sure that the whole community can learn from this.

1 Like