Skip to content

Commit 348fb52

Browse files
committed
feat(metrics): add metrics module types
- Create `MetricsResponse` types to handle API responses - Add support for retrieving system metrics (CPU, memory, disk, network) - Add support for Typesense-specific memory metrics - Ensure compatibility with Python 3.11+ and earlier versions
1 parent fba7e6a commit 348fb52

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

src/typesense/metrics.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
"""
2+
This module provides functionality for retrieving metrics from the Typesense API.
3+
4+
It contains the Metrics class, which handles API operations for retrieving
5+
system and Typesense metrics such as CPU, memory, disk, and network usage.
6+
7+
Classes:
8+
MetricsResponse: Type definition for metrics response.
9+
Metrics: Manages retrieving metrics from the Typesense API.
10+
11+
Dependencies:
12+
- typesense.api_call: Provides the ApiCall class for making API requests.
13+
14+
Note: This module uses conditional imports to support both Python 3.11+ and earlier versions.
15+
"""
16+
17+
import sys
18+
19+
if sys.version_info >= (3, 11):
20+
import typing
21+
else:
22+
import typing_extensions as typing
23+
24+
from typesense.api_call import ApiCall
25+
26+
27+
class MetricsResponseBase(typing.TypedDict):
28+
"""
29+
Response schema for metrics retrieval.
30+
31+
This TypedDict includes system metrics like CPU, memory, disk, and network usage,
32+
as well as Typesense-specific memory metrics.
33+
34+
Attributes:
35+
system_cpu_active_percentage (str): Overall CPU active percentage.
36+
system_disk_total_bytes (str): Total disk space in bytes.
37+
system_disk_used_bytes (str): Used disk space in bytes.
38+
system_memory_total_bytes (str): Total system memory in bytes.
39+
system_memory_used_bytes (str): Used system memory in bytes.
40+
system_network_received_bytes (str): Total network bytes received.
41+
system_network_sent_bytes (str): Total network bytes sent.
42+
typesense_memory_active_bytes (str): Active memory used by Typesense.
43+
typesense_memory_allocated_bytes (str): Allocated memory for Typesense.
44+
typesense_memory_fragmentation_ratio (str): Memory fragmentation ratio.
45+
typesense_memory_mapped_bytes (str): Mapped memory in bytes.
46+
typesense_memory_metadata_bytes (str): Memory used for metadata.
47+
typesense_memory_resident_bytes (str): Resident memory in bytes.
48+
typesense_memory_retained_bytes (str): Retained memory in bytes.
49+
"""
50+
51+
system_cpu_active_percentage: str
52+
system_disk_total_bytes: str
53+
system_disk_used_bytes: str
54+
system_memory_total_bytes: str
55+
system_memory_used_bytes: str
56+
system_network_received_bytes: str
57+
system_network_sent_bytes: str
58+
typesense_memory_active_bytes: str
59+
typesense_memory_allocated_bytes: str
60+
typesense_memory_fragmentation_ratio: str
61+
typesense_memory_mapped_bytes: str
62+
typesense_memory_metadata_bytes: str
63+
typesense_memory_resident_bytes: str
64+
typesense_memory_retained_bytes: str
65+
66+
67+
class MetricsResponse(MetricsResponseBase):
68+
"""Extended MetricsResponse with optional per-CPU core metrics."""
69+
70+
system_memory_total_swap_bytes: str
71+
system_memory_used_swap_bytes: str
72+
system_cpu1_active_percentage: typing.Optional[str]
73+
system_cpu2_active_percentage: typing.Optional[str]
74+
system_cpu3_active_percentage: typing.Optional[str]
75+
system_cpu4_active_percentage: typing.Optional[str]
76+
system_cpu5_active_percentage: typing.Optional[str]
77+
system_cpu6_active_percentage: typing.Optional[str]
78+
system_cpu7_active_percentage: typing.Optional[str]
79+
system_cpu8_active_percentage: typing.Optional[str]
80+
system_cpu9_active_percentage: typing.Optional[str]
81+
system_cpu10_active_percentage: typing.Optional[str]
82+
system_cpu11_active_percentage: typing.Optional[str]
83+
system_cpu12_active_percentage: typing.Optional[str]
84+
system_cpu13_active_percentage: typing.Optional[str]
85+
system_cpu14_active_percentage: typing.Optional[str]
86+
system_cpu15_active_percentage: typing.Optional[str]
87+
system_cpu16_active_percentage: typing.Optional[str]
88+
system_cpu17_active_percentage: typing.Optional[str]
89+
system_cpu18_active_percentage: typing.Optional[str]
90+
system_cpu19_active_percentage: typing.Optional[str]
91+
system_cpu20_active_percentage: typing.Optional[str]
92+
system_cpu21_active_percentage: typing.Optional[str]
93+
system_cpu22_active_percentage: typing.Optional[str]
94+
system_cpu23_active_percentage: typing.Optional[str]
95+
system_cpu24_active_percentage: typing.Optional[str]
96+
97+

0 commit comments

Comments
 (0)