{"id":13508388,"url":"https://github.com/appsignal/appsignal-elixir","last_synced_at":"2025-05-14T08:09:33.708Z","repository":{"id":9970440,"uuid":"63960295","full_name":"appsignal/appsignal-elixir","owner":"appsignal","description":"🟪 AppSignal for Elixir package","archived":false,"fork":false,"pushed_at":"2025-05-05T10:27:46.000Z","size":4162,"stargazers_count":288,"open_issues_count":19,"forks_count":83,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-08T02:16:46.784Z","etag":null,"topics":["apm","appsignal","custom-instrumentation","custom-metrics","elixir","error-monitoring","host-metrics","performance-monitoring","phoenix","plug"],"latest_commit_sha":null,"homepage":"https://www.appsignal.com/elixir","language":"Elixir","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/appsignal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-07-22T14:38:03.000Z","updated_at":"2025-05-05T10:27:47.000Z","dependencies_parsed_at":"2024-01-31T07:03:59.320Z","dependency_job_id":"fc568263-158a-47fb-8a00-d428af2fef57","html_url":"https://github.com/appsignal/appsignal-elixir","commit_stats":{"total_commits":1545,"total_committers":47,"mean_commits":32.87234042553192,"dds":"0.40258899676375404","last_synced_commit":"a886a2b7788602cbe5b95d17a0259013e7e9630b"},"previous_names":[],"tags_count":251,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appsignal%2Fappsignal-elixir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appsignal%2Fappsignal-elixir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appsignal%2Fappsignal-elixir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appsignal%2Fappsignal-elixir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appsignal","download_url":"https://codeload.github.com/appsignal/appsignal-elixir/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101558,"owners_count":22014908,"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","appsignal","custom-instrumentation","custom-metrics","elixir","error-monitoring","host-metrics","performance-monitoring","phoenix","plug"],"created_at":"2024-08-01T02:00:52.396Z","updated_at":"2025-05-14T08:09:28.698Z","avatar_url":"https://github.com/appsignal.png","language":"Elixir","funding_links":[],"categories":["Instrumenting / Monitoring","Errors and Exception Handling","Tracing"],"sub_categories":[],"readme":"# AppSignal for Elixir\n\n[![Build Status](https://travis-ci.org/appsignal/appsignal-elixir.png?branch=main)](https://travis-ci.org/appsignal/appsignal-elixir)\n[![Hex pm](http://img.shields.io/hexpm/v/appsignal.svg?style=flat)](https://hex.pm/packages/appsignal)\n\nAppSignal for Elixir monitors errors, performance and servers for Elixir\napplications.\n\n- [AppSignal.com website](https://www.appsignal.com/elixir)\n- [AppSignal for Elixir documentation](https://docs.appsignal.com/elixir/)\n- [Package documentation](https://hexdocs.pm/appsignal/)\n- [Support][contact]\n\n## Installation\n\nPlease follow the [installation\nguide](https://docs.appsignal.com/elixir/installation.html) on how to install\nand use this library.\n\nThen, add custom instrumentation or use one of the framework integrations to\nautomatically gain performance insights and error notifications. Currently,\nAppSignal has framework integrations for\n[Plug](https://github.com/appsignal/appsignal-elixir-plug) and\n[Phoenix](https://github.com/appsignal/appsignal-elixir-phoenix) and\napplications.\n\n## Usage\n\nAppSignal will automatically monitor requests, report any exceptions that are\nthrown and any performance issues that might have occurred.\n\nYou can also add extra information to requests by adding custom\ninstrumentation. Read more in our [instrumentation\nguide](https://docs.appsignal.com/elixir/instrumentation/).\n\n## Configuration\n\nA complete list of all configurable options for AppSignal for Elixir is\navailable in [our\ndocumentation](https://docs.appsignal.com/elixir/configuration/).\n\n## Development\n\n### Setup\n\nBefore you can start developing on the AppSignal for Elixir project make sure\nyou have [Elixir installed](http://elixir-lang.org/install.html).\n\nThis repository is managed by [mono](https://github.com/appsignal/mono/).\nInstall mono on your local machine by [following the mono installation\nsteps](https://github.com/appsignal/mono/#installation).\n\nThen make sure you have all the project's dependencies installed by running the\nfollowing command:\n\n    $ mono bootstrap\n\n### Testing\n\nTesting is done with ExUnit and can be run with the `mix test` command. You can\nalso supply a path to a specific file path you want to test and even a specific\nline on which the test you want to run is defined.\n\n    $ mono test\n    # The original command can still be used\n    $ mix test\n    $ mix test test/appsignal/some_test.ex:123\n\nThis project has several different test suites defined with different mix\nenvironments. You can run them by specifying the specific type of test suite in\nthe `MIX_ENV` environment variable.\n\n    # Default\n    $ MIX_ENV=test mix test\n\n    # Run the test suite with the NIF inoperational. This will generate errors\n    # because the NIF is not active, but should run without failures.\n    $ MIX_ENV=test_no_nif mix test\n\n### Benchmarking\n\nThis package uses benchee to benchmark code. To run the benchmarker:\n\n    $ MIX_ENV=bench mix run bench/\u003cfile\u003e.exs\n\n### AddressSanitizer\n\nA memory testing setup is included to detect memory errors in the NIF.\nIt's set up in a Docker container to ensure reproducability.\n\nTo run the tests, build the container, which will build a version of the NIF with AddressSanitizer enabled.\nThen, run it with an `APPSIGNAL_PUSH_API_KEY` and `APPSIGNAL_APP_NAME` set to ensure AppSignal is enabled, and to be able to verify that data appears in AppSignal after running the test:\n\n    docker build --platform linux/amd64 -t appsignal-elixir-asan .\n    docker run \\\n      --env APPSIGNAL_PUSH_API_KEY=00000000-0000-0000-0000-000000000000 \\\n      --env APPSIGNAL_APP_NAME=\"appsignal-elixir\" \\\n      --rm \\\n      -- \\\n      appsignal-elixir-asan\n\nThis test runs `spans.exs`, which is a script that calls most functions in the NIF.\n\n### Branches and versions\n\nThe `main` branch corresponds to the current release of the\nlibrary. The `develop` branch is used for development of features that\nwill end up in the next minor release. If you fix a bug open a pull\nrequest on `main`, if it's a new feature on `develop`.\n\n### Making changes\n\nWhen making changes to the project that require a release, [add a\nchangeset](https://github.com/appsignal/mono/#changeset-add) that will be used\nto update the generated `CHANGELOG.md` file upon\n[release](#publishing-new-version).\n\n    $ mono changeset add\n\n### Publishing new versions\n\n1. Merge the `develop` branch to `main` if necessary.\n-  Run [`mono publish`](https://github.com/appsignal/mono/#publish) and follow\n   the instructions.\n\n### Updating the CI build matrix\n\n1. Update `.semaphore/versions.rb` to add or remove Elixir/OTP versions, or `.semaphore/semaphore.yml.erb`.\n2. Run `script/generate_ci_matrix`.\n\n## Contributing\n\nThinking of contributing to our Elixir package? Awesome! 🚀\n\nPlease follow our [Contributing guide][contributing-guide] in our\ndocumentation and follow our [Code of Conduct][coc].\n\nAlso, we would be very happy to send you Stroopwafles. Have look at everyone\nwe send a package to so far on our [Stroopwafles page][waffles-page].\n\n## Support\n\n[Contact us][contact] and speak directly with the engineers working on\nAppSignal. They will help you get set up, tweak your code and make sure you get\nthe most out of using AppSignal.\n\nAlso see our [SUPPORT.md file](SUPPORT.md).\n\n## License\n\nThe AppSignal for Elixir package source code is released under the MIT License.\nCheck the [LICENSE](LICENSE) file for more information.\n\n[contact]: mailto:support@appsignal.com\n[contributing-guide]: https://docs.appsignal.com/appsignal/contributing.html\n[coc]: https://docs.appsignal.com/appsignal/code-of-conduct.html\n[waffles-page]: https://appsignal.com/waffles\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsignal%2Fappsignal-elixir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappsignal%2Fappsignal-elixir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsignal%2Fappsignal-elixir/lists"}