2020-10-17 19:32:32 +02:00
2020-10-06 19:53:07 +02:00
2020-01-20 16:42:26 +01:00
2020-10-17 19:32:32 +02:00
2020-10-25 20:33:58 +01:00
2020-10-17 19:32:32 +02:00
2020-11-22 16:11:14 +01:00
2020-10-31 15:26:29 +01:00

SRCDS Prometheus exporter

Works (or should work) with the following servers :

  • Working :
    • CSGO
    • CSS
    • GMod
  • Not working (I'm planning on adding them in the near future) :
    • L4D2
    • TF2
    • HL2DM

How to install

Method 1 : Download sources and run

You need to have NodeJS installed if you want to run the sources, NVM (Node Version Manager) is a simple tool to get it running : https://github.com/nvm-sh/nvm

  1. Download the repo (using git clone or direct zip download)
  2. Enter the srcds_exporter directory and run npm i, this will install all required dependencies
  3. Start the script with node : node index.js, you can create a service or run it in a screen to keep it active in background

Method 2 : With docker

docker run -d -p <external port>:9591 --name srcds_exporter sithranduil/srcds_exporter:latest

Configure Prometheus

Add the following configuration to Prometheus static configuration :

- job_name: 'srcds'
    scrape_interval: 5s
    static_configs:
      # Format :  ["<ip>:<port>:<rcon_password>:<game>:<use_metamod:use_sourcemod:use_sourcepython>"]
      - targets: ["87.98.155.38:27016:password:cstrike:true:true:false"]
        labels:
          name: 'cstrike:only_de_dust2'
    relabel_configs:
      # IP
      - source_labels: [__address__]
        regex: ^(.+):\d+:\w+:\w+(:(\w+)){0,3}$
        replacement: "$1"
        target_label: __param_ip
      # port
      - source_labels: [__address__]
        regex: ^.+:(\d+):\w+:\w+(:(\w+)){0,3}$
        replacement: "$1"
        target_label: __param_port
      # rconPassword
      - source_labels: [__address__]
        regex: ^.+:\d+:(\w+):\w+(:(\w+)){0,3}$
        replacement: "$1"
        target_label: __param_rconPassword
      # game
      - source_labels: [__address__]
        regex: ^.+:\d+:\w+:(\w+)(:(\w+)){0,3}$
        replacement: "$1"
        target_label: __param_game
      # metamod
      - source_labels: [__address__]
        regex: ^.+:\d+:\w+:\w+:(\w+).*$
        replacement: "$1"
        target_label: __param_metamod
      # sourcemod
      - source_labels: [__address__]
        regex: ^.+:\d+:\w+:\w+:(\w+):(\w+).*$
        replacement: "$2"
        target_label: __param_sourcemod
      # sourcepython
      - source_labels: [__address__]
        regex: ^.+:\d+:\w+:\w+:(\w+):(\w+):(\w+).*$
        replacement: "$3"
        target_label: __param_sourcepython
      - source_labels: [__address__]
        target_label: instance
      - target_label: __address__
        replacement: srcds-exporter:9591 # Real exporter's IP:Port

Values for game field :

Game Value
CS:GO csgo
Garry's Mod gmod
Counter Strike Source cstrike

How to access

If you want to see what the exporter returns, you can access :

http://<ip>:9591/metrics?ip=<srcds ip>&port=<srcds port>&password=<rcon password>&game=<game>&metamod=<metamod>&sourcepython=<sourcepython>&sourcemod=<sourcemod>

Grafana dashboard

Is there a Grafana dashboard available ? Of course!

CSGO/CSS : https://grafana.com/grafana/dashboards/13312

GMod : Coming

Languages
JavaScript 99.4%
Dockerfile 0.6%