{"id":21050478,"url":"https://github.com/pagerduty/pagerduty-rabbitmq-plugins","last_synced_at":"2025-06-13T17:02:09.210Z","repository":{"id":128957391,"uuid":"194886572","full_name":"PagerDuty/pagerduty-rabbitmq-plugins","owner":"PagerDuty","description":null,"archived":false,"fork":false,"pushed_at":"2019-10-02T14:44:45.000Z","size":38,"stargazers_count":0,"open_issues_count":3,"forks_count":2,"subscribers_count":113,"default_branch":"master","last_synced_at":"2025-03-13T23:13:03.964Z","etag":null,"topics":["in-scope","type-service"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PagerDuty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-02T15:07:49.000Z","updated_at":"2021-04-21T07:38:40.000Z","dependencies_parsed_at":"2023-06-14T23:00:24.477Z","dependency_job_id":null,"html_url":"https://github.com/PagerDuty/pagerduty-rabbitmq-plugins","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/PagerDuty/pagerduty-rabbitmq-plugins","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PagerDuty%2Fpagerduty-rabbitmq-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PagerDuty%2Fpagerduty-rabbitmq-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PagerDuty%2Fpagerduty-rabbitmq-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PagerDuty%2Fpagerduty-rabbitmq-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PagerDuty","download_url":"https://codeload.github.com/PagerDuty/pagerduty-rabbitmq-plugins/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PagerDuty%2Fpagerduty-rabbitmq-plugins/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259685597,"owners_count":22896040,"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":["in-scope","type-service"],"created_at":"2024-11-19T15:32:25.012Z","updated_at":"2025-06-13T17:02:09.121Z","avatar_url":"https://github.com/PagerDuty.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PagerDuty RabbitMQ Plugins\n\nThis repository contains plugins to connect RabbitMQ to PagerDuty. Currently, it\ncontains a single plugin but more are expected.\n\n## Why?\n\nSince the early days of PagerDuty, the [PagerDuty Agent](https://github.com/PagerDuty/pdagent)\nhas enabled customers to route messages to PagerDuty through an on-premises agent. This agent\ncan buffer and retry delivery and it works well in that respect, but it does not scale very\nwell.\n\nWhen looking for a solution, we considered a number of solutions, all revolving around the\nsame principle: have some persistence as a queue and do delivery from there, but then faster\nthan PD Agent. However, wheel reinvention is not our thing; when we realized that RabbitMQ\nwas written in Erlang (with bits in Elixir), and runs on the very VM we use in production,\nit was an easy decision to farm out \"the hard parts\" (queueing) to an already proven system\nand just write plugins.\n\nThis way, we hit multiple goals at once:\n\n* RabbitMQ is very scalable; with the plugin, we are too.\n* How to operate RabbitMQ is very well documented and has a wide array of support options.\n* There is already packaging/distribution for many operating systems so all we need\n  to add is our plugin, which is a handful of simple files to be dropped in the correct spot.\n\nBy tapping into the power of RabbitMQ, we can focus on plugin functionality and not worry\nabout things that are in the category \"harder than you'd expect\", like performant message\nqueueing.\n\n## Plugin list\n\nCurrent list of plugins:\n\n* [pd-events-api-plugin](pd-events-api-plugin) - A queue consumer that talks to the PagerDuty\n  Events API.\n  \n## Clients\n\nSome command-line clients to make interacting with the system easier are provided (or planned). The current list:\n\n* `pd-send` - send an event. This is a very simple first integration point. For options, please\n  refer to the [source code](clients/pd-send/main.go#L36). There are also two environment variables\n  you can set, again see the [source code](clients/pd-send/main.go#L86).\n\n## Installation\n\nAssuming that you have the correct Erlang and Elixir versions installed (check [.tool-versions](.tool-versions)\nfor the required versions) and after making sure that this version is compatible with your RabbitMQ version,\nyou can just do:\n\n```\nmake\n```\n\nto build a `dist.zip` file. This file can be unpacked in the RabbitMQ plugins directory (`/usr/lib/rabbitmq/plugins`\non Ubuntu Bionic). Restarting RabbitMQ will make all the plugins available. `rabbitmq-plugins enable \u003cplugin-name\u003e`\nwill then enable the plugin you want to use. Please check the plugin documentation first though for extra details.\n\nNote that it is best to run this on the target platform; while compiled `.beam` files are portable, it might\nbe that plugin code (indirectly) depends on applications that have native functions; in that case, the `.ez`\nfile will contain platform-dependent object code.\n\n### Installation on Debian/Ubuntu\n\nMake or download the distribution file (`make debian-dist`). Then\n\n```\nsudo apt install ./pagerduty-rabbitmq-plugins_1.0.0-1_amd64.deb\nsudo rabbitmq-plugins enable pd_events_api_plugin\n```\n\nTo install everything and enable the plugin.\n\n## Post-installation steps\n\nRabbitMQ ships with a default `guest/guest` user account that has wide access. At the minimum, post installation,\nchange the guest password:\n\n```\nsudo rabbitmqctl change_password guest \u003cnew_password\u003e\n```\n\nSee [User Management](https://www.rabbitmq.com/rabbitmqctl.8.html#User_Management) in the RabbitMQ documentation\nfor more information.\n\n\n# License\n\nCopyright 2019, PagerDuty Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpagerduty%2Fpagerduty-rabbitmq-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpagerduty%2Fpagerduty-rabbitmq-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpagerduty%2Fpagerduty-rabbitmq-plugins/lists"}