All Projects → pryin-io → pryin

pryin-io / pryin

Licence: MIT License
PryIn is an Application Performance Monitoring platform for your Elixir/Phoenix application.

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to pryin

Androidgodeye
An app performance monitor(APM) , like "Android Studio profiler", you can easily monitor the performance of your app real time in browser
Stars: ✭ 2,430 (+9620%)
Mutual labels:  profiler, apm, performance-monitoring
live dj
💿 Join or create video playlists to share a real-time experience with others! 🎧
Stars: ✭ 19 (-24%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+9024%)
Mutual labels:  profiler, apm, performance-monitoring
Papercups
Open-source live customer chat
Stars: ✭ 4,554 (+18116%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
Awesome Phoenix
🔥 Collection of awesome open-source apps made with Phoenix Framework
Stars: ✭ 481 (+1824%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
Phoenix In Action
Code snippets and examples from the book Phoenix in Action from Manning and Geoffrey Lessel
Stars: ✭ 60 (+140%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
Elixirbooks
List of Elixir books
Stars: ✭ 1,021 (+3984%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
Shorten api tutorial
🔗How to make a link shortener using Elixir, Phoenix and Mnesia
Stars: ✭ 60 (+140%)
Mutual labels:  phoenix, elixir-phoenix, phoenix-framework
zero-to-graphql-using-elixir
The purpose of this example is to provide details as to how one would go about using GraphQL with the Elixir Language.
Stars: ✭ 20 (-20%)
Mutual labels:  phoenix, phoenix-framework
gringotts payment
Demo Phoenix app showing gringotts payment library integrations.
Stars: ✭ 24 (-4%)
Mutual labels:  phoenix, phoenix-framework
phoenix-liveview-15m.twitter
Based on the "real-time Twitter clone in 15 minutes with LiveView and Phoenix", from Chris McCord
Stars: ✭ 40 (+60%)
Mutual labels:  phoenix, phoenix-framework
pokerex client
Elm client for PokerEx project
Stars: ✭ 39 (+56%)
Mutual labels:  phoenix, phoenix-framework
xrayvision
Utilities and wrappers for using AWS X-Ray with Python
Stars: ✭ 23 (-8%)
Mutual labels:  apm, performance-monitoring
uptrace
Open source APM: OpenTelemetry traces, metrics, and logs
Stars: ✭ 1,187 (+4648%)
Mutual labels:  apm, performance-monitoring
phoenix assets webpack
Asset Pipeline with Webpack on Phoenix
Stars: ✭ 52 (+108%)
Mutual labels:  phoenix, phoenix-framework
phx raws
Raw websocket server on top of Phoenix.
Stars: ✭ 27 (+8%)
Mutual labels:  elixir-phoenix, phoenix-framework
Realtime
Listen to your to PostgreSQL database in realtime via websockets. Built with Elixir.
Stars: ✭ 4,278 (+17012%)
Mutual labels:  phoenix, phoenix-framework
lambda-memory-performance-benchmark
Performance and cost benchmark tool for AWS Lambda on memory sizes 📈⏱
Stars: ✭ 60 (+140%)
Mutual labels:  apm, performance-monitoring
poker ex
Texas Hold 'Em app written in Elixir with Phoenix and OTP
Stars: ✭ 58 (+132%)
Mutual labels:  phoenix, phoenix-framework
mindwendel
Create a challenge. Ready? Brainstorm. mindwendel helps you to easily brainstorm and upvote ideas and thoughts within your team.
Stars: ✭ 22 (-12%)
Mutual labels:  phoenix, elixir-phoenix

PryIn

Build Status Hex pm

PryIn is a performance metrics platform for your Phoenix application.

Installation

  1. Sign up for a PryIn account and create a new project there.
  2. Add pryin to your dependencies in mix.exs:
def deps do
  [
    {:pryin, "~> 1.0"}
  ]
end
  1. If you define an applications list in your mix.exs, add :pryin there, too:
def applications do
  [..., :pryin]
end
  1. Add general configuration for the pryin app in config/config.exs:
config :pryin,
  otp_app: :my_app,
  api_key: "your_secret_api_key",
  enabled: false,
  env: :dev

config :my_app, MyApp.Repo,
  loggers: [PryIn.EctoLogger, Ecto.LogEntry]

config :my_app, MyApp.Endpoint,
  instrumenters: [PryIn.Instrumenter]
  1. Enable PryIn in the environments you want to collect metrics for. If you want to collect data for the production environment, for example, add the following to config/prod.exs:
config :pryin,
  enabled: true,
  env: :prod

Possible values for env are :dev, :staging or :prod.

  1. Add the PryIn plug to your application's endpoint (lib/my_app/endpoint.ex) just before the router plug:
...
plug PryIn.Plug
plug MyApp.Router
  1. To collect data about Ecto queries, view renderings or custom instrumentation in your channel joins, you need to join the transport's trace first:
def join("rooms:lobby", message, socket) do
  PryIn.join_trace(socket.transport_pid, self())
  Repo.all(...)
  ...

This is only neccessary in your channel join functions, because the channel process does not exist yet when tracing starts.

Configuration

Above steps will give you a basic installation with standard configuration. If you want to tweak some settings, here are all the possible configuration options:

key default description
:otp_app - The name of your application. Mainly used to get your application's version.
:api_key - Your project's api key. You can find this on PryIn under "Settings".
:enabled - Whether to forward data to PryIn. Should be set to true in all enviroments you want to collect data in.
:env - Name of the current environment. Can be one of :dev, :staging or :prod.
:forward_interval 1000 Duration of forward intervals in milliseconds. During the interval, data is collected and stored locally. At the end of the interval, the data is then forwared to PryIn.
:max_interactions_for_interval 100 Maximum number of traces stored locally during each forward interval. If this limit is reached, new traces will be dropped until data is sent to PryIn and the store is cleared.
:max_tracked_metric_values_for_interval 100 Maximum number of Tracked Metric values stored locally during each forward interval. If this limit is reached, new values will be dropped until data is sent to PryIn and the store is cleared.
:node_name node() Name of the current node. BEAM metrics will be grouped under this value.

Further reading

You can find more details (about background jobs, custom instrumentation, and a lot more), in PryIn's FAQs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].