Skip to content

Conversation

@bmorelli25
Copy link
Member

@bmorelli25 bmorelli25 commented Oct 22, 2019

For #616. Demo available here.

I'd like to backport this to 4.x. For 5.x, I'm guessing the best way is to just wait for the next release?

Screen Shot 2019-10-22 at 4 34 56 PM

@bmorelli25 bmorelli25 self-assigned this Oct 22, 2019
@bmorelli25 bmorelli25 changed the title [docs [docs] Documentation restructure Oct 22, 2019
Comment on lines 8 to 19
[[how-it-works]]
=== How does the Agent work?

Welcome to the APM Python agent docs.
The agent auto-instruments <<supported-technologies,supported technologies>> and records interesting events,
like HTTP requests and database queries. To do this, it {CONTENT_HERE}
This means that for the supported technologies, there are no code changes required.

The Elastic APM Python agent sends performance metrics and error logs to the APM Server.
It has built-in support for Django and Flask performance metrics and error logging, as well as generic support of other WSGI frameworks for error logging.
The Agent automatically {CONTENT_HERE}

These events, called Transactions and Spans, are sent to the APM Server.
The APM Server converts them to a format suitable for Elasticsearch, and sends them to an Elasticsearch cluster.
You can then use the APM app in Kibana to gain insight into latency issues and error culprits within your application.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of the things this PR aims to do is add in a section on how the agent does instrumentation. I've added some boilerplate text here to hopefully assist with this. There are two {CONTENT_HERE} sections above that I'll need one of you to fill out. Feel free to write something different or amend this as necessary.

I've also updated elastic/apm#146 with links to examples in other Agent's docs.

@bmorelli25 bmorelli25 marked this pull request as ready for review October 23, 2019 17:47
@bmorelli25
Copy link
Member Author

@beniwohli, think you'll have time for a review on this one and #619 at some point next week?

@beniwohli
Copy link
Contributor

@bmorelli25 I'll take a look today, and try to carve out some time tomorrow to write the "how we instrument" section.

Copy link
Contributor

@beniwohli beniwohli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LalmostGTM, awesome!

Copy link
Contributor

@basepi basepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once bmorelli25#1 is merged this looks great.

@bmorelli25
Copy link
Member Author

Moving the conversation to this PR:

@beniwohli, I moved the majority of your content to the Advanced topics section. I kept just few high-level paragraphs in the getting started section. Here's what I kept (feel free to edit)

[[how-it-works]]
=== How does the Agent work?

The Python Agent instruments your application to collect APM events in a few different ways:

To collect data about incoming requests and background tasks, the Agent integrates with <<supported-technologies,supported technologies>> to make use of hooks and signals provided by the framework.
These framework integrations require limited code changes in your application.

To collect data from database drivers, HTTP libraries etc.,
we instrument certain functions and methods in these libraries.
Instrumentations are set up automatically and do not require any code changes.

In addition to APM and error data,
the Python agent also collects system and application metrics in regular intervals.
This collection happens in a background thread that is started by the agent.

More detailed information on how the Agent works can be found in <<link-here>>.

cc @basepi

@basepi
Copy link
Contributor

basepi commented Nov 13, 2019

@bmorelli25 I think your changes are 👍 👍 -- it was definitely too technical for a Getting Started page, but valuable for a click-through, so this is perfect.

Instrumentations are set up automatically and do not require any code changes.

This is the only piece I'm unsure on -- technically you do need code changes, you have to import our library or add us to the INSTALLED_APPS -- maybe something like this?

Instrumentations are set up automatically and do not require any code changes, beyond the initial top-level setup.

^ I don't love that but I'm trying to stay succinct. Or maybe I'm being too picky on the details?

@bmorelli25
Copy link
Member Author

That's a good point @basepi. I had originally copied the "Instrumentations are set up automatically and do not require any code changes." sentece directly from Beni's PR. I like the change here though. I'll make it tomorrow unless @beniwohli has any objections.

@bmorelli25
Copy link
Member Author

Follow up question -- anything I can do to get the continuous-integration/appveyor/pr — AppVeyor build failed check to pass?

Copy link
Contributor

@beniwohli beniwohli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! Regarding windows tests, those are unfortunately somewhat flakey. I gave them another go, it's all green now.

@bmorelli25 bmorelli25 merged commit bb87169 into elastic:master Nov 14, 2019
@bmorelli25 bmorelli25 deleted the doc-restructure branch November 14, 2019 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants