1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Exporter: Listen at port 9972 for Prometheus exporter. (#3195)

This commit is contained in:
chundonglinlin 2022-10-01 07:35:54 +08:00 committed by GitHub
parent 4ad4dd0975
commit 9525511032
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 105 additions and 4 deletions

View file

@ -335,6 +335,7 @@ SrsServer::SrsServer()
webrtc_listener_ = new SrsTcpListener(this);
stream_caster_flv_listener_ = new SrsHttpFlvListener();
stream_caster_mpegts_ = new SrsUdpCasterListener();
exporter_listener_ = new SrsTcpListener(this);
// donot new object in constructor,
// for some global instance is not ready now,
@ -390,6 +391,7 @@ void SrsServer::destroy()
srs_freep(webrtc_listener_);
srs_freep(stream_caster_flv_listener_);
srs_freep(stream_caster_mpegts_);
srs_freep(exporter_listener_);
}
void SrsServer::dispose()
@ -405,6 +407,7 @@ void SrsServer::dispose()
webrtc_listener_->close();
stream_caster_flv_listener_->close();
stream_caster_mpegts_->close();
exporter_listener_->close();
// Fast stop to notify FFMPEG to quit, wait for a while then fast kill.
ingester->dispose();
@ -432,6 +435,7 @@ void SrsServer::gracefully_dispose()
webrtc_listener_->close();
stream_caster_flv_listener_->close();
stream_caster_mpegts_->close();
exporter_listener_->close();
srs_trace("listeners closed");
// Fast stop to notify FFMPEG to quit, wait for a while then fast kill.
@ -590,7 +594,7 @@ srs_error_t SrsServer::listen()
}
}
// Create HTTP server listener.
// Create HTTPS server listener.
if (_srs_config->get_https_stream_enabled()) {
https_listener_->set_endpoint(_srs_config->get_https_stream_listen())->set_label("HTTPS-Server");
if ((err = https_listener_->listen()) != srs_success) {
@ -637,7 +641,15 @@ srs_error_t SrsServer::listen()
return srs_error_wrap(err, "listen");
}
}
// Create exporter server listener.
if (_srs_config->get_exporter_enabled()) {
exporter_listener_->set_endpoint(_srs_config->get_exporter_listen())->set_label("Exporter-Server");
if ((err = exporter_listener_->listen()) != srs_success) {
return srs_error_wrap(err, "exporter server listen");
}
}
if ((err = conn_manager->start()) != srs_success) {
return srs_error_wrap(err, "connection manager");
}
@ -1159,6 +1171,10 @@ srs_error_t SrsServer::do_on_tcp_client(ISrsListener* listener, srs_netfd_t& stf
// TODO: FIXME: Should manage this connection by _srs_rtc_manager
resource = new SrsRtcTcpConn(new SrsTcpConnection(stfd2), ip, port, this);
#endif
} else if (listener == exporter_listener_) {
// TODO: FIXME: Maybe should support https metrics.
bool is_https = false;
resource = new SrsHttpxConn(is_https, this, new SrsTcpConnection(stfd2), http_api_mux, ip, port);
} else {
srs_close_stfd(stfd2);
srs_warn("Close for invalid fd=%d, ip=%s:%d", fd, ip.c_str(), port);