open-index/open-npm huggingface dataset:
npm package: @keptn/backstage-plugin-keptn
Description: Welcome to the keptn plugin!
Latest version: 0.1.2

# Backstage Plugin Keptn

Welcome to the keptn plugin!

## Installation steps

```
yarn add @keptn/backstage-plugin-keptn
```

Add proxy config to the app-config.yaml file

```
proxy:
  "/keptn-api":
    target: http://<your-keptn-instance>/api/v1/
    secure: false
    headers:
      x-token: KEPTN_API_AUTH_TOKEN

  "/keptn":
    target: http:/<your-keptn-instance>/bridge/api/
    secure: false
    headers:
      Authorization: "Basic KEPTN_AUTH_TOKEN"
```

```
// packages/app/src/plugins.ts
export { keptnPlugin } from '@keptn/backstage-plugin-keptn';
```

Add keptn widget to your overview page

```
import {
  EntityKeptnProjectCard,
  EntityKeptnServiceCard,
  isKeptnProjectAvailable,
  isKeptnServiceAvailable,
  EntityKeptnContent,
} from '@keptn/backstage-plugin-keptn';

const overviewContent = (
  <Grid container spacing={3} alignItems="stretch">
  ...
    <EntitySwitch>
      <EntitySwitch.Case if={isKeptnServiceAvailable}>
        <Grid item md={6} xs={6}>
          <EntityKeptnServiceCard />
        </Grid>
      </EntitySwitch.Case>
    </EntitySwitch>
  ...
  </Grid>
);

const serviceEntityPage = (
  <EntityLayoutWrapper>
  ...
    <EntityLayout.Route path="/keptn" title="Keptn">
      <EntityKeptnContent />
    </EntityLayout.Route>
  ...
  </EntityLayoutWrapper>
);

const systemPage = (
  <EntityLayoutWrapper>
    <EntityLayout.Route path="/" title="Overview">
    ...
      <Grid container spacing={3} alignItems="stretch">
        <EntitySwitch>
          <EntitySwitch.Case if={isKeptnProjectAvailable}>
            <Grid item md={12}>
              <EntityKeptnProjectCard />
            </Grid>
          </EntitySwitch.Case>
        </EntitySwitch>
      </Grid>
    ...
    </EntityLayout.Route>
  </EntityLayoutWrapper>
);
```

Add annotation to the yaml config file of a component

```
metadata:
  annotations:
    keptn.sh/project: <your-keptn-project>
    keptn.sh/service: <your-keptn-service>
```

Get and provide env variables in following format

```
KEPTN_API_AUTH_TOKEN: is the token that is generated by the kpetn-api
KEPTN_AUTH_TOKEN: token for keptn ui. username:password in base64 (commonly is keptn:<password>)
```

## How it looks

### System

![image description](https://github.com/keptn-sandbox/backstage-plugin-keptn/blob/main/docs/system.png?raw=true)

### Component Overview

![image description](https://github.com/keptn-sandbox/backstage-plugin-keptn/blob/main/docs/overview.png?raw=true)

### Keptn Tab

![image description](https://github.com/keptn-sandbox/backstage-plugin-keptn/blob/main/docs/tab.png?raw=true)
npm package: @keptn/pitometer
Description: Collects metrics and judges the health of a deployment
Author: Daniel Khan
Latest version: 1.1.0

# Pitometer

Pitometer is a Node.js module that helps you to qualify the overall performance
or quality of applications using a well defined specification format.

The specification is done using the Perfspec format which is a declarative way to
define which metrics you want to pay attention to, the sources to collect
them from and how to grade/interpret the results.

Pitometer is pluggable and accepts different sources and grading mechanisms.
Right now, source plugins for Dynatrace and Prometheus and a grader for thresholds
are available but it's easy to write new sources and graders.

## Quickstart

1. Run `npm install -S @keptn/pitometer`

2. Install the graders and sources that are used in your Perfspec file:

    ```
    npm install -S @keptn/pitometer-grader-threshold
    npm install -S @keptn/pitometer-source-prometheus
    npm install -S @keptn/pitometer-source-dynatrace
    ```

3. Require, configure and register all components and run the Perfspec file.

  ```js
  const Pitometer = require('@keptn/pitometer').Pitometer;
  const DynatraceSource = require('@keptn/pitometer-source-dynatrace').Source;
  const PrometheusSource = require('@keptn/pitometer-source-prometheus').Source;
  const ThresholdGrader = require('@keptn/pitometer-grader-threshold').Grader;

  const pitometer = new Pitometer();

  // Register a Prometheus source that will be used if the source ID in your
  // Perfspec matches 'Prometheus'
  pitometer.addSource('Prometheus', new PrometheusSource({
    queryUrl: '<PROMETHEUS_PROMQL_ENDPOINT>',
  }));

  // Register a source that will be used if the source ID in your Perfspec matches
  // 'Dynatrace'
  pitometer.addSource('Dynatrace', new DynatraceSource({
    baseUrl: '<DYNATRACE_ENVIRONMENT_URL>',
    apiToken: '<DYNATRACE_API_TOKEN>',
    // Optional: A logger to be used for debugging API requests
    // log: console.log,
  }));

  // Register a grader for thresholds that will be used if the grader type
  // matches 'Threshold'
  pitometer.addGrader('Threshold', new ThresholdGrader());

  // Load a Perfspec - see the samples directory
  const perfspec = require('./samples/perfspec-sample.json');

  // Run the Perfspec, passing in an optional context parameter 'prod'
  // and log the result out to the console
  pitometer.run(perfspec, {
    context: 'Optional context that is passed to all sources and graders',
    timeStart: START_TIME_IN_SECONDS,
    timeEnd: END_TIME_IN_SECONDS,
  })
    .then((results) => console.log(JSON.stringify(results)))
    .catch((err) => console.error(err));
  ```

## API Documentation

The API documentation can be found [here](https://keptn.github.io/pitometer/).