All Projects → Roblox → rblx_nurd

Roblox / rblx_nurd

Licence: other
Open Source Nomad Usage Resource Dashboard

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to rblx nurd

libra
A Nomad auto scaler
Stars: ✭ 72 (+242.86%)
Mutual labels:  nomad, hashicorp-nomad
rundeck-nomad-plugin
Rundeck plugin running jobs on Nomad cluster.
Stars: ✭ 17 (-19.05%)
Mutual labels:  nomad, hashicorp-nomad
nomad-driver-containerd
Nomad task driver for launching containers using containerd.
Stars: ✭ 152 (+623.81%)
Mutual labels:  nomad, hashicorp-nomad
nomad-droplets-autoscaler
DigitalOcean Droplets target plugin for HashiCorp Nomad Autoscaler
Stars: ✭ 42 (+100%)
Mutual labels:  nomad, hashicorp-nomad
docker-monitoring-windows
Monitor your Docker containers using prometheus, cAdvisor , node-exported and grafana on Windows
Stars: ✭ 49 (+133.33%)
Mutual labels:  grafana
prom-bitbucket-exporter
Prometheus Exporter for Bitbucket
Stars: ✭ 47 (+123.81%)
Mutual labels:  grafana
spring-boot-prometheus
No description or website provided.
Stars: ✭ 20 (-4.76%)
Mutual labels:  grafana
grafana-dashboards
List of Grafana Dashboards 📺
Stars: ✭ 120 (+471.43%)
Mutual labels:  grafana
PogoStats
A mini Monitoring tool to collect performance data of Pokémon, Quests, Raids and Spawnpoints.
Stars: ✭ 17 (-19.05%)
Mutual labels:  grafana
nomad-auto-join
Terraform config to automatically bootstrap a Nomad cluster
Stars: ✭ 69 (+228.57%)
Mutual labels:  nomad
prometheus-barman-exporter
Barman exporter for Prometheus
Stars: ✭ 23 (+9.52%)
Mutual labels:  grafana
prop
An open and opinionated trading platform using productive & familiar open source libraries and tools for strategy research, execution and operation.
Stars: ✭ 26 (+23.81%)
Mutual labels:  grafana
schier.co
🏡 My personal website and blog powered by Go, Tailwind, Postgres
Stars: ✭ 19 (-9.52%)
Mutual labels:  nomad
nomad-driver-iis
Nomad task driver for running windows IIS services.
Stars: ✭ 45 (+114.29%)
Mutual labels:  hashicorp-nomad
flokkr
Documentation placeholder and utilities for all the other containers.
Stars: ✭ 30 (+42.86%)
Mutual labels:  nomad
Go-gRPC-RabbitMQ-microservice
Go gRPC RabbitMQ email microservice
Stars: ✭ 107 (+409.52%)
Mutual labels:  grafana
hashidays-london
Code used for the demo of Going Multi-Cloud with Terraform and Nomad
Stars: ✭ 20 (-4.76%)
Mutual labels:  nomad
gocast
GoCast is a tool for controlled BGP route announcements from a host
Stars: ✭ 55 (+161.9%)
Mutual labels:  nomad
qa-automation-base
There are basic projects for automation frameworks based on Kotlin/Java and TypeScript for the backend, frontend, and mobile.
Stars: ✭ 45 (+114.29%)
Mutual labels:  grafana
fronius-to-influx
Collect Fronius inverter data and save in Influxdb for Grafana
Stars: ✭ 31 (+47.62%)
Mutual labels:  grafana

:NURD: Nomad Usage Resource Dashboard (NURD)

License CircleCI

NURD is a dashboard which aggregates and displays CPU and memory resource usage for each job running through specified Hashicorp Nomad servers. The dashboard also displays resources requested by each job, which can be used with resource usage to calculate waste and aid capacity planning.

Prerequisites

  • Docker Version: >=19.03.8+
  • Required: At least one active Nomad server
  • Optional: A VictoriaMetrics server containing allocation level resource statistics

Setup

The user can configure NURD to connect to a containerized SQL Server instance with docker-compose.yml or point to another SQL Server instance with Dockerfile. See options below for details. By default, NURD collects data every 15 minutes. To modify the frequency, edit Dockerfile with the following formatting style before startup:
CMD ["nurd", "--aggregate-frequency", "15m"]

Containerized SQL Server Instance

  1. $ git clone [email protected]:Roblox/nurd.git

  2. Configuration

    • docker-compose.yml
      This file contains the necessary login information to create a SQL Server instance.
    • etc/nurd/config.json
      This file contains the configuration information for the Nomad server(s) and the VictoriaMetrics server. The default URLs and ports must be overwritten. If no VictoriaMetrics server exists, the VictoriaMetrics stanza must be removed. Note, any amount of servers can be added to the Nomad array.
  3. $ docker-compose build

  4. $ docker-compose up -d

  5. Grafana Dashboard
    a. Navigate to localhost:3000
    b. Login with

     username: admin
     password: admin
    

    c. Change the password
    d. Navigate to localhost:3000/datasources/new and select Microsoft SQL Server
    e. Input the following connection data

     Host: mssql
     Database: master
     User: sa
     Password: yourStrong(!)Password
    

    f. Select Save & Test
    g. Navigate to localhost:3000/dashboard/import and select Upload JSON file
    h. Upload grafana.json and select import

Another SQL Server Instance

  1. $ git clone [email protected]:Roblox/nurd.git
  2. Configuration
    • Dockerfile
      This file contains the necessary login information to connect to a separate SQL Server instance. It is necessary to configure the connection string environment variable.
    • etc/nurd/config.json
      This file contains the configuration information for the Nomad server(s) and the VictoriaMetrics server. The default URLs and ports must be overwritten. If no VictoriaMetrics server exists, the VictoriaMetrics stanza must be removed. Note, any amount of servers can be added to the Nomad array.
  3. $ cd nurd
  4. $ docker build -t nurd .
  5. $ docker run -dp 8080:8080 nurd

Exit

  1. $ docker-compose down or $ docker stop

Usage

Grafana Dashboard

From localhost:3000, or an alternative NURD host address, the user can access the Grafana dashboard. The following parameters are available to query through the dropdown menu.
Note: No time series will display until NURD has inserted data into the database.

  • JobID: ID of a job
  • Metrics
    • UsedMemory: the memory currently in use by the selected jobs in MiB
    • RequestedMemory: the memory requested by the selected jobs in MiB
    • UsedCPU: the CPU currently in use by the selected jobs in MHz
    • RequestedCPU: the CPU requested by the selected jobs in MHz
  • Total: toggle to aggregate metrics over the current selection

API

From localhost:8080, or an alternative NURD host address, the user can access several endpoints:

Home Page

  • /
    The home page for NURD.
    • Sample Request
      http://localhost:8080/

List All Jobs

  • /v1/jobs
    Lists all job data in NURD.
    • Sample Request
      http://localhost:8080/v1/jobs

List Specified Job(s)

  • /v1/job/:job_id
    Lists the latest recorded job data for the specified job_id.
    Optional Parameters
    begin: Specifies the earliest datetime from which to query.
    end: Specifies the latest datetime from which to query.
    • Sample Request
      • http://localhost:8080/v1/job/sample_job_id
      • http://localhost:8080/v1/job/sample_job_id?begin=2020-07-07%2017:34:53&end=2020-07-08%2017:42:19
    • Sample Response
      [
          {
              "JobID":"sample-job",
              "Name":"sample-job",
              "UTicks":7318.394561709347,
              "RCPU":1500,
              "URSS":21.542070543374642,
              "UCache":0.4997979027645376,
              "RMemoryMB":768,
              "RdiskMB":900,
              "RIOPS":0,
              "Namespace":"default",
              "DataCenters":"DC0,DC1",
              "CurrentTime":"",
              "InsertTime":"2020-07-07T11:49:34Z"
          }
      ]
      

Reload Config File

NURD supports hot reloading to point NURD to different Nomad clusters and/or a VictoriaMetrics server.

  1. Exec into the container running NURD
    $ docker exec -it nurd /bin/bash
  2. Edit the contents of /etc/nurd/config.json
    $ vim /etc/nurd/config.json
  3. Exit the container
    $ exit
  4. Send a SIGHUP signal to the container running NURD.
    $ docker kill --signal=HUP nurd

Once SIGHUP has been sent to NURD, NURD will complete resource aggregation of the addresses in the previous cycle before aggregating on the new addresses.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].