68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# FiveM Prometheus
|
|
|
|
This resource adds a [Prometheus](https://prometheus.io/) endpoint to your FX Server.
|
|
There are some default metrics available and you can add yours.
|
|
|
|
## Default metrics
|
|
|
|
[](https://i.postimg.cc/6qqhFjF5/Selection_887.png)
|
|
|
|
| Name | Type | Description |
|
|
|---------------------------- |----------- |--------------------------------- |
|
|
| fxs_player_count | Gauge | Number of connected players |
|
|
| fxs_player_connections | Counter | Number of player connections |
|
|
| fxs_player_disconnections | Counter | Number of player disconnections |
|
|
| fxs_average_player_latency | Gauge | Average player latency |
|
|
| fxs_players_latency | Histogram | Players latency |
|
|
| fxs_min_player_ping | Gauge | Minimum player ping |
|
|
| fxs_max_player_ping | Gauge | Maximum player ping |
|
|
|
|
## Configuration
|
|
|
|
Convars available:
|
|
|
|
| Name | Type | Default value | Description |
|
|
|------------------------- |-------- |--------------- |------------------------------------------------------------- |
|
|
| prometheus_timeout | int | 5000 | Interval in ms to collect data |
|
|
| prometheus_auth_enabled | int | 0 | Protects the endpoint with credentials if true (`1`) |
|
|
| prometheus_login | string | "admin" | Endpoint login |
|
|
| prometheus_password | string | "admin" | Endpoint password |
|
|
|
|
## Prometheus configuration
|
|
|
|
```
|
|
# A scrape configuration containing exactly one FXS endpoint to scrape.
|
|
scrape_configs:
|
|
- job_name: 'fxserver'
|
|
scrape_interval: 60s
|
|
basic_auth:
|
|
username: admin
|
|
password: admin
|
|
metrics_path: /prometheus/metrics
|
|
static_configs:
|
|
- targets: ['127.0.0.1:30120']
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Add a new metric
|
|
|
|
```lua
|
|
--[[
|
|
* @event prometheus:addMetric
|
|
*
|
|
* @param {string} type - The metric type, i.e. Gauge.
|
|
* @param {string} name - The metric name.
|
|
* @param {string} description - The metric description.
|
|
* @param {function} cb - A callback function to update the metric with a method name (i.e. set) and a value.
|
|
]]
|
|
TriggerEvent("prometheus:addMetric", "Gauge", "fxs_gauge_example", "Gauge example.", function(cb)
|
|
math.randomseed(os.clock())
|
|
if math.random(0, 1) == 1 then
|
|
cb("set", 42)
|
|
else
|
|
cb("set", 1664)
|
|
end
|
|
end)
|
|
```
|