Git Product home page Git Product logo

promremotebench's Introduction

promremotebench

Prometheus remote write benchmarker (acts as a Prometheus sending node_exporter samples).

It can also run in scrape mode where it serves as a scrape server for Prometheus to ingest metrics from.

It uses the InfluxData node_exporter simulator to generate and progress time using realistic host metrics and cardinality.

Configuring

The main controls for controlling cardinality is the number of hosts to generate metrics for. You can also use the new series percent to tweak how many host IDs churn every scrape cycle (which is why scrape interval is required, even when running in scrape mode).

You can also specify fixed labels to apply to each benchmarker instance should you want to query the metrics. Use the environment variable PROMREMOTEBENCH_LABELS_JSON or the command line argument labels.

Building

To build promremotebench Docker image:

docker build -t promremotebench .

Kubernetes manifest

Here is what a Kubernetes manifest looks like for hosting the benchmarker, simply turn up number of replicas for more load or targets.

Remote write benchmarking

apiVersion: apps/v1
kind: Deployment
metadata:
  name: promremotebench
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: promremotebench
  template:
    metadata:
      labels:
        k8s-app: promremotebench
    spec:
      containers:
      - name: promremotebench
        image: quay.io/m3db/promremotebench:latest
        env:
        - name: PROMREMOTEBENCH_TARGET
          # NB: this can be a comma separated string of targets for writing to multiple targets.
          value: "http://m3coordinator-dedicated-bench-cluster:7201/api/v1/prom/remote/write"
        - name: PROMREMOTEBENCH_NUM_HOSTS
          value: "1000"
        - name: PROMREMOTEBENCH_INTERVAL
          value: "10"
        - name: PROMREMOTEBENCH_BATCH
          value: "128"
        - name: PROMREMOTEBENCH_NEW_SERIES_PERCENTAGE
          value: "0.01"

Scrape benchmarking

apiVersion: apps/v1
kind: Deployment
metadata:
  name: promremotebench
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: promremotebench
  template:
    metadata:
      labels:
        k8s-app: promremotebench
    spec:
      containers:
      - name: promremotebench
        image: quay.io/m3db/promremotebench:latest
        env:
        - name: PROMREMOTEBENCH_SCRAPE_SERVER
          value: "0.0.0.0:4242"
        - name: PROMREMOTEBENCH_NUM_HOSTS
          value: "1000"
        - name: PROMREMOTEBENCH_INTERVAL
          value: "10"
        - name: PROMREMOTEBENCH_NEW_SERIES_PERCENTAGE
          value: "0.01"
        ports:
        - name: http
          containerPort: 4242

promremotebench's People

Contributors

arnikola avatar benraskin92 avatar gediminasgu avatar linasm avatar martin-mao avatar notbdu avatar robskillington avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

promremotebench's Issues

How to install?

tried the usual

go get  github.com/m3dbx/promremotebench/src/cmd/promremotebench

but

go: finding module for package github.com/m3dbx/promremotebench/src/cmd/promremotebench
go: found github.com/m3dbx/promremotebench/src/cmd/promremotebench in github.com/m3dbx/promremotebench/src v0.0.0-20200518153608-40f75900b910
go: github.com/m3dbx/promremotebench/src/cmd/promremotebench: github.com/m3dbx/promremotebench/[email protected]: parsing go.mod:
        module declares its path as: promremotebench
                but was required as: github.com/m3dbx/promremotebench/src
go version
go version go1.14.4 linux/amd64

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.