Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chaostoolkit-incubator/chaostoolkit-dynatrace
Dynatrace driver for the Chaos Toolkit
https://github.com/chaostoolkit-incubator/chaostoolkit-dynatrace
chaos-engineering chaostoolkit chaostoolkit-extension
Last synced: about 1 month ago
JSON representation
Dynatrace driver for the Chaos Toolkit
- Host: GitHub
- URL: https://github.com/chaostoolkit-incubator/chaostoolkit-dynatrace
- Owner: chaostoolkit-incubator
- License: apache-2.0
- Created: 2020-10-21T16:02:53.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-29T13:56:40.000Z (almost 3 years ago)
- Last Synced: 2024-11-11T22:40:52.773Z (about 2 months ago)
- Topics: chaos-engineering, chaostoolkit, chaostoolkit-extension
- Language: Python
- Homepage: https://chaostoolkit.org/
- Size: 37.1 KB
- Stars: 0
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Chaos Toolkit extension for Dynatrace
[![Release](https://github.com/chaostoolkit-incubator/chaostoolkit-dynatrace/actions/workflows/release.yaml/badge.svg)](https://github.com/chaostoolkit-incubator/chaostoolkit-dynatrace/actions/workflows/release.yaml)
[Dynatrace][dynatrace] support for the [Chaos Toolkit][chaostoolkit].
[dynatrace]: https://www.dynatrace.es/
[chaostoolkit]: http://chaostoolkit.org/## Install
To be used from your experiment, this package must be installed in the Python
environment where [chaostoolkit][] already lives.[chaostoolkit]: https://github.com/chaostoolkit/chaostoolkit
```
$ pip install chaostoolkit-dynatrace
```## Usage
To use this package, you must have access to a Dynatrace instance via
[DynatraceApi][] and be allowed to connect to it.[DynatraceApi]: https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication/
the access credentials to the api must be specified in the configuration section
```json
{"configuration": {
"dynatrace_base_url": "https://{your-environment-id}.live.dynatrace.com"
},
"secrets": {
"dynatrace": {
"token": "..."
}
}
}
```Here is an example of how to get the failure rate of a service in Dynatrace.
for this example, the api for validate de failure rate is [Metric-v1][mv1][mv1]:https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v1/
```json
{
"type": "probe",
"name": "get-failure-rate-services",
"provider": {
"type": "python",
"module": "chaosdynatrace.timeseries.v1.probes",
"func": "failure_rate",
"secrets": ["dynatrace"],
"arguments": {
"entity": "SERVICE-665B05BC92550119",
"relative_time": "30mins",
"failed_percentage": 1
}
}
}
```The probe returns `true` if the api request failure percentage is less than
the `failed_percentage` value or return `false`.The extension also exports a control to send events to Dynatrace. For instance:
```json
{
"controls": [
{
"name": "dynatrace",
"provider": {
"type": "python",
"secrets": ["dynatrace"],
"module": "chaosdynatrace.events.v2.control"
}
}
]
}
```This will send start/stop logs of the experiment events.
You can correlate them to traces using the [Open Telemetry][opentracing]
extension.[opentracing]: https://chaostoolkit.org/drivers/opentracing/
```json
{
"configuration": {
"dynatrace_base_url": "https://{your-environment-id}.live.dynatrace.com",
"tracing_provider": "opentelemetry",
"tracing_opentelemetry_exporter": "oltp-http",
"tracing_opentelemetry_collector_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces",
"tracing_opentelemetry_collector_headers": {
"Authorization": "Api-Token "
}
},
"controls": [
{
"name": "opentracing",
"provider": {
"type": "python",
"module": "chaostracing.control"
}
}
]
```The logs and traces will be automatically correlated.
## Contribute
If you wish to contribute more functions to this package, you are more than
welcome to do so. Please, fork this project, make your changes following the
usual [PEP 8][pep8] code style, sprinkling with tests and submit a PR for
review.[pep8]: https://pycodestyle.readthedocs.io/en/latest/
### Develop
If you wish to develop on this project, make sure to install the development
dependencies. But first, [create a virtual environment][venv] and then install
those dependencies.[venv]: http://chaostoolkit.org/reference/usage/install/#create-a-virtual-environment
```console
$ pip install -r requirements-dev.txt -r requirements.txt
```Then, point your environment to this directory:
```console
$ pip install -e .
```Now, you can edit the files and they will be automatically be seen by your
environment, even when running from the `chaos` command locally.### Test
To run the tests for the project execute the following:
```
$ pytest
```