Google Summer of Code¶
Here is the ideas page for Google Summer of Code 2020.
We encourage interested students to contact mentors to discuss these ideas or propose new ones. The Moira team would appreciate your contributions.
Moira is a realtime alerting system based on Graphite data.
It’s key features are:
- storage independence
- simple and advanced trigger syntax
- tags for triggers and subscriptions
- extendable notification channels
- alarm fatigue protection
See overview for more.
The source code is licensed under MIT.
Health checks for delivery channels and contacts¶
Explanation. Moira’s users are able to set up new delivery channels and contacts to be used with those channels. However Moira doesn’t check if the channel configuration is valid and alerts can be actually sent. A user may provide a non-existent Slack user name, block Moira’s bot in Telegram, etc. As a result, such user wouldn’t be able to receive alerts. The bad thing is that sometimes invalid configuration would cause Moira’s bots to be banned for a certain period of time. This effectively means a denial-of-service for alerts which is highly undesirable.
The aim of this project is to implement health checks when delivery channels and contacts are set up. To do so, one should enhance the delivery channel and contact setup flow: send a test alert, verify that it’s received, don’t let to save an invalid configuration otherwise. Certain modifications of the web UI may be required.
Expected outcome. Health checks are implemented and released.
OpenAPI description of Moira’s API¶
Explanation. Moira’s web UI is nice and widely used. However, users don’t always want to create triggers, subscriptions, and contacts manually. They would like to be able to automate routine tasks with the tools like Ansible which they already use to bootstrap database and application clusters. For this kind of automation, Moira should have a well-documented API and a number of client libraries for all popular languages. At this point, Moira doesn’t have any API documentation. To use the API, one should study Moira’s source code or an existing client library source code to understand how the API works and reverse-engineer contracts of its methods.
The aim of this project is to provide an always up-to-date documentation of Moira’s API and a few client libraries. To do so, one should create an OpenAPI description of API, generate a number of client libraries for popular programming languages with Swagger tools, and setup a process so the documentation and the clients are updated when a new API version is released.
Required skills. General Go or Python skills. Familiarity with OpenAPI or Swagger would be a plus.
Expected outcome. Moira’s documentation has a link to a human-readable API documentation. Client libraries are released (not required). There’s a process in place to update the documentation and the clients on API changes.
Flow to TypeScript migration¶
The aim of this project is to migrate Moira’s web UI source code from Flow to TypeScript. To do so, one should analyze the code base, propose a migration strategy, actually rewrite the code, and change the build process if needed.
Code reference. See Moira’s web UI source code.
Expected outcome. Moira’s web UI source code is migrated to TypeScript. A new major version of Moira’s web UI is released.
Noisy trigger analysis tools¶
Explanation. On-call engineers are badly affected by noisy triggers that generate alerts multiple times a day. Attention to alerts reduces greatly, and chances to miss one important alert grow. One badly configured flapping trigger can affect the entire workflow. Our documentation contains an entire page dedicated to this problem with some tips on mitigation. But we can do more.
The aim of this project is to help Moira users identify noisy triggers. To do so, one should research and define a metric of trigger noisiness, and then create a UI page that demonstrates worst triggers to the user.
Expected outcome. Moira’s web UI allows user to see noisy trigger list, optionally filtered by tags.
Done in previous years¶
Following projects are no longer available.
Support for additional delivery channels¶
Done in 2019 by Aswin.
Explanation. Moira supports a number of delivery channels such as email, Slack, Telegram, etc. to inform users that a certain trigger was activated (see Setting Up Your Subscriptions).
The aim of this project is to provide support for a number of additional delivery channels. To do so, one should talk to community and research possible channels to be added, contribute corresponding senders, and tune the web UI to allow users to create subscriptions using new channels.
Expected outcome. Some qualitative or quantitative data on channel popularity is collected. Several delivery channels are added to Moira and released.