Illuminate Critical PHP Code with Custom Spans

As well as adding new sensors, Instana is constantly improving and enhancing the existing ones. Adding support for new frameworks and versions along with adding new functionality, we endeavour to keep all the sensors in functional parity.

The PHP sensor is no exception to this rule, supporting from PHP versions 5.3 through to 7.2 (32 bit and 64 bit) across a number of SAPIs:

  • Apache mod_php
  • Limited support for CLI

Take a look at the PHP Management documentation for complete details of the capabilities.

The PHP runtime is automatically detected by the Instana agent and the sensor dynamically loaded to gather both time series metrics and automatic code instrumentation for tracing, all without the need for any code changes.

Tracing PHP Applications

Every request is automatically traced end to end. A trace is made up of a number of spans as the request traverses across different services and calls are made to data stores and external services.

The automatic tracing will capture all the supported entry and exit calls along with their stack traces. What if you have a critical bit of code you want more details on, such as timing, runtime data and error messages?

Bringing the PHP sensor into functional parity with the other supported language runtime sensors, the latest version of the PHP sensor now has the capability to add your own custom spans to the automatically captured traces. These custom spans will appear inline with the automatically captured spans. Here is an example of how you can easily achieve this.

// Instana Tracer only available when auto instrumented

if(class_exists(‘InstanaTracer’)) {
$tracer = new InstanaTracer();
$span = $tracer->createSpan(‘funky’);
$span->annotate(‘key’, ‘value’);
$span->annotate(‘foo’, ‘bar’);

// interesting bit of code ;-)

Using a code snippet similar to the one above around an interesting function call will produce a trace like the one below.

PHP trace with custom span

The entry into PHP and the call via PDO to the MySQL database are automatically traced, notice that the custom span created with the snipped above has been included in the trace.

Shine a Light Into PHP and Microservices

With microservices most of the code executed belongs to the frameworks being used, your own code making up just a small percentage. Instana’s automatic instrumentation will provide plenty of insight into the execution of both. However, there may be occasions when a little extra insight is needed to optimise a critical code block. The PHP sensor now has that capability with custom spans, adding the ability to shine a little light into the darkest corners of code execution.

Part 3: Writing a Kubernetes Operator in Java In the previous post of this series, we created an example Quarkus project using the Kubernetes client extension. The example retrieved a list of...
Part 2: Getting Started with the Quarkus Kubernetes Client Extension This is the second Blog post in our series on writing a Kubernetes operator in Java. The first post gave a general...
Part 1: What is a Kubernetes Operator? We recently published the first alpha version of our Instana Agent Operator, built with Quarkus and the upcoming Quarkus Kubernetes Client Extension. In this Blog...

Start your FREE TRIAL today!

Automatic Application Performance Monitoring (APM) solutions for microservices, Instana has developed the automatic monitoring and AI-based analysis DevOps needs to manage the performance of modern applications. Instana is the only APM solution that automatically discovers, maps and visualizes microservice applications without continuous additional engineering. Customers using Instana achieve operational excellence and deliver better software faster. Visit to learn more.