-
Notifications
You must be signed in to change notification settings - Fork 435
Application Health Monitoring
We collect metrics about the usage of OBS, such as logins of users, creation of packages and projects and alike.
An entry point to view those metrics is our Application Health Overview Dashboard on https://obs-measure.opensuse.org/.
You can login with your GitHub account and should get the Editor
role.
Our AHM stack consists of:
Metrics are sent by our application to the openSUSE RabbitMQ running at https://rabbit.opensuse.org/.
Some of those metrics are:
- Login information, ranging from user creation or user deletion to authentication errors or even users entering or exiting our public beta program.
- Status message acknowledging
- Several events, like package updates, branching performed or reviews wanted.
# Replace $METRIC_NAME$, $METRIC_VALUE$ with the according name/value.
# Tags are useful to filter metrics, add them as needed as seen below with $TAG_{1,2}$ and their respective value.
RabbitmqBus.send_to_bus('metrics', "$METRIC_NAME$,$TAG_1$=$TAG_1_VALUE$,$TAG_2$=$TAG_2_VALUE$ value=$METRIC_VALUE$")
You find more information about the line protocol in the Influx documentation.
Whenever possible, we extract instrumentation code to the src/api/app/instrumentations directory. This is possible with the use of concerns which are then included in the class which they instrument.
In controllers, rely on filters (all filters are listed here). In ActiveRecord models, rely on callbacks from ActiveRecord::Callbacks. In ActiveModel models, you can also rely on callbacks, but they are from ActiveModel::Callbacks. Using ActiveModel::Callbacks is also possible in other classes by extending the classes with ActiveModel::Callbacks.
Please also mind our general Best practices for monitoring
Telegraf fetches these metrics using the amqp_consumer input plugin and reports them to InfluxDB using the influxdb output plugin.
InfluxDB stores the time series data we collect (data source InfluxDB-ahm
).
Grafana is used to create graphs to visualize the collected data.
Instructions for setting up the development environment including application health monitoring can be found on Site-Reliability#development-environment
- Development Environment Overview
- Development Environment Tips & Tricks
- Spec-Tips
- Code Style
- Rubocop
- Testing with VCR
- Authentication
- Authorization
- Autocomplete
- BS Requests
- Events
- ProjectLog
- Notifications
- Feature Toggles
- Build Results
- Attrib classes
- Flags
- The BackendPackage Cache
- Maintenance classes
- Cloud uploader
- Delayed Jobs
- Staging Workflow
- StatusHistory
- OBS API
- Owner Search
- Search
- Links
- Distributions
- Repository
- Data Migrations
- next_rails
- Ruby Update
- Rails Profiling
- Installing a local LDAP-server
- Remote Pairing Setup Guide
- Factory Dashboard
- osc
- Setup an OBS Development Environment on macOS
- Run OpenQA smoketest locally
- Responsive Guidelines
- Importing database dumps
- Problem Statement & Solution
- Kickoff New Stuff
- New Swagger API doc
- Documentation and Communication
- GitHub Actions
- How to Introduce Software Design Patterns
- Query Objects
- Services
- View Components
- RFC: Core Components
- RFC: Decorator Pattern
- RFC: Backend models