exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

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 */