APM

Open Source Application Performance Monitoring

Already housing logs and system metrics in Elasticsearch? Expand to application metrics with Elastic APM. Four lines of code lets you see a bigger picture to quickly fix issues and feel good about the code you push.

Get the Elastic APM experience. Try It Out

New Elastic APM is now in beta and introduces a new developer-focused UI to drill into performance issues and resolve them, all with minimal effort. Read More

The Dashboards You Love, Now APM-Flavored

Elastic APM instruments your applications to ship performance metrics to Elasticsearch for visualization in Kibana with pre-configured dashboards.

And since data is stored as raw documents in Elasticsearch, your application metrics can coexist with your infrastructure logs, server metrics, and security events, making it easy to explore all of your data in one place.

And It Gets Better with a Curated UI

A dedicated APM UI lets you identify bottlenecks and zero in on problematic changes at the code level. As a result, you get better, more efficient code that leads to a speedier develop-test-deploy loop, faster applications, and better customer experiences.

It's Developer-Friendly,
Language-Friendly

Elastic APM ships with support for Node.js and Python — and there are many more programming languages, including Ruby and JavaScript, on the way. Plus, it's extensible. If you don't see what you need, you can build it or leverage the open source community.

Just Four Lines of Code Will Get You Started

Grab a fresh installation of the Elastic Stack and a bit of code to instrument your app with agents and deploy a server that sends your data to Elasticsearch.
In Elasticsearch install directory:
Once Elasticsearch starts, in Elasticsearch install directory (separate window):

Note the password for elastic user as <es_pw>

Note the password for kibana user as <kibana_pw>

In Kibana install directory:

Modify config/kibana.yml to set credentials for Elasticsearch

elasticsearch.username: "kibana"
elasticsearch.password: "<kibana_pw>"
            
In APM Server install directory:

(optional) This imports APM dashboards to Kibana. If you are using X-Pack Security, add -E output.elasticsearch.username=user -E output.elasticsearch.password=pass to the command.

Install the APM Agent for Node.js as a dependency to your application.

Configure the agent to run inside your application process.

// Add this to the VERY top of the first file loaded in your app
var apm = require('elastic-apm-node').start({
  // Required app name (allowed characters:a-z, A-Z, 0-9, -, _, and space)
  appName: '',
  // Use if APM Server requires a token
  secretToken: '',
  // Set custom APM Server URL (default: http://localhost:8200)
  serverUrl: ''
})
				
Open browser @
http://localhost:5601 (login: elastic/<es_pw>)
Launch the APM app OR navigate to the APM-* dashboards
What just happened?

The APM agent installed in your application collects and streams application performance metrics to your APM server, where they are processed and stored in Elasticsearch. In a matter of minutes you can start viewing these performance metrics either in prebuilt dashboards or in the dedicated APM UI.

Didn't work for you?

Please refer to the APM documentation.

In Elasticsearch install directory:
Once Elasticsearch starts, in Elasticsearch install directory (separate window):

Note the password for elastic user as <es_pw>

Note the password for kibana user as <kibana_pw>

In Kibana install directory:

Modify config/kibana.yml to set credentials for Elasticsearch

elasticsearch.username: "kibana"
elasticsearch.password: "<kibana_pw>"
            
In APM Server install directory:

(optional) This imports APM dashboards to Kibana. If you are using X-Pack Security, add -E output.elasticsearch.username=user -E output.elasticsearch.password=pass to the command.

Install the APM Agent for Django as a dependency to your application.

Configure the agent to run inside your application process.

# settings.py
INSTALLED_APPS = (
   #...
   'elasticapm.contrib.django',
)
ELASTIC_APM = {
   'APP_NAME': '<APP-NAME>', //a-z, A-Z, 0-9, -, _, and space allowed
   'SECRET_TOKEN': '<SECRET-TOKEN>',
}
# To send performance metrics, add our tracing middleware:
MIDDLEWARE = (
   'elasticapm.contrib.django.middleware.TracingMiddleware',
   #...
)
                
Open browser @
http://localhost:5601 (login: elastic/<es_pw>)
Launch the APM app OR navigate to the APM-* dashboards
What just happened?

The APM agent installed in your application collects and streams application performance metrics to your APM server, where they are processed and stored in Elasticsearch. In a matter of minutes you can start viewing these performance metrics either in prebuilt dashboards or in the dedicated APM UI.

Didn't work for you?

Please refer to the APM documentation.

In Elasticsearch install directory:
Once Elasticsearch starts, in Elasticsearch install directory (separate window):

Note the password for elastic user as <es_pw>

Note the password for kibana user as <kibana_pw>

In Kibana install directory:

Modify config/kibana.yml to set credentials for Elasticsearch

elasticsearch.username: "kibana"
elasticsearch.password: "<kibana_pw>"
			
In APM Server install directory:

(optional) This imports APM dashboards to Kibana. If you are using X-Pack Security, add -E output.elasticsearch.username=user -E output.elasticsearch.password=pass to the command.

Install the APM Agent for Flask as a dependency to your application.

Configure the agent to run inside your application process.

# initialize using environment variables from elasticapm.contrib.flask import ElasticAPM
app = Flask(__name__)
apm = ElasticAPM(app)
# configure to use ELASTIC_APM in your application's settings from elasticapm.contrib.flask import ElasticAPM
app.config['ELASTIC_APM'] = {
    # allowed app_name chars: a-z, A-Z, 0-9, -, _, and space from elasticapm.contrib.flask
   'APP_NAME': '',
   'SECRET_TOKEN': '',
}
apm = ElasticAPM(app)
				
Open browser @
http://localhost:5601 (login: elastic/<es_pw>)
Launch the APM app OR navigate to the APM-* dashboards
What just happened?

The APM agent installed in your application collects and streams application performance metrics to your APM server, where they are processed and stored in Elasticsearch. In a matter of minutes you can start viewing these performance metrics either in prebuilt dashboards or in the dedicated APM UI.

Didn't work for you?

Please refer to the APM documentation.

APM is Just One Way to Slice Your Data

Have security events? Website or server logs? Documents with tons of text? Centralize it all into the Elastic Stack to expand your analyses, lower operational costs, and make your use case even richer.

Logging

Fast and scalable logging, that won't quit.

Learn More

Metrics

Do the numbers: CPU, memory, and more.

Learn More

Site Search

Easily create a great search experience for your site.

Learn More

Security Analytics

Interactive investigation at speed and scale.

Learn More

App Search

Search across documents, geo data, and more.

Learn More