{"id":13394885,"url":"https://github.com/randy-girard/app_perf","last_synced_at":"2026-01-18T12:35:01.565Z","repository":{"id":53064646,"uuid":"57456850","full_name":"randy-girard/app_perf","owner":"randy-girard","description":"Open source application performance monitoring tool with emphasis on ease of setup and use. Providing similar functionality like NewRelic/AppNeta/Skylight etc. ","archived":false,"fork":false,"pushed_at":"2023-06-14T13:02:04.000Z","size":9840,"stargazers_count":388,"open_issues_count":4,"forks_count":42,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-07-31T17:23:19.227Z","etag":null,"topics":["apm","application-monitoring","metrics","monitor","monitoring","perf","performance","performance-monitoring","rails","rpm","trace"],"latest_commit_sha":null,"homepage":"https://www.randygirard.com/open-source-application-performance-app/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/randy-girard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"randy-girard"}},"created_at":"2016-04-30T18:46:58.000Z","updated_at":"2024-05-31T08:14:25.000Z","dependencies_parsed_at":"2024-01-13T19:39:32.272Z","dependency_job_id":"741a8286-0f70-4e0d-af4d-0193dc5219c3","html_url":"https://github.com/randy-girard/app_perf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randy-girard%2Fapp_perf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randy-girard%2Fapp_perf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randy-girard%2Fapp_perf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randy-girard%2Fapp_perf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/randy-girard","download_url":"https://codeload.github.com/randy-girard/app_perf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243478224,"owners_count":20297215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apm","application-monitoring","metrics","monitor","monitoring","perf","performance","performance-monitoring","rails","rpm","trace"],"created_at":"2024-07-30T17:01:35.094Z","updated_at":"2026-01-18T12:35:01.492Z","avatar_url":"https://github.com/randy-girard.png","language":"Ruby","funding_links":["https://github.com/sponsors/randy-girard"],"categories":["Ruby","rails"],"sub_categories":[],"readme":"## AppPerf (Application Performance Monitoring)\n\n[![Build Status](https://travis-ci.org/randy-girard/app_perf.svg?branch=master)](https://travis-ci.org/randy-girard/app_perf)\n\nJoin Slack using this link: https://join.slack.com/t/app-perf/shared_invite/zt-3opre7mb-OUBLj1iElF1EBuH86qSG5Q\n\n**More images are at the bottom.**\n\n![Overview](/doc/overview.png?raw=true \"Overview\")\n\n\n\u003cb\u003eNOTE: This application is in extremely beginning stages and I am still working out flows and learning the data model. I will be cleaning code up as I go.\u003c/b\u003e\n\nThis is a application monitoring app. I am trying to build an open source, easy to setup, performance monitoring tool.\n\n### Prerequisites\n\nBefore you set up AppPerf, you need to make sure the following is installed and functional.\n\n- Yarn\n- Node\n- PostgreSQL\n- Mailcatcher, or another smtp mail server (In Development, if you want to send emails)\n\nIf you are on Mac, you should be able to install them with the following commands:\n\n```\nbrew install yarn\nbrew install node\nbrew install postgresql\n```\n\n### Setup (Localhost)\n\nSetup should be straightforward and easy. We use foreman to manage processes. Begin by running the setup script:\n\n```\n./bin/setup\n```\n\nThis should create and setup the database and any other needed services/apps. Then to start everything up, run foreman:\n\n```\nbundle exec foreman start\n```\n\n### Setup (Docker)\n\nAppPerf supports using Docker and Docker Compose. Just run the following and you should be good to go:\n\n```\ndocker-compose build\ndocker-compose up\n```\n\nNavigate to http://localhost:5000. This application is setup to report to itself so you can begin seeing information immediately!\n\n### Setup (Kubernetes)\n\nAppPerf can be easily deployed to any Kubernetes cluster using [Helm](https://helm.sh/) (both v3 and v2 supported) with the chart provided. There are a few simple steps for this:\n\n1. With Helm v3 you need to create a namespace first, i.e.:\n\n```\nkubectl create ns app-perf\n```\n\nThe above is not required with Helm v2 since it creates the namespace automatically.\n\n2. Edit ./chart/values.yaml as needed with the required information, including connection strings for the Postgres and Redis databases and an optional ingress resource with TLS certificate to expose the app to the web.\n\n3. Finally you can install AppPerf with the following command:\n\n```\nhelm upgrade --install \\\n  --namespace app-perf \\\n  -f ./chart/values.yaml \\\n  app-perf \\\n ./chart\n```\n\n### Default Login\n\nAppPerf has a sample account allowing you to check out the application\n\n```\nusername: user@example.com\npassword: password\n```\n\n### Using Other databases\n\nSQLite has some limitation with concurrency in this app, as well as various date functions used for reporting. If you would rather test against postgresql (Mysql to come), you can run the following command to create a local development database running on port 5443 (Must have postgresql installed):\n```\n./bin/setup_psql\n```\n\n**Note: Don't forget to update your `config/database.yml` file.**\n\n## Adding Applications\n\nApp Perf will automatically detect new applications that are posting data and display them in the Applications page. From there you can go to each individual application to view the performance metrics.\n\nIn order to monitor an application, you have to add the Ruby Agent gem to the Gemfile:\n\n```\ngem \"app_perf_rpm\"\n```\n\nOnce you have add the gem, Add the following lines to your project (or in an initializer):\n\n```\nrequire 'app_perf_rpm'\n\nAppPerfRpm.configure do |rpm|\n  rpm.license_key = \"License Key\"\n  rpm.application_name = \"Application Name\"\nend\n```\n\nYou can get your license key by visiting the Applications tab and clicking the \"New Application\" button.\n\n## Adding servers\n\nInstall the App Perf Agent gem:\n```\ngem install app_perf_agent\n```\n\nThen run the following command on your server:\n\n```\napp_perf_agent --license LICENSE_KEY --host HOST\n```\n\nMore information is on the Edit Organization page.\n\n## How the data model works\n\nAdding metrics to App Perf is as simple as posting data to the following endpoint:\n```\nPOST http://domain/api/listener/:protocol_version/:license_key\n```\nCurrently the only protocol version supported is 2. License key is generated when you create a new user account. There is a default one that is used for testing in the `.env.development` file.\n\n##### TODO: Add examples of how to submit data.\n\n## Contributing to the App Perf RPM or Agent\n\nClone the github project at https://github.com/randy-girard/app_perf_rpm or https://github.com/randy-girard/app_perf_agent somewhere locally, then run the following command for the RPM to force bundler to look at that specific path:\n\n```\nbundle config local.app_perf_rpm /path/to/local/app_perf_rpm\n```\n\nTo remove this configuration, run the following command:\n```\nbundle config --delete local.app_perf_rpm\n```\n\n![Trace](/doc/trace.png?raw=true \"Traces\")\n\n![Database](/doc/database.png?raw=true \"Database\")\n\n![Host](/doc/hosts.png?raw=true \"Hosts\")\n\n![Error](/doc/error.png?raw=true \"Overview\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frandy-girard%2Fapp_perf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frandy-girard%2Fapp_perf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frandy-girard%2Fapp_perf/lists"}