Line data Source code
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 0 : 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 0 : 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 0 : resp = MHD_create_response_from_buffer (strlen (reply),
150 : reply,
151 : MHD_RESPMEM_MUST_FREE);
152 0 : ret = MHD_queue_response (rc->connection,
153 : MHD_HTTP_OK,
154 : resp);
155 0 : MHD_destroy_response (resp);
156 0 : return ret;
157 : }
158 :
159 :
160 : /* end of taler-exchange-httpd_metrics.c */
|