// Matrix Construct // // Copyright (C) Matrix Construct Developers, Authors & Contributors // Copyright (C) 2016-2018 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice is present in all copies. The // full license for this software is available in the LICENSE file. using namespace ircd; mapi::header IRCD_MODULE { "Prometheus Metrics" }; resource stats_resource { "/stats", { "Prometheus Metrics" } }; static resource::response get__stats(client &, const resource::request &); resource::method stats_get { stats_resource, "GET", get__stats }; resource::response get__stats(client &client, const resource::request &request) { static const size_t buf_max { 4096 }; char buf[buf_max]; std::stringstream out; pubsetbuf(out, buf); const time_t ts { ircd::time() }; out << "aio_requests_total" << ' ' << fs::aio::stats.requests << ' ' << ts << '\n'; out << "aio_requests_bytes_total" << ' ' << fs::aio::stats.bytes_requests << ' ' << ts << '\n'; const string_view output { view(out, buf) }; return resource::response { client, output, "text/plain", http::OK }; }