How to enable prometheus?

Hey guys,

I see that Alexandre has implemented prometheus into jitsi meet during GSOC 2022 which is great news.

However there doesn’t seem to be any documentation on how to implement it.

I tried in jvb.conf setting prometheus to enabled
rest {
debug {
enabled = true
}
health {
enabled = true
}
shutdown {
# Note that the shutdown API requires the COLIBRI API to also be enabled.
enabled = false
}
drain {
enabled = true
}
version {
enabled = true
}
prometheus {
enabled = true
}
}

and also in jicofo.conf

rest {
port = 8888
tls-port = 8843

prometheus {
  // Enable the prometheus /metrics endpoint.
  enabled = true
}

}

But when I restart both services I see in the jvb log:
JVB 2022-12-12 19:28:15.794 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime: A provider org.jitsi.rest.prometheus.Prometheus registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.rest.prometheus.Prometheus will be ignored

What are these “constraint configuration problems” and how do I enable prometheus without having to use any of the exporters floating around in the threads here?

Thanks

Is anyone using the recent prometheus integration from GSOC 2022 to monitor their jitsi meet deployment?

I can’t be the only one trying to get this working

Isn’t anyone using prometheus?

Can someone help or point me in the right direction please?

Thanks

jvb.conf:

videobridge {
  apis {
    rest {
      enabled = true
    }
  }
  rest {
    debug {
      enabled = true
    }
    health {
      enabled = true
    }
    shutdown {
      # Note that the shutdown API requires the COLIBRI API to also be enabled.
      enabled = false
    }
    drain {
      enabled = true
    }
    version {
      enabled = true
    }
    prometheus {
      enabled = true
    }
  }

  http-servers {
    public {
      host = 127.0.0.1
      port = 9090
    }
    private {
      host = 127.0.0.1
      port = 9091
    }
  }
.....
}

Watch out for the Accept Header while querying, otherwise you will get JSON…

curl -v -H 'Accept: text/plain; version=0.0.4' 127.0.0.1:9091/metrics

Works with Jicofo too…
It seem it doesnt make a difference, if prometheus is enabled or not, i still get the results :slight_smile:

1 Like

Thanks! Going to try that out

Edit: Are you getting actual results? In my testing I am able to query the endpoint but it seems to always return all fields with 0…

{“partially_failed_conferences_total”:0,“ice_failed_total”:0,“dominant_speaker_changes_total”:0,“current_visitors”:0,“endpoints_dtls_failed_total”:0,“layering_changes_received_total”:0,“data_channel_messages_sent_total”:0,“relays_total”:0,“endpoints_reconnected_total”:0,“ice_succeeded_total”:0,“data_channel_messages_received_total”:0,“preemptive_keyframe_requests_sent_total”:0,“relays_no_message_transport_after_delay_total”:0,“endpoints_disconnected_total”:0,“relay_packets_received_total”:0,“endpoints_total”:0,“conferences”:0,“preemptive_keyframe_requests_suppressed_total”:0,“ice_succeeded_tcp_total”:0,“local_endpoints”:0,“relay_packets_sent_total”:0,“visitors_total”:0,“conferences_completed_total”:0,“packets_sent_total”:0,“incoming_bitrate_expirations_total”:0,“colibri_web_socket_messages_sent_total”:0,“ice_succeeded_relayed_total”:0,“conferences_created_total”:0,“failed_conferences_total”:0,“healthy”:true,“colibri_web_socket_messages_received_total”:0,“packets_received_total”:0,“keyframes_received_total”:0,* Connection #0 to host 127.0.0.1 left intact
“endpoints_no_message_transport_after_delay_total”:0}