PHP Laravel
Prerequisites
New Relic PHP agent version >= 10.0.0
Installation
Following are the steps to install the New Relic agent and connect it with CubeAPM. If New Relic agent is already installed, you can jump to step 3.
-
Follow this link to install New Relic agent: https://docs.newrelic.com/docs/apm/agents/php-agent/installation/php-agent-installation-overview.
-
Configure the agent (the config file is generally available at
/etc/php/<php_version>/mods-available/newrelic.ini
).newrelic.ininewrelic.license = "ABC4567890ABC4567890ABC4567890ABC4567890"
newrelic.appname = "<app_name>" -
Set up a proxy for New Relic agent.
New Relic agent has a limitation: it only send data over HTTPS on port 443. However, CubeAPM receives data on port 3130 over HTTP. To bridge this gap, you need to set up a proxy (load balancer or HTTP reverse proxy) that:
- Accepts HTTPS traffic on port 443 from the New Relic agent
- Forwards this traffic to your CubeAPM server on port 3130 over HTTP
For example, you can set up an AWS Application Load Balancer (ALB) with the following configuration:
-
Listener Configuration:
- Protocol: HTTPS
- Port: 443
- Domain name:
cubeapm-newrelic.yourdomain.com
(example domain for your load balancer) - SSL/TLS Certificate: Certificate for
cubeapm-newrelic.yourdomain.com
or\*.yourdomain.com
(from ACM or imported)
-
Target Group Configuration:
- Protocol: HTTP
- Port: 3130
- Target: Your CubeAPM server IP or DNS name (e.g.,
cubeapm-server.yourdomain.com
) - Health check path:
/health
-
Security Groups:
-
Load Balancer Security Group:
- Inbound rule: Allow HTTPS (port 443) from your application servers' IPs or security groups
- Outbound rule: Allow HTTP (port 3130) to the CubeAPM server's IP or security group
-
CubeAPM Server Security Group:
- Inbound rule: Allow HTTP (port 3130) from the load balancer's security group
- Outbound rule: Allow all traffic (or as per your security requirements)
-
The New Relic agent will connect to the load balancer's domain name (
cubeapm-newrelic.yourdomain.com
in this example), which will then forward the traffic to your CubeAPM server on port 3130.infoFor more details on proxy setup options, refer to the New Relic integration documentation.
-
Tell the agent to connect with CubeAPM instead of New Relic:
newrelic.ini# Use your load balancer\'s domain name here
newrelic.daemon.collector_host = "<cubeapm-newrelic.yourdomain.com>"
# remove irrelevant spans from traces (optional but highly recommended)
newrelic.transaction_tracer.detail = 0
Sample App
A working example is available at https://github.com/cubeapm/sample_app_php_laravel/tree/newrelic
Troubleshooting
The following can be used for troubleshooting:
newrelic.loglevel = "debug"
# newrelic.logfile = "/var/log/newrelic/php_agent.log"
newrelic.daemon.loglevel = "debug"
# newrelic.daemon.logfile = "/var/log/newrelic/newrelic-daemon.log"