Code Monkey home page Code Monkey logo

apm-agent-ios's Introduction

macos

apm-agent-ios : APM Agent for iOS

This is the official iOS package for Elastic APM

Documentation

Visit elastic.co for the iOS agent documentation.

To build this project's documentation locally, you must first clone the elastic/docs repository. Then run the following commands:

# Set the location of your repositories
export GIT_HOME="/<fullPathToYourRepos>"
# Build the APM iOS documentation
$GIT_HOME/docs/build_docs --doc $GIT_HOME/apm-agent-ios/docs/index.asciidoc --chunk 1 --open

Notes

disabling noisy logs

  • CoreTelephony in simulator xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony

  • Layout Constraints warnings xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.UIKit

apm-agent-ios's People

Contributors

alexanderwert avatar amannocci avatar bmorelli25 avatar bryce-b avatar dependabot[bot] avatar likethesalad avatar ollyhowell avatar paliferka avatar reakaleek avatar v1v avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apm-agent-ios's Issues

Support for Api key authentication

Currently the agent support secret tokens but as far as I can see, does not support api key authentication unless using OTEL_EXPORTER_OTLP_HEADERS.

The generateMetadata function would need to be modified to supply a header of format "Authorization: ApiKey XXXX" if providing an api key.

Add instrumentation configuration

The instrumentation provided in otel-swift and this agent project are enabled by default with no way to disable them.

Add configuration for instrumentation:

  • NetworkStatus
  • CPUSampler
  • MemorySampler
  • UIApplicationInstrumentation
  • ViewControllerInstrumentation

Networking errors showing up as "HTTP 0" in charts

Screen Shot 2021-06-30 at 2 27 30 PM

The network request failed due to a network error : "Network Connection was Lost"
so there shouldn't be an http response associated.

Screen Shot 2021-06-30 at 2 33 21 PM

Here you can see `http 0` in the chart, which doesn't make a lot of sense.

Add monitor for app launching

Hook into application lifecycle notifications and record them.

There are two application lifecycle pathways: via the "NSApplicationDelegate", and SwiftUI App object.
It may only be necessary to hook into one of these lifecycles.

Re-enable button tap actions

  • start transaction on the tap action (and finish it on ViewDidAppear on the controller)
  • use a timer to finish a transaction if no action happens afterwards
  • research on ways to properly name transactions (resulting from button clicks)

Verify Jenkins' Mac-Minis have correct tools

  • create buildable project in apm-agent-ios
  • create jenkins job for apm-agent-ios using JJB/JJBB in apm-ci
  • follow up with infra if any changes needed for mac-stadium mac-minis.

Pre-GA documentation tasks

This is a high-level overview of the three documentation phases we'll need to go through prior to GAing the IOS agent documentation. Ping me whenever you're ready for one of these phases and I'll kick things off.

Phase one

Provide a home for documentation to live as the repo grows. This isn't public and will be disconnected from the doc build for now.

Phase two

We've got some content now. Let's add apm-agent-ios to Elastic's doc build (user facing).

Phase three

Time to hook the IOS Reference into the rest of the Stack documentation.

Add auto-instrumentation of URLSessionTaskDelegate

The current URLSession auto-instrumentation requires the manual use of DDURLSessionDelegate when creating a new URLSession. It's also not possible to instrument the shared URLSession object using this method.
It should be possible to intercept the creation of NSURLSessions and inject an instrumentation specific delegate object that also forwards delegate in the parameter list.

add an agent user-agent to APM server connections

In order to help debugging and gathering usage statistics, agents should use one of the following values for the User-Agent HTTP header:

  • Header value should start with agent github repository as prefix and version apm-agent-${language}/${agent.version}.
  • If both service.name and service.version are set, append (${service.name} ${service.version})
  • If only service.name is set, append (${service.name})

An executable gherkin specification is also provided in user_agent.feature.

Examples:

  • apm-agent-java/v1.25.0
  • apm-agent-ruby/4.4.0 (myservice)
  • apm-agent-python/6.4.0 (myservice v42.7)

reference spec : https://github.com/elastic/apm/blob/main/specs/agents/transport.md

UI todo catch-all

Use this issue as a list of todos under the umbrella of UI for a 7.14 release.

the currently plan is to create a new button linking to the exploratory view from the standard apm view.

I'd really like to see some pre-defined exploratory-view settings, but it sounds like that might not be an options. We may need to write some docs on how to build exploratory views for recommended charts.

Documentation Catch-all

Add specific elements to create documentation for below. TBD whether they should be stored in-repo or elsewhere.

  • installation instructions (general)
  • how to initialize in an objective-c project
  • initialize in a swift project w/o swift ui
  • initialize in a swift project with swift ui

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.