summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2023-02-17 10:22:38 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2023-02-17 13:20:08 +0000
commit9bad60ef6d692745fbbf98338dfb17751f47dac3 (patch)
tree282424a1d8f2072f37237522b94b10cccf0f30ef /vespalib
parent8ca01ebd0196d2f01087ae1440f65e3584e87a0f (diff)
Add metrics tracking failed RPC and status page capability checks
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/statistics.cpp16
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/statistics.h39
2 files changed, 49 insertions, 6 deletions
diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
index a308a20bf2f..dc642518abb 100644
--- a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
@@ -9,6 +9,8 @@ ConnectionStatistics ConnectionStatistics::server_stats = {};
ConfigStatistics ConfigStatistics::instance = {};
+CapabilityStatistics CapabilityStatistics::instance = {};
+
ConnectionStatistics::Snapshot ConnectionStatistics::snapshot() const noexcept {
Snapshot s;
s.insecure_connections = insecure_connections.load(std::memory_order_relaxed);
@@ -43,4 +45,18 @@ ConfigStatistics::Snapshot ConfigStatistics::Snapshot::subtract(const Snapshot&
return s;
}
+CapabilityStatistics::Snapshot CapabilityStatistics::snapshot() const noexcept {
+ Snapshot s;
+ s.rpc_capability_checks_failed = rpc_capability_checks_failed.load(std::memory_order_relaxed);
+ s.status_capability_checks_failed = status_capability_checks_failed.load(std::memory_order_relaxed);
+ return s;
+}
+
+CapabilityStatistics::Snapshot CapabilityStatistics::Snapshot::subtract(const Snapshot& rhs) const noexcept {
+ Snapshot s;
+ s.rpc_capability_checks_failed = rpc_capability_checks_failed - rhs.rpc_capability_checks_failed;
+ s.status_capability_checks_failed = status_capability_checks_failed - rhs.status_capability_checks_failed;
+ return s;
+}
+
}
diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.h b/vespalib/src/vespa/vespalib/net/tls/statistics.h
index 3e94ed95590..e693b09a3d2 100644
--- a/vespalib/src/vespa/vespalib/net/tls/statistics.h
+++ b/vespalib/src/vespa/vespalib/net/tls/statistics.h
@@ -55,12 +55,12 @@ struct ConnectionStatistics {
uint64_t invalid_peer_credentials = 0;
uint64_t broken_tls_connections = 0;
- Snapshot subtract(const Snapshot& rhs) const noexcept;
+ [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept;
};
- // Acquires a snapshot of statistics that is expected to be reasonably up to date.
+ // Acquires a snapshot of statistics that is expected to be reasonably up-to-date.
// Thread safe.
- Snapshot snapshot() const noexcept;
+ [[nodiscard]] Snapshot snapshot() const noexcept;
static ConnectionStatistics client_stats;
static ConnectionStatistics server_stats;
@@ -85,15 +85,42 @@ struct ConfigStatistics {
uint64_t successful_config_reloads = 0;
uint64_t failed_config_reloads = 0;
- Snapshot subtract(const Snapshot& rhs) const noexcept;
+ [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept;
};
- // Acquires a snapshot of statistics that is expected to be reasonably up to date.
+ // Acquires a snapshot of statistics that is expected to be reasonably up-to-date.
// Thread safe.
- Snapshot snapshot() const noexcept;
+ [[nodiscard]] Snapshot snapshot() const noexcept;
static ConfigStatistics instance;
static ConfigStatistics& get() noexcept { return instance; }
};
+struct CapabilityStatistics {
+ std::atomic<uint64_t> rpc_capability_checks_failed = 0;
+ std::atomic<uint64_t> status_capability_checks_failed = 0;
+
+ void inc_rpc_capability_checks_failed() noexcept {
+ rpc_capability_checks_failed.fetch_add(1, std::memory_order_relaxed);
+ }
+
+ void inc_status_capability_checks_failed() noexcept {
+ status_capability_checks_failed.fetch_add(1, std::memory_order_relaxed);
+ }
+
+ struct Snapshot {
+ uint64_t rpc_capability_checks_failed = 0;
+ uint64_t status_capability_checks_failed = 0;
+
+ [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept;
+ };
+
+ // Acquires a snapshot of statistics that is expected to be reasonably up-to-date.
+ // Thread safe.
+ [[nodiscard]] Snapshot snapshot() const noexcept;
+
+ static CapabilityStatistics instance;
+ static CapabilityStatistics& get() noexcept { return instance; }
+};
+
}