taler-exchange-httpd_metrics.c (7581B)
1 /* 2 This file is part of TALER 3 Copyright (C) 2015-2021 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 3, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 */ 16 /** 17 * @file taler-exchange-httpd_metrics.c 18 * @brief Handle /metrics requests 19 * @author Christian Grothoff 20 */ 21 #include "taler/platform.h" 22 #include <gnunet/gnunet_json_lib.h> 23 #include "taler/taler_dbevents.h" 24 #include "taler-exchange-httpd_responses.h" 25 #include "taler-exchange-httpd_keys.h" 26 #include "taler-exchange-httpd_metrics.h" 27 #include "taler/taler_json_lib.h" 28 #include "taler/taler_mhd_lib.h" 29 #include <jansson.h> 30 31 32 unsigned long long TEH_METRICS_num_requests[TEH_MT_REQUEST_COUNT]; 33 34 unsigned long long TEH_METRICS_withdraw_num_coins; 35 36 unsigned long long TEH_METRICS_num_conflict[TEH_MT_REQUEST_COUNT]; 37 38 unsigned long long TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_COUNT]; 39 40 unsigned long long TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_COUNT]; 41 42 unsigned long long TEH_METRICS_num_keyexchanges[TEH_MT_KEYX_COUNT]; 43 44 unsigned long long TEH_METRICS_num_success[TEH_MT_SUCCESS_COUNT]; 45 46 47 MHD_RESULT 48 TEH_handler_metrics (struct TEH_RequestContext *rc, 49 const char *const args[]) 50 { 51 char *reply; 52 struct MHD_Response *resp; 53 MHD_RESULT ret; 54 55 (void) args; 56 GNUNET_asprintf (&reply, 57 "taler_exchange_success_transactions{type=\"%s\"} %llu\n" 58 "taler_exchange_success_transactions{type=\"%s\"} %llu\n" 59 "taler_exchange_success_transactions{type=\"%s\"} %llu\n" 60 "taler_exchange_success_transactions{type=\"%s\"} %llu\n" 61 "# HELP taler_exchange_serialization_failures " 62 " number of database serialization errors by type\n" 63 "# TYPE taler_exchange_serialization_failures counter\n" 64 "taler_exchange_serialization_failures{type=\"%s\"} %llu\n" 65 "taler_exchange_serialization_failures{type=\"%s\"} %llu\n" 66 "taler_exchange_serialization_failures{type=\"%s\"} %llu\n" 67 "taler_exchange_serialization_failures{type=\"%s\"} %llu\n" 68 "# HELP taler_exchange_received_requests " 69 " number of received requests by type\n" 70 "# TYPE taler_exchange_received_requests counter\n" 71 "taler_exchange_received_requests{type=\"%s\"} %llu\n" 72 "taler_exchange_received_requests{type=\"%s\"} %llu\n" 73 "taler_exchange_received_requests{type=\"%s\"} %llu\n" 74 "taler_exchange_received_requests{type=\"%s\"} %llu\n" 75 "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n" 76 #if NOT_YET_IMPLEMENTED 77 "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n" 78 "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n" 79 #endif 80 "# HELP taler_exchange_num_signatures " 81 " number of signatures created by cipher\n" 82 "# TYPE taler_exchange_num_signatures counter\n" 83 "taler_exchange_num_signatures{type=\"%s\"} %llu\n" 84 "taler_exchange_num_signatures{type=\"%s\"} %llu\n" 85 "taler_exchange_num_signatures{type=\"%s\"} %llu\n" 86 "# HELP taler_exchange_num_signature_verifications " 87 " number of signatures verified by cipher\n" 88 "# TYPE taler_exchange_num_signature_verifications counter\n" 89 "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n" 90 "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n" 91 "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n" 92 "# HELP taler_exchange_num_keyexchanges " 93 " number of key exchanges done by cipher\n" 94 "# TYPE taler_exchange_num_keyexchanges counter\n" 95 "taler_exchange_num_keyexchanges{type=\"%s\"} %llu\n" 96 "# HELP taler_exchange_withdraw_num_coins " 97 " number of coins withdrawn in a withdraw request\n" 98 "# TYPE taler_exchange_withdraw_num_coins counter\n" 99 "taler_exchange_withdraw_num_coins{} %llu\n", 100 "deposit", 101 TEH_METRICS_num_success[TEH_MT_SUCCESS_DEPOSIT], 102 "withdraw", 103 TEH_METRICS_num_success[TEH_MT_SUCCESS_WITHDRAW], 104 "melt", 105 TEH_METRICS_num_success[TEH_MT_SUCCESS_MELT], 106 "refresh-reveal", 107 TEH_METRICS_num_success[TEH_MT_SUCCESS_REFRESH_REVEAL], 108 "other", 109 TEH_METRICS_num_conflict[TEH_MT_REQUEST_OTHER], 110 "deposit", 111 TEH_METRICS_num_conflict[TEH_MT_REQUEST_DEPOSIT], 112 "withdraw", 113 TEH_METRICS_num_conflict[TEH_MT_REQUEST_WITHDRAW], 114 "melt", 115 TEH_METRICS_num_conflict[TEH_MT_REQUEST_MELT], 116 "other", 117 TEH_METRICS_num_requests[TEH_MT_REQUEST_OTHER], 118 "deposit", 119 TEH_METRICS_num_requests[TEH_MT_REQUEST_DEPOSIT], 120 "withdraw", 121 TEH_METRICS_num_requests[TEH_MT_REQUEST_WITHDRAW], 122 "melt", 123 TEH_METRICS_num_requests[TEH_MT_REQUEST_MELT], 124 "withdraw", 125 TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_WITHDRAW], 126 #if NOT_YET_IMPLEMENTED 127 "deposit", 128 TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_DEPOSIT], 129 "melt", 130 TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_MELT], 131 "kyc-upload", 132 TEH_METRICS_num_requests[TEH_MT_REQUEST_KYC_UPLOAD], 133 #endif 134 "rsa", 135 TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_RSA], 136 "cs", 137 TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS], 138 "eddsa", 139 TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_EDDSA], 140 "rsa", 141 TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_RSA], 142 "cs", 143 TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_CS], 144 "eddsa", 145 TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_EDDSA], 146 "ecdh", 147 TEH_METRICS_num_keyexchanges[TEH_MT_KEYX_ECDH], 148 TEH_METRICS_withdraw_num_coins); 149 resp = MHD_create_response_from_buffer (strlen (reply), 150 reply, 151 MHD_RESPMEM_MUST_FREE); 152 ret = MHD_queue_response (rc->connection, 153 MHD_HTTP_OK, 154 resp); 155 MHD_destroy_response (resp); 156 return ret; 157 } 158 159 160 /* end of taler-exchange-httpd_metrics.c */