Skip to content

Commit

Permalink
Merge branch 'develop' into NR-322277-media-streaming
Browse files Browse the repository at this point in the history
  • Loading branch information
adutta-newrelic committed Feb 19, 2025
2 parents 10fd09a + e4a85b5 commit 52f3f9f
Show file tree
Hide file tree
Showing 231 changed files with 51,472 additions and 435 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ The following frameworks are supported:
<td>
Yii
</td>
<td>2.0</td>
<td>1.1, 2.0</td>
<td></td>
</tr>

Expand Down Expand Up @@ -590,7 +590,7 @@ The following databases and libraries are supported:
</td>

<td>
Oracle
[PHPUnit](/docs/agents/php-agent/frameworks-libraries/analyze-phpunit-test-data-insights)
</td>
</tr>

Expand All @@ -600,7 +600,7 @@ The following databases and libraries are supported:
</td>

<td>
[PHPUnit](/docs/agents/php-agent/frameworks-libraries/analyze-phpunit-test-data-insights)
PDO Drivers
</td>
</tr>

Expand All @@ -610,7 +610,7 @@ The following databases and libraries are supported:
</td>

<td>
PDO Drivers
Postgres
</td>
</tr>

Expand All @@ -620,7 +620,7 @@ The following databases and libraries are supported:
</td>

<td>
Postgres
[Predis](/docs/agents/php-agent/frameworks-libraries/predis)
</td>
</tr>

Expand All @@ -630,7 +630,7 @@ The following databases and libraries are supported:
</td>

<td>
[Predis](/docs/agents/php-agent/frameworks-libraries/predis)
RabbitMQ (php-amqplib 3.7 library only)
</td>
</tr>

Expand Down Expand Up @@ -659,6 +659,15 @@ The following databases and libraries are supported:
ODBC (PDO Driver only)
</td>

<td>
SQS (aws-sdk-php 3 library only)
</td>
</tr>
<tr>
<td>
Oracle
</td>

<td>
Sybase (PDO Driver only)
</td>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
subject: PHP agent
releaseDate: '2025-02-18'
version: 11.6.0.19
downloadLink: 'https://download.newrelic.com/php_agent/archive/11.6.0.19'
features: ['Add aws-sdk-php 3 SQS support', 'Add php-amqplib 3.7 RabbitMQ support', 'Add Yii 1.1 RabbitMQ support', 'Add message segment MessageBroker functionality']
bugs: ['Fixes memory leak in Laravel Queue Instrumentation', 'Fixes nr_header_create_distributed_trace_map memory leak', 'Fixes daemon to enable go_vet check']
security: ['Upgrade Golang version to 1.23.6']
---

## New Relic PHP agent v11.6.0.19

### New features

* Added support for aws-sdk-php SQS version 3 instrumentation
* Added support for php-amqplib version 3.7 RabbitMQ instrumentation
* Added support for Yii version 1.1 instrumentation
* The agent will now generate MessageBroker metrics and attributes

### Security

* Daemon Golang version upgraded to 1.23.6

### Bug fixes

* Fixed daemon to enable `go vet` check on pull requests
* Fixed memory leak in Laravel Queue Instrumentation
* Fixed nr_header_create_distributed_trace_map memory leak

### Support statement

* New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. For more information on supported agent versions and EOL timelines, check out our [New Relic PHP Agent EOL policy](https://docs.newrelic.com/docs/apm/agents/php-agent/getting-started/php-agent-eol-policy/).
* The [PHP agent compatibility and requirements](https://docs.newrelic.com/docs/apm/agents/php-agent/getting-started/php-agent-compatibility-requirements/) page should be consulted for the latest information on supported PHP versions and platforms.

<Callout variant="important">
**For installations using an unsupported PHP version or platform, it's highly recommended that you disable the auto-update mechanisms for the PHP agent packages.** This can be done by adding the PHP agent packages to an exclusion list for package upgrades. Or you could version pin the PHP agent package to an agent version that supports the old, unsupported feature(s). Failure to prevent upgrades may result in a newer agent release being installed and the removal of support for the required, unsupported features. This would disrupt APM data collection.

The PHP agent packages that are affected are:

* newrelic-php5
* newrelic-php5-common
* newrelic-daemon
</Callout>
67 changes: 64 additions & 3 deletions src/i18n/content/es/docs/apis/rest-api-v2/migrate-to-nrql.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,82 @@ FROM Metric
WHERE appId = $APP_ID AND metricTimesliceName = 'HttpDispatcher'
```

\| Valor (RPM) | Función NRQL | | -------------------------- | ------------------------------------------------------------------------------------------------- | | `average_response_time` | `average(newrelic.timeslice.value) * 1000` | | `calls_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` | | `call_count` | `count(newrelic.timeslice.value)` | | `min_response_time` | `min(newrelic.timeslice.value) * 1000` | | `max_response_time` | `max(newrelic.timeslice.value) * 1000` | | `average_exclusive_time` | `average(newrelic.timeslice.value['totalExclusive'] / newrelic.timeslice.value['count']) * 1000` | | `average_value` | `average(newrelic.timeslice.value)` | | `total_call_time_per_minute` | `rate(sum(newrelic.timeslice.value), 1 minute)` | | `requests_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` | | `standard_deviation` | `stddev(newrelic.timeslice.value) * 1000` | | `average_time` | `average(newrelic.timeslice.value) * 1000` | | `count` | `count(newrelic.timeslice.value)` | | `used_bytes_by_host` | `average(newrelic.timeslice.value) * 1024 * 1024` | | `used_mb_by_host` | `average(newrelic.timeslice.value)` | | `total_used_mb` | `sum(newrelic.timeslice.value)` | | `average_call_time` | `average(newrelic.timeslice.value) * 1000` | | `total_value` | `sum(newrelic.timeslice.value)` | | `min_value` | `min(newrelic.timeslice.value)` | | `max_value` | `max(newrelic.timeslice.value)` | | `rate` | `rate(sum(newrelic.timeslice.value), 1 second)` | | `throughput` | `rate(count(newrelic.timeslice.value), 1 second)` | | `as_percentage` | `average(newrelic.timeslice.value) * 100` | | `errors_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` | | `error_count` | `count(newrelic.timeslice.value)` | | `total_time` | `sum(newrelic.timeslice.value) * 1000` | | `sessions_active` | `average(newrelic.timeslice.value)` | | `total_visits` | `sum(newrelic.timeslice.value)` | | `percent` | `average(newrelic.timeslice.value) * 100` | | `percent(CPU/User Time)` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` | | `time_percentage` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` | | `utilization` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` | | `visits_percentage` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` |
| Value (RPM) | NRQL Function |
| ---------------------------- | ------------------------------------------------------------------------------------------------ |
| `average_response_time` | `average(newrelic.timeslice.value) * 1000` |
| `calls_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` |
| `call_count` | `count(newrelic.timeslice.value)` |
| `min_response_time` | `min(newrelic.timeslice.value) * 1000` |
| `max_response_time` | `max(newrelic.timeslice.value) * 1000` |
| `average_exclusive_time` | `average(newrelic.timeslice.value['totalExclusive'] / newrelic.timeslice.value['count']) * 1000` |
| `average_value` | `average(newrelic.timeslice.value)` |
| `total_call_time_per_minute` | `rate(sum(newrelic.timeslice.value), 1 minute)` |
| `requests_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` |
| `standard_deviation` | `stddev(newrelic.timeslice.value) * 1000` |
| `average_time` | `average(newrelic.timeslice.value) * 1000` |
| `count` | `count(newrelic.timeslice.value)` |
| `used_bytes_by_host` | `average(newrelic.timeslice.value) * 1024 * 1024` |
| `used_mb_by_host` | `average(newrelic.timeslice.value)` |
| `total_used_mb` | `sum(newrelic.timeslice.value)` |
| `average_call_time` | `average(newrelic.timeslice.value) * 1000` |
| `total_value` | `sum(newrelic.timeslice.value)` |
| `min_value` | `min(newrelic.timeslice.value)` |
| `max_value` | `max(newrelic.timeslice.value)` |
| `rate` | `rate(sum(newrelic.timeslice.value), 1 second)` |
| `throughput` | `rate(count(newrelic.timeslice.value), 1 second)` |
| `as_percentage` | `average(newrelic.timeslice.value) * 100` |
| `errors_per_minute` | `rate(count(newrelic.timeslice.value), 1 minute)` |
| `error_count` | `count(newrelic.timeslice.value)` |
| `total_time` | `sum(newrelic.timeslice.value) * 1000` |
| `sessions_active` | `average(newrelic.timeslice.value)` |
| `total_visits` | `sum(newrelic.timeslice.value)` |
| `percent` | `average(newrelic.timeslice.value) * 100` |
| `percent(CPU/User Time)` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` |
| `time_percentage` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` |
| `utilization` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` |
| `visits_percentage` | `100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS` |

Si la función incluye `$TIME_WINDOW_IN_SECONDS`, significa que debes reemplazarla con la ventana de tiempo que deseas consultar.

Por ejemplo, si consulta un intervalo de tiempo de 30 minutos, reemplazará `$TIME_WINDOW_IN_SECONDS` por `1800`.

### Apdex métricas

\| Valor (RPM) | Función NRQL | | ------------- | ---------------------------------------------------------------------------------- | | `score` | `apdex(newrelic.timeslice.value)` | | `s` | `apdex(newrelic.timeslice.value)` o `count(newrelic.timeslice.value)` | | `t` | `apdex(newrelic.timeslice.value)` o `sum(newrelic.timeslice.value)` | | `f` | `apdex(newrelic.timeslice.value)` o `sum(newrelic.timeslice.value['totalExclusive'])`| | `count` | `apdex(newrelic.timeslice.value)` | | `value` | `apdex(newrelic.timeslice.value)` | | `threshold` | `max(newrelic.timeslice.value)` | | `threshold_min` | `min(newrelic.timeslice.value)` |
| Value (RPM) | NRQL Function |
| --------------- | ------------------------------------------------------------------------------------- |
| `score` | `apdex(newrelic.timeslice.value)` |
| `s` | `apdex(newrelic.timeslice.value)` o `count(newrelic.timeslice.value)` |
| `t` | `apdex(newrelic.timeslice.value)` o `sum(newrelic.timeslice.value)` |
| `f` | `apdex(newrelic.timeslice.value)` o `sum(newrelic.timeslice.value['totalExclusive'])` |
| `count` | `apdex(newrelic.timeslice.value)` |
| `value` | `apdex(newrelic.timeslice.value)` |
| `threshold` | `max(newrelic.timeslice.value)` |
| `threshold_min` | `min(newrelic.timeslice.value)` |

### Métricas para EndUser &amp; Mobile

Estas métricas devolverán el mismo resultado que obtendría de la REST API v2, pero algunos resultados pueden diferir de lo que ve en la New Relic UI. Esto se debe a que la UI emplea evento en lugar de datos de intervalo de tiempo. Si desea obtener los mismos resultados que la UI, debe consultar el evento directamente.

\| Valor (RPM) | Función NRQL | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `average_response_time` | `sum(newrelic.timeslice.value) / count(newrelic.timeslice.value) * 1000 `| | `error_percentage` | `(filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'EndUser/errors') / filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'Browser'))`| | `average_fe_response_time` | `sum(newrelic.timeslice.value['totalExclusive']) / count(newrelic.timeslice.value) * 1000` | | `average_be_response_time` | `1000 * (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive'])) / count(newrelic.timeslice.value)` | | `average_network_time` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / count(newrelic.timeslice.value)` | | `total_network_time` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares']))` | | `network_time_percentage` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / $TIME_WINDOW_IN_SECONDS` | | `total_fe_time` | `sum(newrelic.timeslice.value['totalExclusive'])` | | `fe_time_percentage` | `100 * sum(newrelic.timeslice.value['totalExclusive']) / $TIME_WINDOW_IN_SECONDS` | | `average_dom_content_load_time` | `average(newrelic.timeslice.value) * 1000` | | `average_queue_time` | `average(newrelic.timeslice.value['totalExclusive']) * 1000` | | `total_queue_time` | `sum(newrelic.timeslice.value['totalExclusive']) * 1000` | | `total_dom_content_time` | `sum(newrelic.timeslice.value) * 1000` | | `total_app_time` | `sum(newrelic.timeslice.value['sumOfSquares'])` | | `average_app_time` | `sum(newrelic.timeslice.value['sumOfSquares']) / count(newrelic.timeslice.value)` | | `average_sent_bytes` | `sum(newrelic.timeslice.value['totalExclusive']) * 1000` | | `average_received_bytes` | `1000 * sum(newrelic.timeslice.value) / count(newrelic.timeslice.value)` | | `launch_count` | `count(newrelic.timeslice.value)` |
| Value (RPM) | NRQL Function |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `average_response_time` | `sum(newrelic.timeslice.value) / count(newrelic.timeslice.value) * 1000` |
| `error_percentage` | `(filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'EndUser/errors') / filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'Browser'))` |
| `average_fe_response_time` | `sum(newrelic.timeslice.value['totalExclusive']) / count(newrelic.timeslice.value) * 1000` |
| `average_be_response_time` | `1000 * (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive'])) / count(newrelic.timeslice.value)` |
| `average_network_time` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / count(newrelic.timeslice.value)` |
| `total_network_time` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares']))` |
| `network_time_percentage` | `(sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / $TIME_WINDOW_IN_SECONDS` |
| `total_fe_time` | `sum(newrelic.timeslice.value['totalExclusive'])` |
| `fe_time_percentage` | `100 * sum(newrelic.timeslice.value['totalExclusive']) / $TIME_WINDOW_IN_SECONDS` |
| `average_dom_content_load_time` | `average(newrelic.timeslice.value) * 1000` |
| `average_queue_time` | `average(newrelic.timeslice.value['totalExclusive']) * 1000` |
| `total_queue_time` | `sum(newrelic.timeslice.value['totalExclusive']) * 1000` |
| `total_dom_content_time` | `sum(newrelic.timeslice.value) * 1000` |
| `total_app_time` | `sum(newrelic.timeslice.value['sumOfSquares'])` |
| `average_app_time` | `sum(newrelic.timeslice.value['sumOfSquares']) / count(newrelic.timeslice.value)` |
| `average_sent_bytes` | `sum(newrelic.timeslice.value['totalExclusive']) * 1000` |
| `average_received_bytes` | `1000 * sum(newrelic.timeslice.value) / count(newrelic.timeslice.value)` |
| `launch_count` | `count(newrelic.timeslice.value)` |

### Seriales temporales y resúmenes

Expand Down
Loading

0 comments on commit 52f3f9f

Please sign in to comment.