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 "platform.h"
22 : #include <gnunet/gnunet_json_lib.h>
23 : #include "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_json_lib.h"
28 : #include "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_batch_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 : "taler_exchange_success_transactions{type=\"%s\"} %llu\n"
62 : "# HELP taler_exchange_serialization_failures "
63 : " number of database serialization errors by type\n"
64 : "# TYPE taler_exchange_serialization_failures counter\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 : "taler_exchange_serialization_failures{type=\"%s\"} %llu\n"
69 : "# HELP taler_exchange_received_requests "
70 : " number of received requests by type\n"
71 : "# TYPE taler_exchange_received_requests counter\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_received_requests{type=\"%s\"} %llu\n"
76 : "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n"
77 : #if NOT_YET_IMPLEMENTED
78 : "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n"
79 : "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n"
80 : #endif
81 : "taler_exchange_idempotent_requests{type=\"%s\"} %llu\n"
82 : "# HELP taler_exchange_num_signatures "
83 : " number of signatures created by cipher\n"
84 : "# TYPE taler_exchange_num_signatures counter\n"
85 : "taler_exchange_num_signatures{type=\"%s\"} %llu\n"
86 : "taler_exchange_num_signatures{type=\"%s\"} %llu\n"
87 : "taler_exchange_num_signatures{type=\"%s\"} %llu\n"
88 : "# HELP taler_exchange_num_signature_verifications "
89 : " number of signatures verified by cipher\n"
90 : "# TYPE taler_exchange_num_signature_verifications counter\n"
91 : "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n"
92 : "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n"
93 : "taler_exchange_num_signature_verifications{type=\"%s\"} %llu\n"
94 : "# HELP taler_exchange_num_keyexchanges "
95 : " number of key exchanges done by cipher\n"
96 : "# TYPE taler_exchange_num_keyexchanges counter\n"
97 : "taler_exchange_num_keyexchanges{type=\"%s\"} %llu\n"
98 : "# HELP taler_exchange_batch_withdraw_num_coins "
99 : " number of coins withdrawn in a batch-withdraw request\n"
100 : "# TYPE taler_exchange_batch_withdraw_num_coins counter\n"
101 : "taler_exchange_batch_withdraw_num_coins{} %llu\n",
102 : "deposit",
103 : TEH_METRICS_num_success[TEH_MT_SUCCESS_DEPOSIT],
104 : "withdraw",
105 : TEH_METRICS_num_success[TEH_MT_SUCCESS_WITHDRAW],
106 : "batch-withdraw",
107 : TEH_METRICS_num_success[TEH_MT_SUCCESS_BATCH_WITHDRAW],
108 : "melt",
109 : TEH_METRICS_num_success[TEH_MT_SUCCESS_MELT],
110 : "refresh-reveal",
111 : TEH_METRICS_num_success[TEH_MT_SUCCESS_REFRESH_REVEAL],
112 : "other",
113 : TEH_METRICS_num_conflict[TEH_MT_REQUEST_OTHER],
114 : "deposit",
115 : TEH_METRICS_num_conflict[TEH_MT_REQUEST_DEPOSIT],
116 : "withdraw",
117 : TEH_METRICS_num_conflict[TEH_MT_REQUEST_WITHDRAW],
118 : "melt",
119 : TEH_METRICS_num_conflict[TEH_MT_REQUEST_MELT],
120 : "other",
121 : TEH_METRICS_num_requests[TEH_MT_REQUEST_OTHER],
122 : "deposit",
123 : TEH_METRICS_num_requests[TEH_MT_REQUEST_DEPOSIT],
124 : "withdraw",
125 : TEH_METRICS_num_requests[TEH_MT_REQUEST_WITHDRAW],
126 : "melt",
127 : TEH_METRICS_num_requests[TEH_MT_REQUEST_MELT],
128 : "withdraw",
129 : TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_WITHDRAW],
130 : #if NOT_YET_IMPLEMENTED
131 : "deposit",
132 : TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_DEPOSIT],
133 : "melt",
134 : TEH_METRICS_num_requests[TEH_MT_REQUEST_IDEMPOTENT_MELT],
135 : #endif
136 : "batch-withdraw",
137 : TEH_METRICS_num_requests[
138 : TEH_MT_REQUEST_IDEMPOTENT_BATCH_WITHDRAW],
139 : "rsa",
140 : TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_RSA],
141 : "cs",
142 : TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS],
143 : "eddsa",
144 : TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_EDDSA],
145 : "rsa",
146 : TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_RSA],
147 : "cs",
148 : TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_CS],
149 : "eddsa",
150 : TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_EDDSA],
151 : "ecdh",
152 : TEH_METRICS_num_keyexchanges[TEH_MT_KEYX_ECDH],
153 : TEH_METRICS_batch_withdraw_num_coins);
154 0 : resp = MHD_create_response_from_buffer (strlen (reply),
155 : reply,
156 : MHD_RESPMEM_MUST_FREE);
157 0 : ret = MHD_queue_response (rc->connection,
158 : MHD_HTTP_OK,
159 : resp);
160 0 : MHD_destroy_response (resp);
161 0 : return ret;
162 : }
163 :
164 :
165 : /* end of taler-exchange-httpd_metrics.c */
|