@cryptotaxi247 / CoPilot / commits / 143e1db2

graylog mkdocs

Taylor committed Jul 11, 2023 at 17:50 UTC 143e1db2f5463a38301f50432e47c136a70e39b6
4 files changed +2794 -2523
backend/app/models/models.py
-211
@@ -172,214 +172,3 @@ class ConnectorsSchema(ma.Schema):
172
173 connector_schema: ConnectorsSchema = ConnectorsSchema()
174 connectors_schema: ConnectorsSchema = ConnectorsSchema(many=True)
175 -
176 -
177 -# Class for the disabled rule IDs which will store the rule ID, previous configuration, new configuration, reason for
178 -# disabling, date disabled, and the length of time the rule will be disabled for
179 -# Path: backend\app\models.py
180 -# class DisabledRules(db.Model):
181 -# id = db.Column(db.Integer, primary_key=True)
182 -# rule_id = db.Column(db.String(100))
183 -# previous_level = db.Column(db.String(1000))
184 -# new_level = db.Column(db.String(1000))
185 -# reason_for_disabling = db.Column(db.String(100))
186 -# date_disabled = db.Column(db.DateTime, default=datetime.utcnow)
187 -# length_of_time = db.Column(db.Integer)
188 -
189 -# def __init__(
190 -# self,
191 -# rule_id,
192 -# previous_level,
193 -# new_level,
194 -# reason_for_disabling,
195 -# length_of_time,
196 -# ):
197 -# self.rule_id = rule_id
198 -# self.previous_level = previous_level
199 -# self.new_level = new_level
200 -# self.reason_for_disabling = reason_for_disabling
201 -# self.length_of_time = length_of_time
202 -
203 -# def __repr__(self):
204 -# return f"<DisabledRules {self.rule_id}>"
205 -
206 -
207 -# class DisabledRulesSchema(ma.Schema):
208 -# class Meta:
209 -# fields = (
210 -# "id",
211 -# "rule_id",
212 -# "previous_level",
213 -# "new_level",
214 -# "reason_for_disabling",
215 -# "date_disabled",
216 -# "length_of_time",
217 -# )
218 -
219 -
220 -# disabled_rule_schema = DisabledRulesSchema()
221 -# disabled_rules_schema = DisabledRulesSchema(many=True)
222 -
223 -
224 -# Class for Wazuh Indexer allocation which stores disk stats and the host.
225 -# Generate timestamp for each entry and invoke every 5 minutes.
226 -# Path: backend\app\models.py
227 -# class WazuhIndexerAllocation(db.Model):
228 -# id = db.Column(db.Integer, primary_key=True)
229 -# node = db.Column(db.String(100))
230 -# disk_used = db.Column(db.Float)
231 -# disk_available = db.Column(db.Float)
232 -# disk_total = db.Column(db.Float)
233 -# disk_percent = db.Column(db.Float)
234 -# timestamp = db.Column(db.DateTime, default=datetime.utcnow)
235 -
236 -# def __init__(
237 -# self,
238 -# node,
239 -# disk_used,
240 -# disk_available,
241 -# disk_total,
242 -# disk_percent,
243 -# ):
244 -# self.node = node
245 -# self.disk_used = disk_used
246 -# self.disk_available = disk_available
247 -# self.disk_total = disk_total
248 -# self.disk_percent = disk_percent
249 -
250 -# def __repr__(self):
251 -# return f"<WazuhIndexerAllocation {self.node}>"
252 -
253 -
254 -# class WazuhIndexerAllocationSchema(ma.Schema):
255 -# class Meta:
256 -# fields = (
257 -# "id",
258 -# "node",
259 -# "disk_used",
260 -# "disk_available",
261 -# "disk_total",
262 -# "disk_percent",
263 -# "timestamp",
264 -# )
265 -
266 -
267 -# wazuh_indexer_allocation_schema = WazuhIndexerAllocationSchema()
268 -# wazuh_indexer_allocations_schema = WazuhIndexerAllocationSchema(many=True)
269 -
270 -
271 -# # Class for Graylog allocation which stores throughput metrics
272 -# # Generate timestamp for each entry and invoke every 5 minutes.
273 -# # Path: backend\app\models.py
274 -# class GraylogMetricsAllocation(db.Model):
275 -# id = db.Column(db.Integer, primary_key=True)
276 -# input_usage = db.Column(db.Float)
277 -# output_usage = db.Column(db.Float)
278 -# processor_usage = db.Column(db.Float)
279 -# input_1_sec_rate = db.Column(db.Float)
280 -# output_1_sec_rate = db.Column(db.Float)
281 -# total_input = db.Column(db.Float)
282 -# total_output = db.Column(db.Float)
283 -# timestamp = db.Column(db.DateTime, default=datetime.utcnow)
284 -
285 -# def __init__(
286 -# self,
287 -# input_usage,
288 -# output_usage,
289 -# processor_usage,
290 -# input_1_sec_rate,
291 -# output_1_sec_rate,
292 -# total_input,
293 -# total_output,
294 -# ):
295 -# self.input_usage = input_usage
296 -# self.output_usage = output_usage
297 -# self.processor_usage = processor_usage
298 -# self.input_1_sec_rate = input_1_sec_rate
299 -# self.output_1_sec_rate = output_1_sec_rate
300 -# self.total_input = total_input
301 -# self.total_output = total_output
302 -
303 -# def __repr__(self):
304 -# return f"<GraylogMetricsAllocation {self.id}>"
305 -
306 -
307 -# class GraylogMetricsAllocationSchema(ma.Schema):
308 -# class Meta:
309 -# fields = (
310 -# "id",
311 -# "input_usage",
312 -# "output_usage",
313 -# "processor_usage",
314 -# "input_1_sec_rate",
315 -# "output_1_sec_rate",
316 -# "total_input",
317 -# "total_output",
318 -# "timestamp",
319 -# )
320 -
321 -
322 -# graylog_metrics_allocation_schema = GraylogMetricsAllocationSchema()
323 -# graylog_metrics_allocations_schema = GraylogMetricsAllocationSchema(many=True)
324 -
325 -
326 -# Class for cases which stores the case ID, case name, list of agents
327 -# Path: backend\app\models.py
328 -# class Case(db.Model):
329 -# id = db.Column(db.Integer, primary_key=True)
330 -# case_id = db.Column(db.Integer)
331 -# case_name = db.Column(db.String(100))
332 -# agents = db.Column(db.String(1000))
333 -
334 -# def __init__(self, case_id, case_name, agents):
335 -# self.case_id = case_id
336 -# self.case_name = case_name
337 -# self.agents = agents
338 -
339 -# def __repr__(self):
340 -# return f"<Case {self.case_id}>"
341 -
342 -
343 -# class CaseSchema(ma.Schema):
344 -# class Meta:
345 -# fields = (
346 -# "id",
347 -# "case_id",
348 -# "case_name",
349 -# "agents",
350 -# )
351 -
352 -
353 -# case_schema = CaseSchema()
354 -# cases_schema = CaseSchema(many=True)
355 -
356 -
357 -# # Class for artifacts collected which stores the artifact name, artificat results (json), hostname
358 -# # Path: backend\app\models.py
359 -# class Artifact(db.Model):
360 -# id = db.Column(db.Integer, primary_key=True)
361 -# artifact_name = db.Column(db.String(100))
362 -# artifact_results = db.Column(TEXT)
363 -# hostname = db.Column(db.String(100))
364 -
365 -# def __init__(self, artifact_name, artifact_results, hostname):
366 -# self.artifact_name = artifact_name
367 -# self.artifact_results = artifact_results
368 -# self.hostname = hostname
369 -
370 -# def __repr__(self):
371 -# return f"<Artifact {self.artifact_name}>"
372 -
373 -
374 -# class ArtifactSchema(ma.Schema):
375 -# class Meta:
376 -# fields = (
377 -# "id",
378 -# "artifact_name",
379 -# "artifact_results",
380 -# "hostname",
381 -# )
382 -
383 -
384 -# artifact_schema = ArtifactSchema()
385 -# artifacts_schema = ArtifactSchema(many=True)
backend/docs/graylog.md
+206 -1
@@ -2,18 +2,223 @@
2
3 ### <span style="color:blue">Graylog Model</span>
4
5 +# graylog.py
6 +
7 +The provided Python file `graylog.py` defines a database model and a corresponding schema for storing, retrieving, and manipulating Graylog metrics data. This file is likely part of a larger system where Graylog is used for log management.
8 +
9 +Here is a summary of what the script does:
10 +
11 +## GraylogMetricsAllocation Class
12 +
13 +The `GraylogMetricsAllocation` class is a SQLAlchemy model, which corresponds to a database table `graylog_metrics_allocation`. This table stores throughput metrics from Graylog. The table includes the following fields:
14 +
15 +- `id`: The primary key of the table.
16 +- `input_usage`: The input usage value.
17 +- `output_usage`: The output usage value.
18 +- `processor_usage`: The processor usage value.
19 +- `input_1_sec_rate`: The input per second rate.
20 +- `output_1_sec_rate`: The output per second rate.
21 +- `total_input`: The total input value.
22 +- `total_output`: The total output value.
23 +- `timestamp`: The timestamp when the entry is created, defaulting to the current time.
24 +
25 +## GraylogMetricsAllocationSchema Class
26 +
27 +The `GraylogMetricsAllocationSchema` class is a Marshmallow schema that facilitates serialization and deserialization of `GraylogMetricsAllocation` instances. This can be helpful when converting instances to JSON format for API responses or when parsing incoming data.
28 +
29 +At the end of the script, instances of `GraylogMetricsAllocationSchema` are created for single and multiple `GraylogMetricsAllocation` instances, respectively.
30 +
31 +This file provides a way to store and work with Graylog metrics data in a structured manner, allowing for easy retrieval, manipulation, and serialization/deserialization of the data.
32 +
33 ::: app.models.graylog
34 <br>
35
36 ### <span style="color:green">Graylog Routes</span>
37
38 +## graylog.py
39 +
40 +The `graylog.py` file appears to be a Flask application module that defines several HTTP endpoints related to interacting with the Graylog service. It uses Flask's Blueprint functionality to create endpoints under the "/graylog" path. Here are the details:
41 +
42 +### Imports
43 +
44 +The script imports necessary modules and services at the beginning:
45 +
46 +- `flask`: A micro web framework written in Python.
47 +- `jsonify`: A Flask function that converts Python data structures to JSON format.
48 +- `app.services.Graylog.*`: Various services related to Graylog, such as `IndexService`, `InputsService`, `MessagesService`, and `MetricsService`.
49 +
50 +### Blueprint
51 +
52 +The script defines a `Blueprint` named `bp`, which is a way to organize a group of related views and other code in Flask. The `bp` is registered with the Flask application and all the defined routes under the "/graylog" path will be associated with this blueprint.
53 +
54 +The endpoints defined in this script are not provided in the given information, so a detailed breakdown of the routes and their associated functions cannot be provided without reviewing the code further.
55 +
56 +This file is likely part of a larger Flask application that provides an API interface for interacting with the Graylog service. It follows a modular approach by organizing related endpoints and functionality into a blueprint, promoting code organization and maintainability.
57 +
58 +## Endpoints
59 +
60 +The `graylog.py` script defines the following endpoints under the `/graylog` path:
61 +
62 +- **GET /graylog/messages**: This endpoint returns the latest 10 messages from Graylog. It utilizes the `MessagesService` to collect these messages.
63 +
64 +- **GET /graylog/metrics**: This endpoint returns Graylog metrics, including the uncommitted journal size. It utilizes the `MetricsService` to collect these metrics.
65 +
66 +- **GET /graylog/indices**: This endpoint returns a list of all Graylog indices. It utilizes the `IndexService` to collect these indices.
67 +
68 +- **DELETE /graylog/indices/<index_name>/delete**: This endpoint deletes a specified Graylog index. It utilizes the `IndexService` to delete the specified index.
69 +
70 +- **GET /graylog/inputs**: This endpoint returns a list of all running and configured inputs in Graylog. It utilizes the `InputsService` to collect these inputs.
71 +
72 +## Services
73 +
74 +The `graylog.py` script uses several services to interact with Graylog:
75 +
76 +- `MessagesService`: Used to collect messages from Graylog.
77 +- `MetricsService`: Used to collect Graylog metrics.
78 +- `IndexService`: Used to collect and delete Graylog indices.
79 +- `InputsService`: Used to collect running and configured inputs in Graylog.
80 +
81 +These services handle the implementation details of interacting with the Graylog API to perform the respective operations.
82 +
83 +Each endpoint is well-documented with a docstring, providing clear descriptions of its purpose, accepted arguments (if any), and the returned data. The script demonstrates good organization and adheres to common practices for structuring Flask applications.
84 +
85 ::: app.routes.graylog
86 <br>
87
13 -### <span style="color:red">Graylog Services</span>
88 +### <span style="color:red">Graylog Services Index</span>
89 +
90 +## IndexService Class
91 +
92 +The `index.py` file defines the `IndexService` class, which encapsulates the functionality for interacting with the Graylog indexing system.
93 +
94 +### Imports
95 +
96 +The script imports the following modules and services:
97 +
98 +- `requests`: A Python library for making HTTP requests.
99 +- `loguru`: A third-party library providing a more convenient and powerful logger for Python.
100 +- `typing`: A standard Python library for supporting type hints.
101 +- `app.services.Graylog.universal.UniversalService`: The `UniversalService` class from the `app.services.Graylog.universal` module.
102 +
103 +### Class Definition: IndexService
104 +
105 +The `IndexService` class encapsulates the logic for pulling index data from Graylog. It provides the following methods:
106 +
107 +- `__init__`: Initializes the `IndexService` by collecting Graylog details using `UniversalService`.
108 +- `collect_indices`: Collects the indices that are managed by Graylog.
109 +- `_collect_managed_indices`: Core method for collecting indices from Graylog by making a GET request to the Graylog API endpoint `/api/system/indexer/indices`.
110 +- `_extract_index_names`: Helper method to extract the names of the indices from the Graylog API response.
111 +- `delete_index`: Deletes a specified index from Graylog.
112 +- `_delete_index`: Core method for deleting an index from Graylog by making a DELETE request to the Graylog API endpoint `/api/system/indexer/indices/{index_name}`.
113 +
114 +### Error Handling
115 +
116 +The script includes error handling using try/except blocks. When an error occurs, the error message is logged using `loguru`'s `logger.error` function, and a dictionary with a failure message and success status set to False is returned.
117 +
118 +The `IndexService` class follows good practices for encapsulating functionality related to Graylog's indexing system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.
119
120 ::: app.services.Graylog.index
121 +
122 +### <span style="color:red">Graylog Services Inputs</span>
123 +
124 +## InputsService Class
125 +
126 +The `inputs.py` file defines the `InputsService` class, which encapsulates the functionality for interacting with the Graylog input system.
127 +
128 +### Imports
129 +
130 +The script imports the following modules and services:
131 +
132 +- `requests`: A Python library for making HTTP requests.
133 +- `loguru`: A third-party library providing a more convenient and powerful logger for Python.
134 +- `typing`: A standard Python library for supporting type hints.
135 +- `app.services.Graylog.universal.UniversalService`: The `UniversalService` class from the `app.services.Graylog.universal` module.
136 +
137 +### Class Definition: InputsService
138 +
139 +The `InputsService` class encapsulates the logic for pulling input data from Graylog. It provides the following methods:
140 +
141 +- `__init__`: Initializes the `InputsService` by collecting Graylog details using `UniversalService`.
142 +- `collect_running_inputs`: Collects the running inputs that are managed by Graylog.
143 +- `_collect_running_inputs`: Core method for collecting running inputs from Graylog by making a GET request to the Graylog API endpoint `/api/system/inputstates`.
144 +- `collect_configured_inputs`: Collects the configured inputs that are managed by Graylog.
145 +- `_collect_configured_inputs`: Core method for collecting configured inputs from Graylog by making a GET request to the Graylog API endpoint `/api/system/inputs`.
146 +
147 +### Error Handling
148 +
149 +The script includes error handling using try/except blocks. When an error occurs, the error message is logged using `loguru`'s `logger.error` function, and a dictionary with a failure message and success status set to False is returned.
150 +
151 +The `InputsService` class follows good practices for encapsulating functionality related to Graylog's input system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.
152 +
153 ::: app.services.Graylog.inputs
154 +
155 +### <span style="color:red">Graylog Services Messages</span>
156 +
157 +## MessagesService Class
158 +
159 +The `messages.py` file defines the `MessagesService` class, which encapsulates the functionality for interacting with the Graylog message system.
160 +
161 +### Imports
162 +
163 +The script imports the following modules and services:
164 +
165 +- `requests`: A Python library for making HTTP requests.
166 +- `loguru`: A third-party library providing a more convenient and powerful logger for Python.
167 +- `typing`: A standard Python library for supporting type hints.
168 +- `app.services.Graylog.universal.UniversalService`: The `UniversalService` class from the `app.services.Graylog.universal` module.
169 +
170 +### Class Definition: MessagesService
171 +
172 +The `MessagesService` class encapsulates the logic for polling messages from Graylog. It provides the following methods:
173 +
174 +- `__init__`: Initializes the `MessagesService` by collecting Graylog details using `UniversalService`.
175 +- `_get_messages_from_graylog`: Fetches messages from Graylog for a specific page number by making a GET request to the Graylog API endpoint `/api/system/messages?page={page_number}`.
176 +- `_handle_message_fetch_error`: Helper method for handling exceptions that occur while fetching messages.
177 +- `collect_messages`: Collects the latest 10 messages from Graylog.
178 +
179 +### Error Handling
180 +
181 +The script includes error handling using try/except blocks. When an error occurs while fetching messages, the `_handle_message_fetch_error` helper method is used to handle the exception.
182 +
183 +The `MessagesService` class follows good practices for encapsulating functionality related to Graylog's message system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.
184 +
185 ::: app.services.Graylog.messages
186 +
187 +### <span style="color:red">Graylog Services Metrics</span>
188 +
189 +## MetricsService Class
190 +
191 +The `metrics.py` file defines the `MetricsService` class, which encapsulates the functionality for interacting with the Graylog metrics system.
192 +
193 +### Imports
194 +
195 +The script imports the following modules and services:
196 +
197 +- `requests`: A Python library for making HTTP requests.
198 +- `loguru`: A third-party library providing a more convenient and powerful logger for Python.
199 +- `typing`: A standard Python library for supporting type hints.
200 +- `app.services.Graylog.universal.UniversalService`: The `UniversalService` class from the `app.services.Graylog.universal` module.
201 +
202 +### Class Definition: MetricsService
203 +
204 +The `MetricsService` class encapsulates the logic for polling metrics from Graylog. It provides the following methods:
205 +
206 +- `__init__`: Initializes the `MetricsService` by collecting Graylog details using `UniversalService`.
207 +- `collect_uncommitted_journal_size`: Collects the journal size of uncommitted messages from Graylog.
208 +- `_collect_metrics_uncommitted_journal_size`: Fetches the journal size of uncommitted messages from Graylog.
209 +- `collect_throughput_metrics`: Collects various Graylog metrics related to throughput.
210 +- `_collect_metrics_throughput_usage`: Fetches throughput usage from Graylog.
211 +- `_make_throughput_api_call`: Helper method for making the actual API call to retrieve the throughput metrics.
212 +- `_parse_throughput_metrics`: Helper method for parsing the returned throughput metrics.
213 +
214 +### Error Handling
215 +
216 +The script includes error handling using try/except blocks. When an error occurs, the error message is logged using loguru's `logger.error` function, and a dictionary with a failure message and success status set to False is returned.
217 +
218 +The `MetricsService` class follows good practices for encapsulating functionality related to Graylog's metrics system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.
219 +
220 ::: app.services.Graylog.metrics
221 +
222 +### <span style="color:red">Graylog Services Universal</span>
223 +
224 ::: app.services.Graylog.universal
backend/site/graylog/index.html
+2588 -2311
@@ -1,630 +1,1095 @@
1 +
2 <!doctype html>
3 <html lang="en" class="no-js">
3 - <head>
4 - <meta charset="utf-8" />
5 - <meta name="viewport" content="width=device-width,initial-scale=1" />
4 + <head>
5 +
6 + <meta charset="utf-8">
7 + <meta name="viewport" content="width=device-width,initial-scale=1">
8 +
9 +
10 +
11 +
12 + <link rel="prev" href="../dfiriris/">
13 +
14 +
15 + <link rel="next" href="../wazuhmanager/">
16
7 - <link rel="prev" href="../dfiriris/" />
17 + <link rel="icon" href="../assets/images/favicon.png">
18 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18">
19
9 - <link rel="next" href="../wazuhmanager/" />
20
11 - <link rel="icon" href="../assets/images/favicon.png" />
12 - <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18" />
21
22 <title>Graylog - SOCFortress CoPilot</title>
23
16 - <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css" />
17 -
18 - <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css" />
19 -
20 - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21 - <link
22 - rel="stylesheet"
23 - href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"
24 - />
25 - <style>
26 - :root {
27 - --md-text-font: "Roboto";
28 - --md-code-font: "Roboto Mono";
29 - }
30 - </style>
31 -
32 - <link rel="stylesheet" href="../assets/_mkdocstrings.css" />
33 -
34 - <script>
35 - ;(__md_scope = new URL("..", location)),
36 - (__md_hash = e => [...e].reduce((e, _) => (e << 5) - e + _.charCodeAt(0), 0)),
37 - (__md_get = (e, _ = localStorage, t = __md_scope) => JSON.parse(_.getItem(t.pathname + "." + e))),
38 - (__md_set = (e, _, t = localStorage, a = __md_scope) => {
39 - try {
40 - t.setItem(a.pathname + "." + e, JSON.stringify(_))
41 - } catch (e) {}
42 - })
43 - </script>
44 - </head>
24 +
25 +
26 + <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css">
27 +
28 +
29 + <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css">
30 +
31 +
32 +
33 +
34 +
35 +
36 +
37 +
38 +
39 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
40 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
41 + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
42 +
43 +
44 +
45 + <link rel="stylesheet" href="../assets/_mkdocstrings.css">
46 +
47 + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
48 +
49 +
50 +
51 +
52 +
53 +
54 + </head>
55 +
56 +
57 +
58 +
59 +
60 +
61 +
62 +
63
64 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple">
47 - <script>
48 - var palette = __md_get("__palette")
49 - if (palette && "object" == typeof palette.color)
50 - for (var key of Object.keys(palette.color))
51 - document.body.setAttribute("data-md-color-" + key, palette.color[key])
52 - </script>
53 -
54 - <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off" />
55 - <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off" />
56 - <label class="md-overlay" for="__drawer"></label>
57 - <div data-md-component="skip">
58 - <a href="#graylog-overview" class="md-skip"> Skip to content </a>
65 +
66 +
67 +
68 + <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
69 +
70 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
71 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
72 + <label class="md-overlay" for="__drawer"></label>
73 + <div data-md-component="skip">
74 +
75 +
76 + <a href="#graylog-overview" class="md-skip">
77 + Skip to content
78 + </a>
79 +
80 + </div>
81 + <div data-md-component="announce">
82 +
83 + </div>
84 +
85 +
86 +
87 +
88 +<header class="md-header" data-md-component="header">
89 + <nav class="md-header__inner md-grid" aria-label="Header">
90 + <a href=".." title="SOCFortress CoPilot" class="md-header__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
91 +
92 +
93 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
94 +
95 + </a>
96 + <label class="md-header__button md-icon" for="__drawer">
97 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
98 + </label>
99 + <div class="md-header__title" data-md-component="header-title">
100 + <div class="md-header__ellipsis">
101 + <div class="md-header__topic">
102 + <span class="md-ellipsis">
103 + SOCFortress CoPilot
104 + </span>
105 </div>
60 - <div data-md-component="announce"></div>
61 -
62 - <header class="md-header" data-md-component="header">
63 - <nav class="md-header__inner md-grid" aria-label="Header">
64 - <a
65 - href=".."
66 - title="SOCFortress CoPilot"
67 - class="md-header__button md-logo"
68 - aria-label="SOCFortress CoPilot"
69 - data-md-component="logo"
70 - >
71 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
72 - <path
73 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
74 - />
75 - </svg>
76 - </a>
77 - <label class="md-header__button md-icon" for="__drawer">
78 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
79 - <path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" />
80 - </svg>
81 - </label>
82 - <div class="md-header__title" data-md-component="header-title">
83 - <div class="md-header__ellipsis">
84 - <div class="md-header__topic">
85 - <span class="md-ellipsis"> SOCFortress CoPilot </span>
86 - </div>
87 - <div class="md-header__topic" data-md-component="header-topic">
88 - <span class="md-ellipsis"> Graylog </span>
89 - </div>
90 - </div>
91 - </div>
106 + <div class="md-header__topic" data-md-component="header-topic">
107 + <span class="md-ellipsis">
108 +
109 + Graylog
110 +
111 + </span>
112 + </div>
113 + </div>
114 + </div>
115 +
116 +
117 + <form class="md-header__option" data-md-component="palette">
118 +
119 +
120 +
121 +
122 + <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
123 +
124 + <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
125 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
126 + </label>
127 +
128 +
129 +
130 +
131 +
132 + <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="lime" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
133 +
134 + <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
135 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
136 + </label>
137 +
138 +
139 + </form>
140 +
141 +
142 +
143 +
144 +
145 + </nav>
146 +
147 +</header>
148 +
149 + <div class="md-container" data-md-component="container">
150 +
151 +
152 +
153 +
154 +
155 +<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
156 + <div class="md-grid">
157 + <ul class="md-tabs__list">
158 +
159 +
160 +
161 +
162 +
163 +
164 + <li class="md-tabs__item">
165 + <a href=".." class="md-tabs__link">
166 + Home
167 + </a>
168 + </li>
169 +
170 +
171 +
172 +
173 +
174 +
175 +
176 + <li class="md-tabs__item">
177 + <a href="../connectors/" class="md-tabs__link">
178 + Connectors
179 + </a>
180 + </li>
181 +
182 +
183 +
184 +
185 +
186 +
187 +
188 + <li class="md-tabs__item">
189 + <a href="../agents/" class="md-tabs__link">
190 + Agents
191 + </a>
192 + </li>
193 +
194 +
195 +
196 +
197 +
198 +
199 +
200 + <li class="md-tabs__item">
201 + <a href="../wazuhindexer/" class="md-tabs__link">
202 + Wazuh-Indexer
203 + </a>
204 + </li>
205 +
206 +
207 +
208 +
209 +
210 +
211 +
212 + <li class="md-tabs__item">
213 + <a href="../dfiriris/" class="md-tabs__link">
214 + Dfir-Iris
215 + </a>
216 + </li>
217 +
218 +
219 +
220 +
221 +
222 +
223 +
224 +
225 +
226 + <li class="md-tabs__item">
227 + <a href="./" class="md-tabs__link md-tabs__link--active">
228 + Graylog
229 + </a>
230 + </li>
231 +
232 +
233 +
234 +
235 +
236 +
237 +
238 + <li class="md-tabs__item">
239 + <a href="../wazuhmanager/" class="md-tabs__link">
240 + Wazuh-Manager
241 + </a>
242 + </li>
243 +
244 +
245 +
246 +
247 +
248 +
249 +
250 + <li class="md-tabs__item">
251 + <a href="../velociraptor/" class="md-tabs__link">
252 + Velociraptor
253 + </a>
254 + </li>
255 +
256 +
257 +
258 +
259 +
260 +
261 +
262 + <li class="md-tabs__item">
263 + <a href="../shuffle/" class="md-tabs__link">
264 + Shuffle
265 + </a>
266 + </li>
267 +
268 +
269 + </ul>
270 + </div>
271 +</nav>
272 +
273 +
274 +
275 + <main class="md-main" data-md-component="main">
276 + <div class="md-main__inner md-grid">
277 +
278 +
279 +
280 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
281 + <div class="md-sidebar__scrollwrap">
282 + <div class="md-sidebar__inner">
283 +
284 +
285 +
286 +
287 +
288 +
289 +
290 +<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
291 + <label class="md-nav__title" for="__drawer">
292 + <a href=".." title="SOCFortress CoPilot" class="md-nav__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
293 +
294 +
295 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
296 +
297 + </a>
298 + SOCFortress CoPilot
299 + </label>
300 +
301 + <ul class="md-nav__list" data-md-scrollfix>
302 +
303 +
304 +
305 +
306 +
307 +
308 +
309 +
310 + <li class="md-nav__item">
311 + <a href=".." class="md-nav__link">
312 + Home
313 + </a>
314 + </li>
315 +
316 +
317 +
318 +
319 +
320 +
321 +
322 +
323 +
324 +
325 + <li class="md-nav__item">
326 + <a href="../connectors/" class="md-nav__link">
327 + Connectors
328 + </a>
329 + </li>
330 +
331 +
332 +
333 +
334 +
335 +
336 +
337 +
338 +
339 +
340 + <li class="md-nav__item">
341 + <a href="../agents/" class="md-nav__link">
342 + Agents
343 + </a>
344 + </li>
345 +
346 +
347 +
348 +
349 +
350 +
351 +
352 +
353 +
354 +
355 + <li class="md-nav__item">
356 + <a href="../wazuhindexer/" class="md-nav__link">
357 + Wazuh-Indexer
358 + </a>
359 + </li>
360 +
361 +
362 +
363 +
364 +
365 +
366 +
367 +
368 +
369 +
370 + <li class="md-nav__item">
371 + <a href="../dfiriris/" class="md-nav__link">
372 + Dfir-Iris
373 + </a>
374 + </li>
375 +
376 +
377 +
378 +
379 +
380 +
381 +
382 +
383 +
384 +
385 +
386 +
387 + <li class="md-nav__item md-nav__item--active">
388 +
389 + <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
390 +
391 +
392 +
393 + <label class="md-nav__link md-nav__link--active" for="__toc">
394 + Graylog
395 + <span class="md-nav__icon md-icon"></span>
396 + </label>
397 +
398 + <a href="./" class="md-nav__link md-nav__link--active">
399 + Graylog
400 + </a>
401 +
402 +
403 +
404 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
405 +
406 +
407 +
408 +
409 + <label class="md-nav__title" for="__toc">
410 + <span class="md-nav__icon md-icon"></span>
411 + Table of contents
412 + </label>
413 + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
414 +
415 + <li class="md-nav__item">
416 + <a href="#graylog-overview" class="md-nav__link">
417 + Graylog Overview
418 + </a>
419 +
420 + <nav class="md-nav" aria-label="Graylog Overview">
421 + <ul class="md-nav__list">
422 +
423 + <li class="md-nav__item">
424 + <a href="#graylog-model" class="md-nav__link">
425 + Graylog Model
426 + </a>
427 +
428 +</li>
429 +
430 + </ul>
431 + </nav>
432 +
433 +</li>
434 +
435 + <li class="md-nav__item">
436 + <a href="#graylogpy" class="md-nav__link">
437 + graylog.py
438 + </a>
439
93 - <form class="md-header__option" data-md-component="palette">
94 - <input
95 - class="md-option"
96 - data-md-color-media=""
97 - data-md-color-scheme="default"
98 - data-md-color-primary="teal"
99 - data-md-color-accent="purple"
100 - aria-label="Switch to dark mode"
101 - type="radio"
102 - name="__palette"
103 - id="__palette_1"
104 - />
105 -
106 - <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
107 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
108 - <path
109 - d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"
110 - />
111 - </svg>
112 - </label>
113 -
114 - <input
115 - class="md-option"
116 - data-md-color-media=""
117 - data-md-color-scheme="slate"
118 - data-md-color-primary="teal"
119 - data-md-color-accent="lime"
120 - aria-label="Switch to light mode"
121 - type="radio"
122 - name="__palette"
123 - id="__palette_2"
124 - />
125 -
126 - <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
127 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
128 - <path
129 - d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"
130 - />
131 - </svg>
132 - </label>
133 - </form>
134 - </nav>
135 - </header>
136 -
137 - <div class="md-container" data-md-component="container">
138 - <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
139 - <div class="md-grid">
140 - <ul class="md-tabs__list">
141 - <li class="md-tabs__item">
142 - <a href=".." class="md-tabs__link"> Home </a>
143 - </li>
144 -
145 - <li class="md-tabs__item">
146 - <a href="../connectors/" class="md-tabs__link"> Connectors </a>
147 - </li>
148 -
149 - <li class="md-tabs__item">
150 - <a href="../agents/" class="md-tabs__link"> Agents </a>
151 - </li>
152 -
153 - <li class="md-tabs__item">
154 - <a href="../wazuhindexer/" class="md-tabs__link"> Wazuh-Indexer </a>
155 - </li>
156 -
157 - <li class="md-tabs__item">
158 - <a href="../dfiriris/" class="md-tabs__link"> Dfir-Iris </a>
159 - </li>
160 -
161 - <li class="md-tabs__item">
162 - <a href="./" class="md-tabs__link md-tabs__link--active"> Graylog </a>
163 - </li>
164 -
165 - <li class="md-tabs__item">
166 - <a href="../wazuhmanager/" class="md-tabs__link"> Wazuh-Manager </a>
167 - </li>
168 -
169 - <li class="md-tabs__item">
170 - <a href="../velociraptor/" class="md-tabs__link"> Velociraptor </a>
171 - </li>
172 -
173 - <li class="md-tabs__item">
174 - <a href="../shuffle/" class="md-tabs__link"> Shuffle </a>
175 - </li>
176 - </ul>
440 + <nav class="md-nav" aria-label="graylog.py">
441 + <ul class="md-nav__list">
442 +
443 + <li class="md-nav__item">
444 + <a href="#graylogmetricsallocation-class" class="md-nav__link">
445 + GraylogMetricsAllocation Class
446 + </a>
447 +
448 +</li>
449 +
450 + <li class="md-nav__item">
451 + <a href="#graylogmetricsallocationschema-class" class="md-nav__link">
452 + GraylogMetricsAllocationSchema Class
453 + </a>
454 +
455 +</li>
456 +
457 + <li class="md-nav__item">
458 + <a href="#app.models.graylog" class="md-nav__link">
459 + app.models.graylog
460 + </a>
461 +
462 +</li>
463 +
464 + <li class="md-nav__item">
465 + <a href="#app.models.graylog.GraylogMetricsAllocation" class="md-nav__link">
466 + GraylogMetricsAllocation
467 + </a>
468 +
469 + <nav class="md-nav" aria-label="GraylogMetricsAllocation">
470 + <ul class="md-nav__list">
471 +
472 + <li class="md-nav__item">
473 + <a href="#app.models.graylog.GraylogMetricsAllocation.__init__" class="md-nav__link">
474 + __init__()
475 + </a>
476 +
477 +</li>
478 +
479 + <li class="md-nav__item">
480 + <a href="#app.models.graylog.GraylogMetricsAllocation.__repr__" class="md-nav__link">
481 + __repr__()
482 + </a>
483 +
484 +</li>
485 +
486 + </ul>
487 + </nav>
488 +
489 +</li>
490 +
491 + <li class="md-nav__item">
492 + <a href="#app.models.graylog.GraylogMetricsAllocationSchema" class="md-nav__link">
493 + GraylogMetricsAllocationSchema
494 + </a>
495 +
496 + <nav class="md-nav" aria-label="GraylogMetricsAllocationSchema">
497 + <ul class="md-nav__list">
498 +
499 + <li class="md-nav__item">
500 + <a href="#app.models.graylog.GraylogMetricsAllocationSchema.Meta" class="md-nav__link">
501 + Meta
502 + </a>
503 +
504 +</li>
505 +
506 + <li class="md-nav__item">
507 + <a href="#graylog-routes" class="md-nav__link">
508 + Graylog Routes
509 + </a>
510 +
511 +</li>
512 +
513 + </ul>
514 + </nav>
515 +
516 +</li>
517 +
518 + <li class="md-nav__item">
519 + <a href="#graylogpy_1" class="md-nav__link">
520 + graylog.py
521 + </a>
522 +
523 + <nav class="md-nav" aria-label="graylog.py">
524 + <ul class="md-nav__list">
525 +
526 + <li class="md-nav__item">
527 + <a href="#imports" class="md-nav__link">
528 + Imports
529 + </a>
530 +
531 +</li>
532 +
533 + <li class="md-nav__item">
534 + <a href="#blueprint" class="md-nav__link">
535 + Blueprint
536 + </a>
537 +
538 +</li>
539 +
540 + </ul>
541 + </nav>
542 +
543 +</li>
544 +
545 + <li class="md-nav__item">
546 + <a href="#endpoints" class="md-nav__link">
547 + Endpoints
548 + </a>
549 +
550 +</li>
551 +
552 + <li class="md-nav__item">
553 + <a href="#services" class="md-nav__link">
554 + Services
555 + </a>
556 +
557 +</li>
558 +
559 + <li class="md-nav__item">
560 + <a href="#app.routes.graylog" class="md-nav__link">
561 + app.routes.graylog
562 + </a>
563 +
564 +</li>
565 +
566 + <li class="md-nav__item">
567 + <a href="#app.routes.graylog.delete_index" class="md-nav__link">
568 + delete_index()
569 + </a>
570 +
571 +</li>
572 +
573 + <li class="md-nav__item">
574 + <a href="#app.routes.graylog.get_indices" class="md-nav__link">
575 + get_indices()
576 + </a>
577 +
578 +</li>
579 +
580 + <li class="md-nav__item">
581 + <a href="#app.routes.graylog.get_inputs" class="md-nav__link">
582 + get_inputs()
583 + </a>
584 +
585 +</li>
586 +
587 + <li class="md-nav__item">
588 + <a href="#app.routes.graylog.get_messages" class="md-nav__link">
589 + get_messages()
590 + </a>
591 +
592 +</li>
593 +
594 + <li class="md-nav__item">
595 + <a href="#app.routes.graylog.get_metrics" class="md-nav__link">
596 + get_metrics()
597 + </a>
598 +
599 + <nav class="md-nav" aria-label="get_metrics()">
600 + <ul class="md-nav__list">
601 +
602 + <li class="md-nav__item">
603 + <a href="#graylog-services-index" class="md-nav__link">
604 + Graylog Services Index
605 + </a>
606 +
607 +</li>
608 +
609 + </ul>
610 + </nav>
611 +
612 +</li>
613 +
614 + <li class="md-nav__item">
615 + <a href="#indexservice-class" class="md-nav__link">
616 + IndexService Class
617 + </a>
618 +
619 + <nav class="md-nav" aria-label="IndexService Class">
620 + <ul class="md-nav__list">
621 +
622 + <li class="md-nav__item">
623 + <a href="#imports_1" class="md-nav__link">
624 + Imports
625 + </a>
626 +
627 +</li>
628 +
629 + <li class="md-nav__item">
630 + <a href="#class-definition-indexservice" class="md-nav__link">
631 + Class Definition: IndexService
632 + </a>
633 +
634 +</li>
635 +
636 + <li class="md-nav__item">
637 + <a href="#error-handling" class="md-nav__link">
638 + Error Handling
639 + </a>
640 +
641 +</li>
642 +
643 + </ul>
644 + </nav>
645 +
646 +</li>
647 +
648 + <li class="md-nav__item">
649 + <a href="#app.services.Graylog.index" class="md-nav__link">
650 + app.services.Graylog.index
651 + </a>
652 +
653 +</li>
654 +
655 + <li class="md-nav__item">
656 + <a href="#app.services.Graylog.index.IndexService" class="md-nav__link">
657 + IndexService
658 + </a>
659 +
660 + <nav class="md-nav" aria-label="IndexService">
661 + <ul class="md-nav__list">
662 +
663 + <li class="md-nav__item">
664 + <a href="#app.services.Graylog.index.IndexService.__init__" class="md-nav__link">
665 + __init__()
666 + </a>
667 +
668 +</li>
669 +
670 + <li class="md-nav__item">
671 + <a href="#app.services.Graylog.index.IndexService.collect_indices" class="md-nav__link">
672 + collect_indices()
673 + </a>
674 +
675 +</li>
676 +
677 + <li class="md-nav__item">
678 + <a href="#app.services.Graylog.index.IndexService.delete_index" class="md-nav__link">
679 + delete_index()
680 + </a>
681 +
682 +</li>
683 +
684 + <li class="md-nav__item">
685 + <a href="#graylog-services-inputs" class="md-nav__link">
686 + Graylog Services Inputs
687 + </a>
688 +
689 +</li>
690 +
691 + </ul>
692 + </nav>
693 +
694 +</li>
695 +
696 + <li class="md-nav__item">
697 + <a href="#inputsservice-class" class="md-nav__link">
698 + InputsService Class
699 + </a>
700 +
701 + <nav class="md-nav" aria-label="InputsService Class">
702 + <ul class="md-nav__list">
703 +
704 + <li class="md-nav__item">
705 + <a href="#imports_2" class="md-nav__link">
706 + Imports
707 + </a>
708 +
709 +</li>
710 +
711 + <li class="md-nav__item">
712 + <a href="#class-definition-inputsservice" class="md-nav__link">
713 + Class Definition: InputsService
714 + </a>
715 +
716 +</li>
717 +
718 + <li class="md-nav__item">
719 + <a href="#error-handling_1" class="md-nav__link">
720 + Error Handling
721 + </a>
722 +
723 +</li>
724 +
725 + </ul>
726 + </nav>
727 +
728 +</li>
729 +
730 + <li class="md-nav__item">
731 + <a href="#app.services.Graylog.inputs" class="md-nav__link">
732 + app.services.Graylog.inputs
733 + </a>
734 +
735 +</li>
736 +
737 + <li class="md-nav__item">
738 + <a href="#app.services.Graylog.inputs.InputsService" class="md-nav__link">
739 + InputsService
740 + </a>
741 +
742 + <nav class="md-nav" aria-label="InputsService">
743 + <ul class="md-nav__list">
744 +
745 + <li class="md-nav__item">
746 + <a href="#app.services.Graylog.inputs.InputsService.__init__" class="md-nav__link">
747 + __init__()
748 + </a>
749 +
750 +</li>
751 +
752 + <li class="md-nav__item">
753 + <a href="#app.services.Graylog.inputs.InputsService.collect_configured_inputs" class="md-nav__link">
754 + collect_configured_inputs()
755 + </a>
756 +
757 +</li>
758 +
759 + <li class="md-nav__item">
760 + <a href="#app.services.Graylog.inputs.InputsService.collect_running_inputs" class="md-nav__link">
761 + collect_running_inputs()
762 + </a>
763 +
764 +</li>
765 +
766 + <li class="md-nav__item">
767 + <a href="#graylog-services-messages" class="md-nav__link">
768 + Graylog Services Messages
769 + </a>
770 +
771 +</li>
772 +
773 + </ul>
774 + </nav>
775 +
776 +</li>
777 +
778 + <li class="md-nav__item">
779 + <a href="#messagesservice-class" class="md-nav__link">
780 + MessagesService Class
781 + </a>
782 +
783 + <nav class="md-nav" aria-label="MessagesService Class">
784 + <ul class="md-nav__list">
785 +
786 + <li class="md-nav__item">
787 + <a href="#imports_3" class="md-nav__link">
788 + Imports
789 + </a>
790 +
791 +</li>
792 +
793 + <li class="md-nav__item">
794 + <a href="#class-definition-messagesservice" class="md-nav__link">
795 + Class Definition: MessagesService
796 + </a>
797 +
798 +</li>
799 +
800 + <li class="md-nav__item">
801 + <a href="#error-handling_2" class="md-nav__link">
802 + Error Handling
803 + </a>
804 +
805 +</li>
806 +
807 + </ul>
808 + </nav>
809 +
810 +</li>
811 +
812 + <li class="md-nav__item">
813 + <a href="#app.services.Graylog.messages" class="md-nav__link">
814 + app.services.Graylog.messages
815 + </a>
816 +
817 +</li>
818 +
819 + <li class="md-nav__item">
820 + <a href="#app.services.Graylog.messages.MessagesService" class="md-nav__link">
821 + MessagesService
822 + </a>
823 +
824 + <nav class="md-nav" aria-label="MessagesService">
825 + <ul class="md-nav__list">
826 +
827 + <li class="md-nav__item">
828 + <a href="#app.services.Graylog.messages.MessagesService.collect_messages" class="md-nav__link">
829 + collect_messages()
830 + </a>
831 +
832 +</li>
833 +
834 + <li class="md-nav__item">
835 + <a href="#graylog-services-metrics" class="md-nav__link">
836 + Graylog Services Metrics
837 + </a>
838 +
839 +</li>
840 +
841 + </ul>
842 + </nav>
843 +
844 +</li>
845 +
846 + <li class="md-nav__item">
847 + <a href="#metricsservice-class" class="md-nav__link">
848 + MetricsService Class
849 + </a>
850 +
851 + <nav class="md-nav" aria-label="MetricsService Class">
852 + <ul class="md-nav__list">
853 +
854 + <li class="md-nav__item">
855 + <a href="#imports_4" class="md-nav__link">
856 + Imports
857 + </a>
858 +
859 +</li>
860 +
861 + <li class="md-nav__item">
862 + <a href="#class-definition-metricsservice" class="md-nav__link">
863 + Class Definition: MetricsService
864 + </a>
865 +
866 +</li>
867 +
868 + <li class="md-nav__item">
869 + <a href="#error-handling_3" class="md-nav__link">
870 + Error Handling
871 + </a>
872 +
873 +</li>
874 +
875 + </ul>
876 + </nav>
877 +
878 +</li>
879 +
880 + <li class="md-nav__item">
881 + <a href="#app.services.Graylog.metrics" class="md-nav__link">
882 + app.services.Graylog.metrics
883 + </a>
884 +
885 +</li>
886 +
887 + <li class="md-nav__item">
888 + <a href="#app.services.Graylog.metrics.MetricsService" class="md-nav__link">
889 + MetricsService
890 + </a>
891 +
892 + <nav class="md-nav" aria-label="MetricsService">
893 + <ul class="md-nav__list">
894 +
895 + <li class="md-nav__item">
896 + <a href="#app.services.Graylog.metrics.MetricsService.__init__" class="md-nav__link">
897 + __init__()
898 + </a>
899 +
900 +</li>
901 +
902 + <li class="md-nav__item">
903 + <a href="#app.services.Graylog.metrics.MetricsService.collect_throughput_metrics" class="md-nav__link">
904 + collect_throughput_metrics()
905 + </a>
906 +
907 +</li>
908 +
909 + <li class="md-nav__item">
910 + <a href="#app.services.Graylog.metrics.MetricsService.collect_uncommitted_journal_size" class="md-nav__link">
911 + collect_uncommitted_journal_size()
912 + </a>
913 +
914 +</li>
915 +
916 + <li class="md-nav__item">
917 + <a href="#graylog-services-universal" class="md-nav__link">
918 + Graylog Services Universal
919 + </a>
920 +
921 +</li>
922 +
923 + </ul>
924 + </nav>
925 +
926 +</li>
927 +
928 + <li class="md-nav__item">
929 + <a href="#app.services.Graylog.universal" class="md-nav__link">
930 + app.services.Graylog.universal
931 + </a>
932 +
933 +</li>
934 +
935 + <li class="md-nav__item">
936 + <a href="#app.services.Graylog.universal.UniversalService" class="md-nav__link">
937 + UniversalService
938 + </a>
939 +
940 + <nav class="md-nav" aria-label="UniversalService">
941 + <ul class="md-nav__list">
942 +
943 + <li class="md-nav__item">
944 + <a href="#app.services.Graylog.universal.UniversalService.collect_graylog_details" class="md-nav__link">
945 + collect_graylog_details()
946 + </a>
947 +
948 +</li>
949 +
950 + </ul>
951 + </nav>
952 +
953 +</li>
954 +
955 + </ul>
956 + </nav>
957 +
958 +</li>
959 +
960 + </ul>
961 +
962 +</nav>
963 +
964 + </li>
965 +
966 +
967 +
968 +
969 +
970 +
971 +
972 +
973 +
974 +
975 + <li class="md-nav__item">
976 + <a href="../wazuhmanager/" class="md-nav__link">
977 + Wazuh-Manager
978 + </a>
979 + </li>
980 +
981 +
982 +
983 +
984 +
985 +
986 +
987 +
988 +
989 +
990 + <li class="md-nav__item">
991 + <a href="../velociraptor/" class="md-nav__link">
992 + Velociraptor
993 + </a>
994 + </li>
995 +
996 +
997 +
998 +
999 +
1000 +
1001 +
1002 +
1003 +
1004 +
1005 + <li class="md-nav__item">
1006 + <a href="../shuffle/" class="md-nav__link">
1007 + Shuffle
1008 + </a>
1009 + </li>
1010 +
1011 +
1012 +
1013 + </ul>
1014 +</nav>
1015 + </div>
1016 </div>
178 - </nav>
179 -
180 - <main class="md-main" data-md-component="main">
181 - <div class="md-main__inner md-grid">
182 - <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
183 - <div class="md-sidebar__scrollwrap">
184 - <div class="md-sidebar__inner">
185 - <nav
186 - class="md-nav md-nav--primary md-nav--lifted md-nav--integrated"
187 - aria-label="Navigation"
188 - data-md-level="0"
189 - >
190 - <label class="md-nav__title" for="__drawer">
191 - <a
192 - href=".."
193 - title="SOCFortress CoPilot"
194 - class="md-nav__button md-logo"
195 - aria-label="SOCFortress CoPilot"
196 - data-md-component="logo"
197 - >
198 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
199 - <path
200 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
201 - />
202 - </svg>
203 - </a>
204 - SOCFortress CoPilot
205 - </label>
206 -
207 - <ul class="md-nav__list" data-md-scrollfix>
208 - <li class="md-nav__item">
209 - <a href=".." class="md-nav__link"> Home </a>
210 - </li>
211 -
212 - <li class="md-nav__item">
213 - <a href="../connectors/" class="md-nav__link"> Connectors </a>
214 - </li>
215 -
216 - <li class="md-nav__item">
217 - <a href="../agents/" class="md-nav__link"> Agents </a>
218 - </li>
219 -
220 - <li class="md-nav__item">
221 - <a href="../wazuhindexer/" class="md-nav__link"> Wazuh-Indexer </a>
222 - </li>
223 -
224 - <li class="md-nav__item">
225 - <a href="../dfiriris/" class="md-nav__link"> Dfir-Iris </a>
226 - </li>
227 -
228 - <li class="md-nav__item md-nav__item--active">
229 - <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc" />
230 -
231 - <label class="md-nav__link md-nav__link--active" for="__toc">
232 - Graylog
233 - <span class="md-nav__icon md-icon"></span>
234 - </label>
235 -
236 - <a href="./" class="md-nav__link md-nav__link--active"> Graylog </a>
237 -
238 - <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
239 - <label class="md-nav__title" for="__toc">
240 - <span class="md-nav__icon md-icon"></span>
241 - Table of contents
242 - </label>
243 - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
244 - <li class="md-nav__item">
245 - <a href="#graylog-overview" class="md-nav__link">
246 - Graylog Overview
247 - </a>
248 -
249 - <nav class="md-nav" aria-label="Graylog Overview">
250 - <ul class="md-nav__list">
251 - <li class="md-nav__item">
252 - <a href="#graylog-model" class="md-nav__link">
253 - Graylog Model
254 - </a>
255 - </li>
256 - </ul>
257 - </nav>
258 - </li>
259 -
260 - <li class="md-nav__item">
261 - <a href="#app.models.graylog" class="md-nav__link">
262 - app.models.graylog
263 - </a>
264 - </li>
265 -
266 - <li class="md-nav__item">
267 - <a
268 - href="#app.models.graylog.GraylogMetricsAllocation"
269 - class="md-nav__link"
270 - >
271 - GraylogMetricsAllocation
272 - </a>
273 -
274 - <nav class="md-nav" aria-label="GraylogMetricsAllocation">
275 - <ul class="md-nav__list">
276 - <li class="md-nav__item">
277 - <a
278 - href="#app.models.graylog.GraylogMetricsAllocation.__init__"
279 - class="md-nav__link"
280 - >
281 - __init__()
282 - </a>
283 - </li>
284 -
285 - <li class="md-nav__item">
286 - <a
287 - href="#app.models.graylog.GraylogMetricsAllocation.__repr__"
288 - class="md-nav__link"
289 - >
290 - __repr__()
291 - </a>
292 - </li>
293 - </ul>
294 - </nav>
295 - </li>
296 -
297 - <li class="md-nav__item">
298 - <a
299 - href="#app.models.graylog.GraylogMetricsAllocationSchema"
300 - class="md-nav__link"
301 - >
302 - GraylogMetricsAllocationSchema
303 - </a>
304 -
305 - <nav class="md-nav" aria-label="GraylogMetricsAllocationSchema">
306 - <ul class="md-nav__list">
307 - <li class="md-nav__item">
308 - <a
309 - href="#app.models.graylog.GraylogMetricsAllocationSchema.Meta"
310 - class="md-nav__link"
311 - >
312 - Meta
313 - </a>
314 - </li>
315 -
316 - <li class="md-nav__item">
317 - <a href="#graylog-routes" class="md-nav__link">
318 - Graylog Routes
319 - </a>
320 - </li>
321 - </ul>
322 - </nav>
323 - </li>
324 -
325 - <li class="md-nav__item">
326 - <a href="#app.routes.graylog" class="md-nav__link">
327 - app.routes.graylog
328 - </a>
329 - </li>
330 -
331 - <li class="md-nav__item">
332 - <a href="#app.routes.graylog.delete_index" class="md-nav__link">
333 - delete_index()
334 - </a>
335 - </li>
336 -
337 - <li class="md-nav__item">
338 - <a href="#app.routes.graylog.get_indices" class="md-nav__link">
339 - get_indices()
340 - </a>
341 - </li>
342 -
343 - <li class="md-nav__item">
344 - <a href="#app.routes.graylog.get_inputs" class="md-nav__link">
345 - get_inputs()
346 - </a>
347 - </li>
348 -
349 - <li class="md-nav__item">
350 - <a href="#app.routes.graylog.get_messages" class="md-nav__link">
351 - get_messages()
352 - </a>
353 - </li>
354 -
355 - <li class="md-nav__item">
356 - <a href="#app.routes.graylog.get_metrics" class="md-nav__link">
357 - get_metrics()
358 - </a>
359 -
360 - <nav class="md-nav" aria-label="get_metrics()">
361 - <ul class="md-nav__list">
362 - <li class="md-nav__item">
363 - <a href="#graylog-services" class="md-nav__link">
364 - Graylog Services
365 - </a>
366 - </li>
367 - </ul>
368 - </nav>
369 - </li>
370 -
371 - <li class="md-nav__item">
372 - <a href="#app.services.Graylog.index" class="md-nav__link">
373 - app.services.Graylog.index
374 - </a>
375 - </li>
376 -
377 - <li class="md-nav__item">
378 - <a
379 - href="#app.services.Graylog.index.IndexService"
380 - class="md-nav__link"
381 - >
382 - IndexService
383 - </a>
384 -
385 - <nav class="md-nav" aria-label="IndexService">
386 - <ul class="md-nav__list">
387 - <li class="md-nav__item">
388 - <a
389 - href="#app.services.Graylog.index.IndexService.__init__"
390 - class="md-nav__link"
391 - >
392 - __init__()
393 - </a>
394 - </li>
395 -
396 - <li class="md-nav__item">
397 - <a
398 - href="#app.services.Graylog.index.IndexService.collect_indices"
399 - class="md-nav__link"
400 - >
401 - collect_indices()
402 - </a>
403 - </li>
404 -
405 - <li class="md-nav__item">
406 - <a
407 - href="#app.services.Graylog.index.IndexService.delete_index"
408 - class="md-nav__link"
409 - >
410 - delete_index()
411 - </a>
412 - </li>
413 - </ul>
414 - </nav>
415 - </li>
416 -
417 - <li class="md-nav__item">
418 - <a href="#app.services.Graylog.inputs" class="md-nav__link">
419 - app.services.Graylog.inputs
420 - </a>
421 - </li>
422 -
423 - <li class="md-nav__item">
424 - <a
425 - href="#app.services.Graylog.inputs.InputsService"
426 - class="md-nav__link"
427 - >
428 - InputsService
429 - </a>
430 -
431 - <nav class="md-nav" aria-label="InputsService">
432 - <ul class="md-nav__list">
433 - <li class="md-nav__item">
434 - <a
435 - href="#app.services.Graylog.inputs.InputsService.__init__"
436 - class="md-nav__link"
437 - >
438 - __init__()
439 - </a>
440 - </li>
441 -
442 - <li class="md-nav__item">
443 - <a
444 - href="#app.services.Graylog.inputs.InputsService.collect_configured_inputs"
445 - class="md-nav__link"
446 - >
447 - collect_configured_inputs()
448 - </a>
449 - </li>
450 -
451 - <li class="md-nav__item">
452 - <a
453 - href="#app.services.Graylog.inputs.InputsService.collect_running_inputs"
454 - class="md-nav__link"
455 - >
456 - collect_running_inputs()
457 - </a>
458 - </li>
459 - </ul>
460 - </nav>
461 - </li>
462 -
463 - <li class="md-nav__item">
464 - <a href="#app.services.Graylog.messages" class="md-nav__link">
465 - app.services.Graylog.messages
466 - </a>
467 - </li>
468 -
469 - <li class="md-nav__item">
470 - <a
471 - href="#app.services.Graylog.messages.MessagesService"
472 - class="md-nav__link"
473 - >
474 - MessagesService
475 - </a>
476 -
477 - <nav class="md-nav" aria-label="MessagesService">
478 - <ul class="md-nav__list">
479 - <li class="md-nav__item">
480 - <a
481 - href="#app.services.Graylog.messages.MessagesService.collect_messages"
482 - class="md-nav__link"
483 - >
484 - collect_messages()
485 - </a>
486 - </li>
487 - </ul>
488 - </nav>
489 - </li>
490 -
491 - <li class="md-nav__item">
492 - <a href="#app.services.Graylog.metrics" class="md-nav__link">
493 - app.services.Graylog.metrics
494 - </a>
495 - </li>
496 -
497 - <li class="md-nav__item">
498 - <a
499 - href="#app.services.Graylog.metrics.MetricsService"
500 - class="md-nav__link"
501 - >
502 - MetricsService
503 - </a>
504 -
505 - <nav class="md-nav" aria-label="MetricsService">
506 - <ul class="md-nav__list">
507 - <li class="md-nav__item">
508 - <a
509 - href="#app.services.Graylog.metrics.MetricsService.__init__"
510 - class="md-nav__link"
511 - >
512 - __init__()
513 - </a>
514 - </li>
515 -
516 - <li class="md-nav__item">
517 - <a
518 - href="#app.services.Graylog.metrics.MetricsService.collect_throughput_metrics"
519 - class="md-nav__link"
520 - >
521 - collect_throughput_metrics()
522 - </a>
523 - </li>
524 -
525 - <li class="md-nav__item">
526 - <a
527 - href="#app.services.Graylog.metrics.MetricsService.collect_uncommitted_journal_size"
528 - class="md-nav__link"
529 - >
530 - collect_uncommitted_journal_size()
531 - </a>
532 - </li>
533 - </ul>
534 - </nav>
535 - </li>
536 -
537 - <li class="md-nav__item">
538 - <a href="#app.services.Graylog.universal" class="md-nav__link">
539 - app.services.Graylog.universal
540 - </a>
541 - </li>
542 -
543 - <li class="md-nav__item">
544 - <a
545 - href="#app.services.Graylog.universal.UniversalService"
546 - class="md-nav__link"
547 - >
548 - UniversalService
549 - </a>
550 -
551 - <nav class="md-nav" aria-label="UniversalService">
552 - <ul class="md-nav__list">
553 - <li class="md-nav__item">
554 - <a
555 - href="#app.services.Graylog.universal.UniversalService.collect_graylog_details"
556 - class="md-nav__link"
557 - >
558 - collect_graylog_details()
559 - </a>
560 - </li>
561 - </ul>
562 - </nav>
563 - </li>
564 - </ul>
565 - </nav>
566 - </li>
567 -
568 - <li class="md-nav__item">
569 - <a href="../wazuhmanager/" class="md-nav__link"> Wazuh-Manager </a>
570 - </li>
571 -
572 - <li class="md-nav__item">
573 - <a href="../velociraptor/" class="md-nav__link"> Velociraptor </a>
574 - </li>
575 -
576 - <li class="md-nav__item">
577 - <a href="../shuffle/" class="md-nav__link"> Shuffle </a>
578 - </li>
579 - </ul>
580 - </nav>
581 - </div>
582 - </div>
583 - </div>
584 -
585 - <div class="md-content" data-md-component="content">
586 - <article class="md-content__inner md-typeset">
587 - <h1>Graylog</h1>
588 -
589 - <h2 id="graylog-overview">Graylog Overview</h2>
590 - <h3 id="graylog-model"><span style="color: blue">Graylog Model</span></h3>
591 -
592 - <div class="doc doc-object doc-module">
593 - <a id="app.models.graylog"></a>
594 - <div class="doc doc-contents first">
595 - <div class="doc doc-children">
596 - <div class="doc doc-object doc-class">
597 - <h2
598 - id="app.models.graylog.GraylogMetricsAllocation"
599 - class="doc doc-heading"
600 - >
601 - <code>GraylogMetricsAllocation</code>
602 - </h2>
603 -
604 - <div class="doc doc-contents">
605 - <p class="doc doc-class-bases">
606 - Bases:
607 - <code
608 - ><span title="app.db">db</span>.<span title="app.db.Model"
609 - >Model</span
610 - ></code
611 - >
612 - </p>
613 -
614 - <p>
615 - Class for Graylog metrics allocation which stores throughput
616 - metrics. The timestamp is generated for each entry and it is invoked
617 - every 5 minutes. This class inherits from SQLAlchemy's Model class.
618 - </p>
619 -
620 - <details class="quote">
621 - <summary>Source code in <code>app\models\graylog.py</code></summary>
622 - <div class="highlight">
623 - <table class="highlighttable">
624 - <tr>
625 - <td class="linenos">
626 - <div class="linenodiv">
627 - <pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
1017 + </div>
1018 +
1019 +
1020 +
1021 +
1022 + <div class="md-content" data-md-component="content">
1023 + <article class="md-content__inner md-typeset">
1024 +
1025 +
1026 +
1027 +
1028 +<h2 id="graylog-overview">Graylog Overview</h2>
1029 +<h3 id="graylog-model"><span style="color:blue">Graylog Model</span></h3>
1030 +<h1 id="graylogpy">graylog.py</h1>
1031 +<p>The provided Python file <code>graylog.py</code> defines a database model and a corresponding schema for storing, retrieving, and manipulating Graylog metrics data. This file is likely part of a larger system where Graylog is used for log management.</p>
1032 +<p>Here is a summary of what the script does:</p>
1033 +<h2 id="graylogmetricsallocation-class">GraylogMetricsAllocation Class</h2>
1034 +<p>The <code>GraylogMetricsAllocation</code> class is a SQLAlchemy model, which corresponds to a database table <code>graylog_metrics_allocation</code>. This table stores throughput metrics from Graylog. The table includes the following fields:</p>
1035 +<ul>
1036 +<li><code>id</code>: The primary key of the table.</li>
1037 +<li><code>input_usage</code>: The input usage value.</li>
1038 +<li><code>output_usage</code>: The output usage value.</li>
1039 +<li><code>processor_usage</code>: The processor usage value.</li>
1040 +<li><code>input_1_sec_rate</code>: The input per second rate.</li>
1041 +<li><code>output_1_sec_rate</code>: The output per second rate.</li>
1042 +<li><code>total_input</code>: The total input value.</li>
1043 +<li><code>total_output</code>: The total output value.</li>
1044 +<li><code>timestamp</code>: The timestamp when the entry is created, defaulting to the current time.</li>
1045 +</ul>
1046 +<h2 id="graylogmetricsallocationschema-class">GraylogMetricsAllocationSchema Class</h2>
1047 +<p>The <code>GraylogMetricsAllocationSchema</code> class is a Marshmallow schema that facilitates serialization and deserialization of <code>GraylogMetricsAllocation</code> instances. This can be helpful when converting instances to JSON format for API responses or when parsing incoming data.</p>
1048 +<p>At the end of the script, instances of <code>GraylogMetricsAllocationSchema</code> are created for single and multiple <code>GraylogMetricsAllocation</code> instances, respectively.</p>
1049 +<p>This file provides a way to store and work with Graylog metrics data in a structured manner, allowing for easy retrieval, manipulation, and serialization/deserialization of the data.</p>
1050 +
1051 +
1052 +<div class="doc doc-object doc-module">
1053 +
1054 +
1055 +<a id="app.models.graylog"></a>
1056 + <div class="doc doc-contents first">
1057 +
1058 +
1059 +
1060 + <div class="doc doc-children">
1061 +
1062 +
1063 +
1064 +
1065 +
1066 +
1067 +
1068 +
1069 +<div class="doc doc-object doc-class">
1070 +
1071 +
1072 +
1073 +<h2 id="app.models.graylog.GraylogMetricsAllocation" class="doc doc-heading">
1074 + <code>GraylogMetricsAllocation</code>
1075 +
1076 +
1077 +</h2>
1078 +
1079 +
1080 + <div class="doc doc-contents ">
1081 + <p class="doc doc-class-bases">
1082 + Bases: <code><span title="app.db">db</span>.<span title="app.db.Model">Model</span></code></p>
1083 +
1084 +
1085 + <p>Class for Graylog metrics allocation which stores throughput metrics.
1086 +The timestamp is generated for each entry and it is invoked every 5 minutes.
1087 +This class inherits from SQLAlchemy's Model class.</p>
1088 +
1089 +
1090 + <details class="quote">
1091 + <summary>Source code in <code>app\models\graylog.py</code></summary>
1092 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
1093 <span class="normal"><a href="#__codelineno-0-14">14</a></span>
1094 <span class="normal"><a href="#__codelineno-0-15">15</a></span>
1095 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
@@ -676,12 +1141,7 @@
1141 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
1142 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
1143 <span class="normal"><a href="#__codelineno-0-64">64</a></span>
679 -<span class="normal"><a href="#__codelineno-0-65">65</a></span></pre>
680 - </div>
681 - </td>
682 - <td class="code">
683 - <div>
684 - <pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">GraylogMetricsAllocation</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
1144 +<span class="normal"><a href="#__codelineno-0-65">65</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">GraylogMetricsAllocation</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
1145 <a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1146 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Class for Graylog metrics allocation which stores throughput metrics.</span>
1147 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> The timestamp is generated for each entry and it is invoked every 5 minutes.</span>
@@ -734,64 +1194,45 @@
1194 <a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> :return: A string representation of the instance&#39;s id.</span>
1195 <a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> &quot;&quot;&quot;</span>
1196 <a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;&lt;GraylogMetricsAllocation </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">&gt;&quot;</span>
737 -</code></pre>
738 - </div>
739 - </td>
740 - </tr>
741 - </table>
742 - </div>
743 - </details>
744 -
745 - <div class="doc doc-children">
746 - <div class="doc doc-object doc-function">
747 - <h3
748 - id="app.models.graylog.GraylogMetricsAllocation.__init__"
749 - class="doc doc-heading"
750 - >
751 - <code class="highlight language-python"
752 - ><span class="fm">__init__</span><span class="p">(</span
753 - ><span class="n">input_usage</span
754 - ><span class="p">,</span>
755 - <span class="n">output_usage</span
756 - ><span class="p">,</span>
757 - <span class="n">processor_usage</span
758 - ><span class="p">,</span>
759 - <span class="n">input_1_sec_rate</span
760 - ><span class="p">,</span>
761 - <span class="n">output_1_sec_rate</span
762 - ><span class="p">,</span>
763 - <span class="n">total_input</span
764 - ><span class="p">,</span>
765 - <span class="n">total_output</span
766 - ><span class="p">)</span></code
767 - >
768 - </h3>
769 -
770 - <div class="doc doc-contents">
771 - <p>
772 - Initialize a new instance of the
773 - GraylogMetricsAllocation class.
774 - </p>
775 - <p>
776 - :param input_usage: The input usage value. :param
777 - output_usage: The output usage value. :param
778 - processor_usage: The processor usage value. :param
779 - input_1_sec_rate: The input per second rate. :param
780 - output_1_sec_rate: The output per second rate. :param
781 - total_input: The total input value. :param total_output:
782 - The total output value.
783 - </p>
784 -
785 - <details class="quote">
786 - <summary>
787 - Source code in <code>app\models\graylog.py</code>
788 - </summary>
789 - <div class="highlight">
790 - <table class="highlighttable">
791 - <tr>
792 - <td class="linenos">
793 - <div class="linenodiv">
794 - <pre><span></span><span class="normal"><a href="#__codelineno-0-30">30</a></span>
1197 +</code></pre></div></td></tr></table></div>
1198 + </details>
1199 +
1200 +
1201 +
1202 + <div class="doc doc-children">
1203 +
1204 +
1205 +
1206 +
1207 +
1208 +
1209 +
1210 +
1211 +
1212 +<div class="doc doc-object doc-function">
1213 +
1214 +
1215 +
1216 +<h3 id="app.models.graylog.GraylogMetricsAllocation.__init__" class="doc doc-heading">
1217 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">input_usage</span><span class="p">,</span> <span class="n">output_usage</span><span class="p">,</span> <span class="n">processor_usage</span><span class="p">,</span> <span class="n">input_1_sec_rate</span><span class="p">,</span> <span class="n">output_1_sec_rate</span><span class="p">,</span> <span class="n">total_input</span><span class="p">,</span> <span class="n">total_output</span><span class="p">)</span></code>
1218 +
1219 +</h3>
1220 +
1221 +
1222 + <div class="doc doc-contents ">
1223 +
1224 + <p>Initialize a new instance of the GraylogMetricsAllocation class.</p>
1225 +<p>:param input_usage: The input usage value.
1226 +:param output_usage: The output usage value.
1227 +:param processor_usage: The processor usage value.
1228 +:param input_1_sec_rate: The input per second rate.
1229 +:param output_1_sec_rate: The output per second rate.
1230 +:param total_input: The total input value.
1231 +:param total_output: The total output value.</p>
1232 +
1233 + <details class="quote">
1234 + <summary>Source code in <code>app\models\graylog.py</code></summary>
1235 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-30">30</a></span>
1236 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
1237 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
1238 <span class="normal"><a href="#__codelineno-0-33">33</a></span>
@@ -818,12 +1259,7 @@
1259 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
1260 <span class="normal"><a href="#__codelineno-0-55">55</a></span>
1261 <span class="normal"><a href="#__codelineno-0-56">56</a></span>
821 -<span class="normal"><a href="#__codelineno-0-57">57</a></span></pre>
822 - </div>
823 - </td>
824 - <td class="code">
825 - <div>
826 - <pre><span></span><code><a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
1262 +<span class="normal"><a href="#__codelineno-0-57">57</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
1263 <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="p">,</span>
1264 <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">input_usage</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
1265 <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">output_usage</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
@@ -851,107 +1287,78 @@
1287 <a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="bp">self</span><span class="o">.</span><span class="n">output_1_sec_rate</span> <span class="o">=</span> <span class="n">output_1_sec_rate</span>
1288 <a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="bp">self</span><span class="o">.</span><span class="n">total_input</span> <span class="o">=</span> <span class="n">total_input</span>
1289 <a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="bp">self</span><span class="o">.</span><span class="n">total_output</span> <span class="o">=</span> <span class="n">total_output</span>
854 -</code></pre>
855 - </div>
856 - </td>
857 - </tr>
858 - </table>
859 - </div>
860 - </details>
861 - </div>
862 - </div>
863 -
864 - <div class="doc doc-object doc-function">
865 - <h3
866 - id="app.models.graylog.GraylogMetricsAllocation.__repr__"
867 - class="doc doc-heading"
868 - >
869 - <code class="highlight language-python"
870 - ><span class="fm">__repr__</span
871 - ><span class="p">()</span></code
872 - >
873 - </h3>
874 -
875 - <div class="doc doc-contents">
876 - <p>
877 - Returns a string representation of the
878 - GraylogMetricsAllocation instance.
879 - </p>
880 - <p>
881 - :return: A string representation of the instance's id.
882 - </p>
883 -
884 - <details class="quote">
885 - <summary>
886 - Source code in <code>app\models\graylog.py</code>
887 - </summary>
888 - <div class="highlight">
889 - <table class="highlighttable">
890 - <tr>
891 - <td class="linenos">
892 - <div class="linenodiv">
893 - <pre><span></span><span class="normal"><a href="#__codelineno-0-59">59</a></span>
1290 +</code></pre></div></td></tr></table></div>
1291 + </details>
1292 + </div>
1293 +
1294 +</div>
1295 +
1296 +<div class="doc doc-object doc-function">
1297 +
1298 +
1299 +
1300 +<h3 id="app.models.graylog.GraylogMetricsAllocation.__repr__" class="doc doc-heading">
1301 +<code class="highlight language-python"><span class="fm">__repr__</span><span class="p">()</span></code>
1302 +
1303 +</h3>
1304 +
1305 +
1306 + <div class="doc doc-contents ">
1307 +
1308 + <p>Returns a string representation of the GraylogMetricsAllocation instance.</p>
1309 +<p>:return: A string representation of the instance's id.</p>
1310 +
1311 + <details class="quote">
1312 + <summary>Source code in <code>app\models\graylog.py</code></summary>
1313 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-59">59</a></span>
1314 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
1315 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
1316 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
1317 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
1318 <span class="normal"><a href="#__codelineno-0-64">64</a></span>
899 -<span class="normal"><a href="#__codelineno-0-65">65</a></span></pre>
900 - </div>
901 - </td>
902 - <td class="code">
903 - <div>
904 - <pre><span></span><code><a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1319 +<span class="normal"><a href="#__codelineno-0-65">65</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1320 <a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1321 <a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns a string representation of the GraylogMetricsAllocation instance.</span>
1322 <a id="__codelineno-0-62" name="__codelineno-0-62"></a>
1323 <a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> :return: A string representation of the instance&#39;s id.</span>
1324 <a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> &quot;&quot;&quot;</span>
1325 <a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;&lt;GraylogMetricsAllocation </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">&gt;&quot;</span>
911 -</code></pre>
912 - </div>
913 - </td>
914 - </tr>
915 - </table>
916 - </div>
917 - </details>
918 - </div>
919 - </div>
920 - </div>
921 - </div>
922 - </div>
923 -
924 - <div class="doc doc-object doc-class">
925 - <h2
926 - id="app.models.graylog.GraylogMetricsAllocationSchema"
927 - class="doc doc-heading"
928 - >
929 - <code>GraylogMetricsAllocationSchema</code>
930 - </h2>
931 -
932 - <div class="doc doc-contents">
933 - <p class="doc doc-class-bases">
934 - Bases:
935 - <code
936 - ><span title="app.ma">ma</span>.<span title="app.ma.Schema"
937 - >Schema</span
938 - ></code
939 - >
940 - </p>
941 -
942 - <p>
943 - Schema for serializing and deserializing instances of the
944 - GraylogMetricsAllocation class.
945 - </p>
946 -
947 - <details class="quote">
948 - <summary>Source code in <code>app\models\graylog.py</code></summary>
949 - <div class="highlight">
950 - <table class="highlighttable">
951 - <tr>
952 - <td class="linenos">
953 - <div class="linenodiv">
954 - <pre><span></span><span class="normal"><a href="#__codelineno-0-68">68</a></span>
1326 +</code></pre></div></td></tr></table></div>
1327 + </details>
1328 + </div>
1329 +
1330 +</div>
1331 +
1332 +
1333 +
1334 + </div>
1335 +
1336 + </div>
1337 +
1338 +</div>
1339 +
1340 +<div class="doc doc-object doc-class">
1341 +
1342 +
1343 +
1344 +<h2 id="app.models.graylog.GraylogMetricsAllocationSchema" class="doc doc-heading">
1345 + <code>GraylogMetricsAllocationSchema</code>
1346 +
1347 +
1348 +</h2>
1349 +
1350 +
1351 + <div class="doc doc-contents ">
1352 + <p class="doc doc-class-bases">
1353 + Bases: <code><span title="app.ma">ma</span>.<span title="app.ma.Schema">Schema</span></code></p>
1354 +
1355 +
1356 + <p>Schema for serializing and deserializing instances of the GraylogMetricsAllocation class.</p>
1357 +
1358 +
1359 + <details class="quote">
1360 + <summary>Source code in <code>app\models\graylog.py</code></summary>
1361 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-68">68</a></span>
1362 <span class="normal"><a href="#__codelineno-0-69">69</a></span>
1363 <span class="normal"><a href="#__codelineno-0-70">70</a></span>
1364 <span class="normal"><a href="#__codelineno-0-71">71</a></span>
@@ -971,12 +1378,7 @@
1378 <span class="normal"><a href="#__codelineno-0-85">85</a></span>
1379 <span class="normal"><a href="#__codelineno-0-86">86</a></span>
1380 <span class="normal"><a href="#__codelineno-0-87">87</a></span>
974 -<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre>
975 - </div>
976 - </td>
977 - <td class="code">
978 - <div>
979 - <pre><span></span><code><a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="k">class</span> <span class="nc">GraylogMetricsAllocationSchema</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span>
1381 +<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="k">class</span> <span class="nc">GraylogMetricsAllocationSchema</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span>
1382 <a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1383 <a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> Schema for serializing and deserializing instances of the GraylogMetricsAllocation class.</span>
1384 <a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -997,39 +1399,40 @@
1399 <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="s2">&quot;total_output&quot;</span><span class="p">,</span>
1400 <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span>
1401 <a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">)</span>
1000 -</code></pre>
1001 - </div>
1002 - </td>
1003 - </tr>
1004 - </table>
1005 - </div>
1006 - </details>
1007 -
1008 - <div class="doc doc-children">
1009 - <div class="doc doc-object doc-class">
1010 - <h3
1011 - id="app.models.graylog.GraylogMetricsAllocationSchema.Meta"
1012 - class="doc doc-heading"
1013 - >
1014 - <code>Meta</code>
1015 - </h3>
1016 -
1017 - <div class="doc doc-contents">
1018 - <p>
1019 - Meta class defines the fields to be
1020 - serialized/deserialized.
1021 - </p>
1022 -
1023 - <details class="quote">
1024 - <summary>
1025 - Source code in <code>app\models\graylog.py</code>
1026 - </summary>
1027 - <div class="highlight">
1028 - <table class="highlighttable">
1029 - <tr>
1030 - <td class="linenos">
1031 - <div class="linenodiv">
1032 - <pre><span></span><span class="normal"><a href="#__codelineno-0-73">73</a></span>
1402 +</code></pre></div></td></tr></table></div>
1403 + </details>
1404 +
1405 +
1406 +
1407 + <div class="doc doc-children">
1408 +
1409 +
1410 +
1411 +
1412 +
1413 +
1414 +
1415 +
1416 +<div class="doc doc-object doc-class">
1417 +
1418 +
1419 +
1420 +<h3 id="app.models.graylog.GraylogMetricsAllocationSchema.Meta" class="doc doc-heading">
1421 + <code>Meta</code>
1422 +
1423 +
1424 +</h3>
1425 +
1426 +
1427 + <div class="doc doc-contents ">
1428 +
1429 +
1430 + <p>Meta class defines the fields to be serialized/deserialized.</p>
1431 +
1432 +
1433 + <details class="quote">
1434 + <summary>Source code in <code>app\models\graylog.py</code></summary>
1435 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-73">73</a></span>
1436 <span class="normal"><a href="#__codelineno-0-74">74</a></span>
1437 <span class="normal"><a href="#__codelineno-0-75">75</a></span>
1438 <span class="normal"><a href="#__codelineno-0-76">76</a></span>
@@ -1044,12 +1447,7 @@
1447 <span class="normal"><a href="#__codelineno-0-85">85</a></span>
1448 <span class="normal"><a href="#__codelineno-0-86">86</a></span>
1449 <span class="normal"><a href="#__codelineno-0-87">87</a></span>
1047 -<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre>
1048 - </div>
1049 - </td>
1050 - <td class="code">
1051 - <div>
1052 - <pre><span></span><code><a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
1450 +<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
1451 <a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1452 <a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Meta class defines the fields to be serialized/deserialized.</span>
1453 <a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -1065,104 +1463,176 @@
1463 <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="s2">&quot;total_output&quot;</span><span class="p">,</span>
1464 <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span>
1465 <a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">)</span>
1068 -</code></pre>
1069 - </div>
1070 - </td>
1071 - </tr>
1072 - </table>
1073 - </div>
1074 - </details>
1075 -
1076 - <div class="doc doc-children"></div>
1077 - </div>
1078 - </div>
1079 - </div>
1080 - </div>
1081 - </div>
1082 - </div>
1083 - </div>
1084 - </div>
1085 - <p><br /></p>
1086 - <h3 id="graylog-routes"><span style="color: green">Graylog Routes</span></h3>
1087 -
1088 - <div class="doc doc-object doc-module">
1089 - <a id="app.routes.graylog"></a>
1090 - <div class="doc doc-contents first">
1091 - <div class="doc doc-children">
1092 - <div class="doc doc-object doc-function">
1093 - <h2 id="app.routes.graylog.delete_index" class="doc doc-heading">
1094 - <code class="highlight language-python"
1095 - ><span class="n">delete_index</span><span class="p">(</span
1096 - ><span class="n">index_name</span><span class="p">)</span></code
1097 - >
1098 - </h2>
1099 -
1100 - <div class="doc doc-contents">
1101 - <p>Endpoint to delete a Graylog index.</p>
1102 -
1103 - <p><strong>Parameters:</strong></p>
1104 - <table>
1105 - <thead>
1106 - <tr>
1107 - <th>Name</th>
1108 - <th>Type</th>
1109 - <th>Description</th>
1110 - <th>Default</th>
1111 - </tr>
1112 - </thead>
1113 - <tbody>
1114 - <tr>
1115 - <td><code>index_name</code></td>
1116 - <td>
1117 - <code>str</code>
1118 - </td>
1119 - <td>
1120 - <div class="doc-md-description">
1121 - <p>The name of the index to be deleted.</p>
1122 - </div>
1123 - </td>
1124 - <td>
1125 - <em>required</em>
1126 - </td>
1127 - </tr>
1128 - </tbody>
1129 - </table>
1130 -
1131 - <p><strong>Returns:</strong></p>
1132 - <table>
1133 - <thead>
1134 - <tr>
1135 - <th>Name</th>
1136 - <th>Type</th>
1137 - <th>Description</th>
1138 - </tr>
1139 - </thead>
1140 - <tbody>
1141 - <tr>
1142 - <td><code>dict</code></td>
1143 - <td>
1144 - <code>dict</code>
1145 - </td>
1146 - <td>
1147 - <div class="doc-md-description">
1148 - <p>
1149 - A JSON object containing the result of the
1150 - deletion operation.
1151 - </p>
1152 - </div>
1153 - </td>
1154 - </tr>
1155 - </tbody>
1156 - </table>
1157 -
1158 - <details class="quote">
1159 - <summary>Source code in <code>app\routes\graylog.py</code></summary>
1160 - <div class="highlight">
1161 - <table class="highlighttable">
1162 - <tr>
1163 - <td class="linenos">
1164 - <div class="linenodiv">
1165 - <pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1466 +</code></pre></div></td></tr></table></div>
1467 + </details>
1468 +
1469 +
1470 +
1471 + <div class="doc doc-children">
1472 +
1473 +
1474 +
1475 +
1476 +
1477 +
1478 +
1479 +
1480 +
1481 +
1482 +
1483 + </div>
1484 +
1485 + </div>
1486 +
1487 +</div>
1488 +
1489 +
1490 +
1491 +
1492 + </div>
1493 +
1494 + </div>
1495 +
1496 +</div>
1497 +
1498 +
1499 +
1500 +
1501 + </div>
1502 +
1503 + </div>
1504 +
1505 +</div><p><br></p>
1506 +<h3 id="graylog-routes"><span style="color:green">Graylog Routes</span></h3>
1507 +<h2 id="graylogpy_1">graylog.py</h2>
1508 +<p>The <code>graylog.py</code> file appears to be a Flask application module that defines several HTTP endpoints related to interacting with the Graylog service. It uses Flask's Blueprint functionality to create endpoints under the "/graylog" path. Here are the details:</p>
1509 +<h3 id="imports">Imports</h3>
1510 +<p>The script imports necessary modules and services at the beginning:</p>
1511 +<ul>
1512 +<li><code>flask</code>: A micro web framework written in Python.</li>
1513 +<li><code>jsonify</code>: A Flask function that converts Python data structures to JSON format.</li>
1514 +<li><code>app.services.Graylog.*</code>: Various services related to Graylog, such as <code>IndexService</code>, <code>InputsService</code>, <code>MessagesService</code>, and <code>MetricsService</code>.</li>
1515 +</ul>
1516 +<h3 id="blueprint">Blueprint</h3>
1517 +<p>The script defines a <code>Blueprint</code> named <code>bp</code>, which is a way to organize a group of related views and other code in Flask. The <code>bp</code> is registered with the Flask application and all the defined routes under the "/graylog" path will be associated with this blueprint.</p>
1518 +<p>The endpoints defined in this script are not provided in the given information, so a detailed breakdown of the routes and their associated functions cannot be provided without reviewing the code further.</p>
1519 +<p>This file is likely part of a larger Flask application that provides an API interface for interacting with the Graylog service. It follows a modular approach by organizing related endpoints and functionality into a blueprint, promoting code organization and maintainability.</p>
1520 +<h2 id="endpoints">Endpoints</h2>
1521 +<p>The <code>graylog.py</code> script defines the following endpoints under the <code>/graylog</code> path:</p>
1522 +<ul>
1523 +<li>
1524 +<p><strong>GET /graylog/messages</strong>: This endpoint returns the latest 10 messages from Graylog. It utilizes the <code>MessagesService</code> to collect these messages.</p>
1525 +</li>
1526 +<li>
1527 +<p><strong>GET /graylog/metrics</strong>: This endpoint returns Graylog metrics, including the uncommitted journal size. It utilizes the <code>MetricsService</code> to collect these metrics.</p>
1528 +</li>
1529 +<li>
1530 +<p><strong>GET /graylog/indices</strong>: This endpoint returns a list of all Graylog indices. It utilizes the <code>IndexService</code> to collect these indices.</p>
1531 +</li>
1532 +<li>
1533 +<p><strong>DELETE /graylog/indices/<index_name>/delete</strong>: This endpoint deletes a specified Graylog index. It utilizes the <code>IndexService</code> to delete the specified index.</p>
1534 +</li>
1535 +<li>
1536 +<p><strong>GET /graylog/inputs</strong>: This endpoint returns a list of all running and configured inputs in Graylog. It utilizes the <code>InputsService</code> to collect these inputs.</p>
1537 +</li>
1538 +</ul>
1539 +<h2 id="services">Services</h2>
1540 +<p>The <code>graylog.py</code> script uses several services to interact with Graylog:</p>
1541 +<ul>
1542 +<li><code>MessagesService</code>: Used to collect messages from Graylog.</li>
1543 +<li><code>MetricsService</code>: Used to collect Graylog metrics.</li>
1544 +<li><code>IndexService</code>: Used to collect and delete Graylog indices.</li>
1545 +<li><code>InputsService</code>: Used to collect running and configured inputs in Graylog.</li>
1546 +</ul>
1547 +<p>These services handle the implementation details of interacting with the Graylog API to perform the respective operations.</p>
1548 +<p>Each endpoint is well-documented with a docstring, providing clear descriptions of its purpose, accepted arguments (if any), and the returned data. The script demonstrates good organization and adheres to common practices for structuring Flask applications.</p>
1549 +
1550 +
1551 +<div class="doc doc-object doc-module">
1552 +
1553 +
1554 +<a id="app.routes.graylog"></a>
1555 + <div class="doc doc-contents first">
1556 +
1557 +
1558 +
1559 + <div class="doc doc-children">
1560 +
1561 +
1562 +
1563 +
1564 +
1565 +
1566 +
1567 +
1568 +
1569 +<div class="doc doc-object doc-function">
1570 +
1571 +
1572 +
1573 +<h2 id="app.routes.graylog.delete_index" class="doc doc-heading">
1574 +<code class="highlight language-python"><span class="n">delete_index</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span></code>
1575 +
1576 +</h2>
1577 +
1578 +
1579 + <div class="doc doc-contents ">
1580 +
1581 + <p>Endpoint to delete a Graylog index.</p>
1582 +
1583 + <p><strong>Parameters:</strong></p>
1584 + <table>
1585 + <thead>
1586 + <tr>
1587 + <th>Name</th>
1588 + <th>Type</th>
1589 + <th>Description</th>
1590 + <th>Default</th>
1591 + </tr>
1592 + </thead>
1593 + <tbody>
1594 + <tr>
1595 + <td><code>index_name</code></td>
1596 + <td>
1597 + <code>str</code>
1598 + </td>
1599 + <td>
1600 + <div class="doc-md-description">
1601 + <p>The name of the index to be deleted.</p>
1602 + </div>
1603 + </td>
1604 + <td>
1605 + <em>required</em>
1606 + </td>
1607 + </tr>
1608 + </tbody>
1609 + </table>
1610 +
1611 + <p><strong>Returns:</strong></p>
1612 + <table>
1613 + <thead>
1614 + <tr>
1615 +<th>Name</th> <th>Type</th>
1616 + <th>Description</th>
1617 + </tr>
1618 + </thead>
1619 + <tbody>
1620 + <tr>
1621 +<td><code>dict</code></td> <td>
1622 + <code>dict</code>
1623 + </td>
1624 + <td>
1625 + <div class="doc-md-description">
1626 + <p>A JSON object containing the result of the deletion operation.</p>
1627 + </div>
1628 + </td>
1629 + </tr>
1630 + </tbody>
1631 + </table>
1632 +
1633 + <details class="quote">
1634 + <summary>Source code in <code>app\routes\graylog.py</code></summary>
1635 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1636 <span class="normal"><a href="#__codelineno-0-59">59</a></span>
1637 <span class="normal"><a href="#__codelineno-0-60">60</a></span>
1638 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -1175,12 +1645,7 @@
1645 <span class="normal"><a href="#__codelineno-0-68">68</a></span>
1646 <span class="normal"><a href="#__codelineno-0-69">69</a></span>
1647 <span class="normal"><a href="#__codelineno-0-70">70</a></span>
1178 -<span class="normal"><a href="#__codelineno-0-71">71</a></span></pre>
1179 - </div>
1180 - </td>
1181 - <td class="code">
1182 - <div>
1183 - <pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/indices/&lt;index_name&gt;/delete&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;DELETE&quot;</span><span class="p">])</span>
1648 +<span class="normal"><a href="#__codelineno-0-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/indices/&lt;index_name&gt;/delete&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;DELETE&quot;</span><span class="p">])</span>
1649 <a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="nf">delete_index</span><span class="p">(</span><span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
1650 <a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1651 <a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Endpoint to delete a Graylog index.</span>
@@ -1194,61 +1659,51 @@
1659 <a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">IndexService</span><span class="p">()</span>
1660 <a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">delete_index</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span>
1661 <a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="n">result</span>
1197 -</code></pre>
1198 - </div>
1199 - </td>
1200 - </tr>
1201 - </table>
1202 - </div>
1203 - </details>
1204 - </div>
1205 - </div>
1206 -
1207 - <div class="doc doc-object doc-function">
1208 - <h2 id="app.routes.graylog.get_indices" class="doc doc-heading">
1209 - <code class="highlight language-python"
1210 - ><span class="n">get_indices</span><span class="p">()</span></code
1211 - >
1212 - </h2>
1213 -
1214 - <div class="doc doc-contents">
1215 - <p>Endpoint to collect Graylog indices.</p>
1216 -
1217 - <p><strong>Returns:</strong></p>
1218 - <table>
1219 - <thead>
1220 - <tr>
1221 - <th>Name</th>
1222 - <th>Type</th>
1223 - <th>Description</th>
1224 - </tr>
1225 - </thead>
1226 - <tbody>
1227 - <tr>
1228 - <td><code>dict</code></td>
1229 - <td>
1230 - <code>dict</code>
1231 - </td>
1232 - <td>
1233 - <div class="doc-md-description">
1234 - <p>
1235 - A JSON object containing the list of all
1236 - indices.
1237 - </p>
1238 - </div>
1239 - </td>
1240 - </tr>
1241 - </tbody>
1242 - </table>
1243 -
1244 - <details class="quote">
1245 - <summary>Source code in <code>app\routes\graylog.py</code></summary>
1246 - <div class="highlight">
1247 - <table class="highlighttable">
1248 - <tr>
1249 - <td class="linenos">
1250 - <div class="linenodiv">
1251 - <pre><span></span><span class="normal"><a href="#__codelineno-0-45">45</a></span>
1662 +</code></pre></div></td></tr></table></div>
1663 + </details>
1664 + </div>
1665 +
1666 +</div>
1667 +
1668 +<div class="doc doc-object doc-function">
1669 +
1670 +
1671 +
1672 +<h2 id="app.routes.graylog.get_indices" class="doc doc-heading">
1673 +<code class="highlight language-python"><span class="n">get_indices</span><span class="p">()</span></code>
1674 +
1675 +</h2>
1676 +
1677 +
1678 + <div class="doc doc-contents ">
1679 +
1680 + <p>Endpoint to collect Graylog indices.</p>
1681 +
1682 + <p><strong>Returns:</strong></p>
1683 + <table>
1684 + <thead>
1685 + <tr>
1686 +<th>Name</th> <th>Type</th>
1687 + <th>Description</th>
1688 + </tr>
1689 + </thead>
1690 + <tbody>
1691 + <tr>
1692 +<td><code>dict</code></td> <td>
1693 + <code>dict</code>
1694 + </td>
1695 + <td>
1696 + <div class="doc-md-description">
1697 + <p>A JSON object containing the list of all indices.</p>
1698 + </div>
1699 + </td>
1700 + </tr>
1701 + </tbody>
1702 + </table>
1703 +
1704 + <details class="quote">
1705 + <summary>Source code in <code>app\routes\graylog.py</code></summary>
1706 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-45">45</a></span>
1707 <span class="normal"><a href="#__codelineno-0-46">46</a></span>
1708 <span class="normal"><a href="#__codelineno-0-47">47</a></span>
1709 <span class="normal"><a href="#__codelineno-0-48">48</a></span>
@@ -1258,12 +1713,7 @@
1713 <span class="normal"><a href="#__codelineno-0-52">52</a></span>
1714 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
1715 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
1261 -<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre>
1262 - </div>
1263 - </td>
1264 - <td class="code">
1265 - <div>
1266 - <pre><span></span><code><a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/indices&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1716 +<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/indices&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1717 <a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="k">def</span> <span class="nf">get_indices</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
1718 <a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1719 <a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> Endpoint to collect Graylog indices.</span>
@@ -1274,61 +1724,51 @@
1724 <a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">IndexService</span><span class="p">()</span>
1725 <a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">indices</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_indices</span><span class="p">()</span>
1726 <a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="n">indices</span>
1277 -</code></pre>
1278 - </div>
1279 - </td>
1280 - </tr>
1281 - </table>
1282 - </div>
1283 - </details>
1284 - </div>
1285 - </div>
1286 -
1287 - <div class="doc doc-object doc-function">
1288 - <h2 id="app.routes.graylog.get_inputs" class="doc doc-heading">
1289 - <code class="highlight language-python"
1290 - ><span class="n">get_inputs</span><span class="p">()</span></code
1291 - >
1292 - </h2>
1293 -
1294 - <div class="doc doc-contents">
1295 - <p>Endpoint to collect Graylog inputs.</p>
1296 -
1297 - <p><strong>Returns:</strong></p>
1298 - <table>
1299 - <thead>
1300 - <tr>
1301 - <th>Name</th>
1302 - <th>Type</th>
1303 - <th>Description</th>
1304 - </tr>
1305 - </thead>
1306 - <tbody>
1307 - <tr>
1308 - <td><code>dict</code></td>
1309 - <td>
1310 - <code>dict</code>
1311 - </td>
1312 - <td>
1313 - <div class="doc-md-description">
1314 - <p>
1315 - A JSON object containing the list of all running
1316 - and configured inputs.
1317 - </p>
1318 - </div>
1319 - </td>
1320 - </tr>
1321 - </tbody>
1322 - </table>
1323 -
1324 - <details class="quote">
1325 - <summary>Source code in <code>app\routes\graylog.py</code></summary>
1326 - <div class="highlight">
1327 - <table class="highlighttable">
1328 - <tr>
1329 - <td class="linenos">
1330 - <div class="linenodiv">
1331 - <pre><span></span><span class="normal"><a href="#__codelineno-0-74">74</a></span>
1727 +</code></pre></div></td></tr></table></div>
1728 + </details>
1729 + </div>
1730 +
1731 +</div>
1732 +
1733 +<div class="doc doc-object doc-function">
1734 +
1735 +
1736 +
1737 +<h2 id="app.routes.graylog.get_inputs" class="doc doc-heading">
1738 +<code class="highlight language-python"><span class="n">get_inputs</span><span class="p">()</span></code>
1739 +
1740 +</h2>
1741 +
1742 +
1743 + <div class="doc doc-contents ">
1744 +
1745 + <p>Endpoint to collect Graylog inputs.</p>
1746 +
1747 + <p><strong>Returns:</strong></p>
1748 + <table>
1749 + <thead>
1750 + <tr>
1751 +<th>Name</th> <th>Type</th>
1752 + <th>Description</th>
1753 + </tr>
1754 + </thead>
1755 + <tbody>
1756 + <tr>
1757 +<td><code>dict</code></td> <td>
1758 + <code>dict</code>
1759 + </td>
1760 + <td>
1761 + <div class="doc-md-description">
1762 + <p>A JSON object containing the list of all running and configured inputs.</p>
1763 + </div>
1764 + </td>
1765 + </tr>
1766 + </tbody>
1767 + </table>
1768 +
1769 + <details class="quote">
1770 + <summary>Source code in <code>app\routes\graylog.py</code></summary>
1771 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-74">74</a></span>
1772 <span class="normal"><a href="#__codelineno-0-75">75</a></span>
1773 <span class="normal"><a href="#__codelineno-0-76">76</a></span>
1774 <span class="normal"><a href="#__codelineno-0-77">77</a></span>
@@ -1341,12 +1781,7 @@
1781 <span class="normal"><a href="#__codelineno-0-84">84</a></span>
1782 <span class="normal"><a href="#__codelineno-0-85">85</a></span>
1783 <span class="normal"><a href="#__codelineno-0-86">86</a></span>
1344 -<span class="normal"><a href="#__codelineno-0-87">87</a></span></pre>
1345 - </div>
1346 - </td>
1347 - <td class="code">
1348 - <div>
1349 - <pre><span></span><code><a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/inputs&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1784 +<span class="normal"><a href="#__codelineno-0-87">87</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/inputs&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1785 <a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="k">def</span> <span class="nf">get_inputs</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
1786 <a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1787 <a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Endpoint to collect Graylog inputs.</span>
@@ -1360,61 +1795,51 @@
1795 <a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span>
1796 <a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="p">{</span><span class="s2">&quot;running_inputs&quot;</span><span class="p">:</span> <span class="n">running_inputs</span><span class="p">,</span> <span class="s2">&quot;configured_inputs&quot;</span><span class="p">:</span> <span class="n">configured_inputs</span><span class="p">},</span>
1797 <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="p">)</span>
1363 -</code></pre>
1364 - </div>
1365 - </td>
1366 - </tr>
1367 - </table>
1368 - </div>
1369 - </details>
1370 - </div>
1371 - </div>
1372 -
1373 - <div class="doc doc-object doc-function">
1374 - <h2 id="app.routes.graylog.get_messages" class="doc doc-heading">
1375 - <code class="highlight language-python"
1376 - ><span class="n">get_messages</span><span class="p">()</span></code
1377 - >
1378 - </h2>
1379 -
1380 - <div class="doc doc-contents">
1381 - <p>Endpoint to collect the latest 10 messages from Graylog.</p>
1382 -
1383 - <p><strong>Returns:</strong></p>
1384 - <table>
1385 - <thead>
1386 - <tr>
1387 - <th>Name</th>
1388 - <th>Type</th>
1389 - <th>Description</th>
1390 - </tr>
1391 - </thead>
1392 - <tbody>
1393 - <tr>
1394 - <td><code>dict</code></td>
1395 - <td>
1396 - <code>dict</code>
1397 - </td>
1398 - <td>
1399 - <div class="doc-md-description">
1400 - <p>
1401 - A JSON object containing the list of all the
1402 - messages.
1403 - </p>
1404 - </div>
1405 - </td>
1406 - </tr>
1407 - </tbody>
1408 - </table>
1409 -
1410 - <details class="quote">
1411 - <summary>Source code in <code>app\routes\graylog.py</code></summary>
1412 - <div class="highlight">
1413 - <table class="highlighttable">
1414 - <tr>
1415 - <td class="linenos">
1416 - <div class="linenodiv">
1417 - <pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
1798 +</code></pre></div></td></tr></table></div>
1799 + </details>
1800 + </div>
1801 +
1802 +</div>
1803 +
1804 +<div class="doc doc-object doc-function">
1805 +
1806 +
1807 +
1808 +<h2 id="app.routes.graylog.get_messages" class="doc doc-heading">
1809 +<code class="highlight language-python"><span class="n">get_messages</span><span class="p">()</span></code>
1810 +
1811 +</h2>
1812 +
1813 +
1814 + <div class="doc doc-contents ">
1815 +
1816 + <p>Endpoint to collect the latest 10 messages from Graylog.</p>
1817 +
1818 + <p><strong>Returns:</strong></p>
1819 + <table>
1820 + <thead>
1821 + <tr>
1822 +<th>Name</th> <th>Type</th>
1823 + <th>Description</th>
1824 + </tr>
1825 + </thead>
1826 + <tbody>
1827 + <tr>
1828 +<td><code>dict</code></td> <td>
1829 + <code>dict</code>
1830 + </td>
1831 + <td>
1832 + <div class="doc-md-description">
1833 + <p>A JSON object containing the list of all the messages.</p>
1834 + </div>
1835 + </td>
1836 + </tr>
1837 + </tbody>
1838 + </table>
1839 +
1840 + <details class="quote">
1841 + <summary>Source code in <code>app\routes\graylog.py</code></summary>
1842 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
1843 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
1844 <span class="normal"><a href="#__codelineno-0-17">17</a></span>
1845 <span class="normal"><a href="#__codelineno-0-18">18</a></span>
@@ -1424,12 +1849,7 @@
1849 <span class="normal"><a href="#__codelineno-0-22">22</a></span>
1850 <span class="normal"><a href="#__codelineno-0-23">23</a></span>
1851 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
1427 -<span class="normal"><a href="#__codelineno-0-25">25</a></span></pre>
1428 - </div>
1429 - </td>
1430 - <td class="code">
1431 - <div>
1432 - <pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/messages&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1852 +<span class="normal"><a href="#__codelineno-0-25">25</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/messages&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1853 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">get_messages</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
1854 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1855 <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Endpoint to collect the latest 10 messages from Graylog.</span>
@@ -1440,61 +1860,52 @@
1860 <a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">MessagesService</span><span class="p">()</span>
1861 <a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">messages</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_messages</span><span class="p">()</span>
1862 <a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">return</span> <span class="n">messages</span>
1443 -</code></pre>
1444 - </div>
1445 - </td>
1446 - </tr>
1447 - </table>
1448 - </div>
1449 - </details>
1450 - </div>
1451 - </div>
1452 -
1453 - <div class="doc doc-object doc-function">
1454 - <h2 id="app.routes.graylog.get_metrics" class="doc doc-heading">
1455 - <code class="highlight language-python"
1456 - ><span class="n">get_metrics</span><span class="p">()</span></code
1457 - >
1458 - </h2>
1459 -
1460 - <div class="doc doc-contents">
1461 - <p>Endpoint to collect Graylog metrics.</p>
1462 -
1463 - <p><strong>Returns:</strong></p>
1464 - <table>
1465 - <thead>
1466 - <tr>
1467 - <th>Name</th>
1468 - <th>Type</th>
1469 - <th>Description</th>
1470 - </tr>
1471 - </thead>
1472 - <tbody>
1473 - <tr>
1474 - <td><code>dict</code></td>
1475 - <td>
1476 - <code>dict</code>
1477 - </td>
1478 - <td>
1479 - <div class="doc-md-description">
1480 - <p>
1481 - A JSON object containing the list of all
1482 - metrics, including the uncommitted journal size.
1483 - </p>
1484 - </div>
1485 - </td>
1486 - </tr>
1487 - </tbody>
1488 - </table>
1489 -
1490 - <details class="quote">
1491 - <summary>Source code in <code>app\routes\graylog.py</code></summary>
1492 - <div class="highlight">
1493 - <table class="highlighttable">
1494 - <tr>
1495 - <td class="linenos">
1496 - <div class="linenodiv">
1497 - <pre><span></span><span class="normal"><a href="#__codelineno-0-28">28</a></span>
1863 +</code></pre></div></td></tr></table></div>
1864 + </details>
1865 + </div>
1866 +
1867 +</div>
1868 +
1869 +<div class="doc doc-object doc-function">
1870 +
1871 +
1872 +
1873 +<h2 id="app.routes.graylog.get_metrics" class="doc doc-heading">
1874 +<code class="highlight language-python"><span class="n">get_metrics</span><span class="p">()</span></code>
1875 +
1876 +</h2>
1877 +
1878 +
1879 + <div class="doc doc-contents ">
1880 +
1881 + <p>Endpoint to collect Graylog metrics.</p>
1882 +
1883 + <p><strong>Returns:</strong></p>
1884 + <table>
1885 + <thead>
1886 + <tr>
1887 +<th>Name</th> <th>Type</th>
1888 + <th>Description</th>
1889 + </tr>
1890 + </thead>
1891 + <tbody>
1892 + <tr>
1893 +<td><code>dict</code></td> <td>
1894 + <code>dict</code>
1895 + </td>
1896 + <td>
1897 + <div class="doc-md-description">
1898 + <p>A JSON object containing the list of all metrics,
1899 + including the uncommitted journal size.</p>
1900 + </div>
1901 + </td>
1902 + </tr>
1903 + </tbody>
1904 + </table>
1905 +
1906 + <details class="quote">
1907 + <summary>Source code in <code>app\routes\graylog.py</code></summary>
1908 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-28">28</a></span>
1909 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
1910 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
1911 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
@@ -1508,12 +1919,7 @@
1919 <span class="normal"><a href="#__codelineno-0-39">39</a></span>
1920 <span class="normal"><a href="#__codelineno-0-40">40</a></span>
1921 <span class="normal"><a href="#__codelineno-0-41">41</a></span>
1511 -<span class="normal"><a href="#__codelineno-0-42">42</a></span></pre>
1512 - </div>
1513 - </td>
1514 - <td class="code">
1515 - <div>
1516 - <pre><span></span><code><a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/metrics&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1922 +<span class="normal"><a href="#__codelineno-0-42">42</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/graylog/metrics&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1923 <a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="k">def</span> <span class="nf">get_metrics</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
1924 <a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1925 <a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Endpoint to collect Graylog metrics.</span>
@@ -1528,46 +1934,82 @@
1934 <a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span>
1935 <a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="p">{</span><span class="s2">&quot;uncommitted_journal_size&quot;</span><span class="p">:</span> <span class="n">uncommitted_journal_size</span><span class="p">,</span> <span class="s2">&quot;metrics&quot;</span><span class="p">:</span> <span class="n">metrics</span><span class="p">},</span>
1936 <a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="p">)</span>
1531 -</code></pre>
1532 - </div>
1533 - </td>
1534 - </tr>
1535 - </table>
1536 - </div>
1537 - </details>
1538 - </div>
1539 - </div>
1540 - </div>
1541 - </div>
1542 - </div>
1543 - <p><br /></p>
1544 - <h3 id="graylog-services"><span style="color: red">Graylog Services</span></h3>
1545 -
1546 - <div class="doc doc-object doc-module">
1547 - <a id="app.services.Graylog.index"></a>
1548 - <div class="doc doc-contents first">
1549 - <div class="doc doc-children">
1550 - <div class="doc doc-object doc-class">
1551 - <h2 id="app.services.Graylog.index.IndexService" class="doc doc-heading">
1552 - <code>IndexService</code>
1553 - </h2>
1554 -
1555 - <div class="doc doc-contents">
1556 - <p>
1557 - A service class that encapsulates the logic for pulling index data
1558 - from Graylog
1559 - </p>
1560 -
1561 - <details class="quote">
1562 - <summary>
1563 - Source code in <code>app\services\Graylog\index.py</code>
1564 - </summary>
1565 - <div class="highlight">
1566 - <table class="highlighttable">
1567 - <tr>
1568 - <td class="linenos">
1569 - <div class="linenodiv">
1570 - <pre><span></span><span class="normal"><a href="#__codelineno-0-12"> 12</a></span>
1937 +</code></pre></div></td></tr></table></div>
1938 + </details>
1939 + </div>
1940 +
1941 +</div>
1942 +
1943 +
1944 +
1945 + </div>
1946 +
1947 + </div>
1948 +
1949 +</div><p><br></p>
1950 +<h3 id="graylog-services-index"><span style="color:red">Graylog Services Index</span></h3>
1951 +<h2 id="indexservice-class">IndexService Class</h2>
1952 +<p>The <code>index.py</code> file defines the <code>IndexService</code> class, which encapsulates the functionality for interacting with the Graylog indexing system.</p>
1953 +<h3 id="imports_1">Imports</h3>
1954 +<p>The script imports the following modules and services:</p>
1955 +<ul>
1956 +<li><code>requests</code>: A Python library for making HTTP requests.</li>
1957 +<li><code>loguru</code>: A third-party library providing a more convenient and powerful logger for Python.</li>
1958 +<li><code>typing</code>: A standard Python library for supporting type hints.</li>
1959 +<li><code>app.services.Graylog.universal.UniversalService</code>: The <code>UniversalService</code> class from the <code>app.services.Graylog.universal</code> module.</li>
1960 +</ul>
1961 +<h3 id="class-definition-indexservice">Class Definition: IndexService</h3>
1962 +<p>The <code>IndexService</code> class encapsulates the logic for pulling index data from Graylog. It provides the following methods:</p>
1963 +<ul>
1964 +<li><code>__init__</code>: Initializes the <code>IndexService</code> by collecting Graylog details using <code>UniversalService</code>.</li>
1965 +<li><code>collect_indices</code>: Collects the indices that are managed by Graylog.</li>
1966 +<li><code>_collect_managed_indices</code>: Core method for collecting indices from Graylog by making a GET request to the Graylog API endpoint <code>/api/system/indexer/indices</code>.</li>
1967 +<li><code>_extract_index_names</code>: Helper method to extract the names of the indices from the Graylog API response.</li>
1968 +<li><code>delete_index</code>: Deletes a specified index from Graylog.</li>
1969 +<li><code>_delete_index</code>: Core method for deleting an index from Graylog by making a DELETE request to the Graylog API endpoint <code>/api/system/indexer/indices/{index_name}</code>.</li>
1970 +</ul>
1971 +<h3 id="error-handling">Error Handling</h3>
1972 +<p>The script includes error handling using try/except blocks. When an error occurs, the error message is logged using <code>loguru</code>'s <code>logger.error</code> function, and a dictionary with a failure message and success status set to False is returned.</p>
1973 +<p>The <code>IndexService</code> class follows good practices for encapsulating functionality related to Graylog's indexing system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.</p>
1974 +
1975 +
1976 +<div class="doc doc-object doc-module">
1977 +
1978 +
1979 +<a id="app.services.Graylog.index"></a>
1980 + <div class="doc doc-contents first">
1981 +
1982 +
1983 +
1984 + <div class="doc doc-children">
1985 +
1986 +
1987 +
1988 +
1989 +
1990 +
1991 +
1992 +
1993 +<div class="doc doc-object doc-class">
1994 +
1995 +
1996 +
1997 +<h2 id="app.services.Graylog.index.IndexService" class="doc doc-heading">
1998 + <code>IndexService</code>
1999 +
2000 +
2001 +</h2>
2002 +
2003 +
2004 + <div class="doc doc-contents ">
2005 +
2006 +
2007 + <p>A service class that encapsulates the logic for pulling index data from Graylog</p>
2008 +
2009 +
2010 + <details class="quote">
2011 + <summary>Source code in <code>app\services\Graylog\index.py</code></summary>
2012 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-12"> 12</a></span>
2013 <span class="normal"><a href="#__codelineno-0-13"> 13</a></span>
2014 <span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
2015 <span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
@@ -1704,12 +2146,7 @@
2146 <span class="normal"><a href="#__codelineno-0-146">146</a></span>
2147 <span class="normal"><a href="#__codelineno-0-147">147</a></span>
2148 <span class="normal"><a href="#__codelineno-0-148">148</a></span>
1707 -<span class="normal"><a href="#__codelineno-0-149">149</a></span></pre>
1708 - </div>
1709 - </td>
1710 - <td class="code">
1711 - <div>
1712 - <pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">class</span> <span class="nc">IndexService</span><span class="p">:</span>
2149 +<span class="normal"><a href="#__codelineno-0-149">149</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">class</span> <span class="nc">IndexService</span><span class="p">:</span>
2150 <a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2151 <a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> A service class that encapsulates the logic for pulling index data from Graylog</span>
2152 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -1847,43 +2284,38 @@
2284 <a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="s2">&quot;it cannot be deleted.&quot;</span><span class="p">,</span>
2285 <a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2286 <a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="p">}</span>
1850 -</code></pre>
1851 - </div>
1852 - </td>
1853 - </tr>
1854 - </table>
1855 - </div>
1856 - </details>
1857 -
1858 - <div class="doc doc-children">
1859 - <div class="doc doc-object doc-function">
1860 - <h3
1861 - id="app.services.Graylog.index.IndexService.__init__"
1862 - class="doc doc-heading"
1863 - >
1864 - <code class="highlight language-python"
1865 - ><span class="fm">__init__</span
1866 - ><span class="p">()</span></code
1867 - >
1868 - </h3>
1869 -
1870 - <div class="doc doc-contents">
1871 - <p>
1872 - Initializes the IndexService by collecting Graylog
1873 - details.
1874 - </p>
1875 -
1876 - <details class="quote">
1877 - <summary>
1878 - Source code in
1879 - <code>app\services\Graylog\index.py</code>
1880 - </summary>
1881 - <div class="highlight">
1882 - <table class="highlighttable">
1883 - <tr>
1884 - <td class="linenos">
1885 - <div class="linenodiv">
1886 - <pre><span></span><span class="normal"><a href="#__codelineno-0-19">19</a></span>
2287 +</code></pre></div></td></tr></table></div>
2288 + </details>
2289 +
2290 +
2291 +
2292 + <div class="doc doc-children">
2293 +
2294 +
2295 +
2296 +
2297 +
2298 +
2299 +
2300 +
2301 +
2302 +<div class="doc doc-object doc-function">
2303 +
2304 +
2305 +
2306 +<h3 id="app.services.Graylog.index.IndexService.__init__" class="doc doc-heading">
2307 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">()</span></code>
2308 +
2309 +</h3>
2310 +
2311 +
2312 + <div class="doc doc-contents ">
2313 +
2314 + <p>Initializes the IndexService by collecting Graylog details.</p>
2315 +
2316 + <details class="quote">
2317 + <summary>Source code in <code>app\services\Graylog\index.py</code></summary>
2318 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-19">19</a></span>
2319 <span class="normal"><a href="#__codelineno-0-20">20</a></span>
2320 <span class="normal"><a href="#__codelineno-0-21">21</a></span>
2321 <span class="normal"><a href="#__codelineno-0-22">22</a></span>
@@ -1891,12 +2323,7 @@
2323 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
2324 <span class="normal"><a href="#__codelineno-0-25">25</a></span>
2325 <span class="normal"><a href="#__codelineno-0-26">26</a></span>
1894 -<span class="normal"><a href="#__codelineno-0-27">27</a></span></pre>
1895 - </div>
1896 - </td>
1897 - <td class="code">
1898 - <div>
1899 - <pre><span></span><code><a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2326 +<span class="normal"><a href="#__codelineno-0-27">27</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2327 <a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2328 <a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> Initializes the IndexService by collecting Graylog details.</span>
2329 <a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -1905,76 +2332,51 @@
2332 <a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
2333 <a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
2334 <a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">&quot;Graylog&quot;</span><span class="p">)</span>
1908 -</code></pre>
1909 - </div>
1910 - </td>
1911 - </tr>
1912 - </table>
1913 - </div>
1914 - </details>
1915 - </div>
1916 - </div>
1917 -
1918 - <div class="doc doc-object doc-function">
1919 - <h3
1920 - id="app.services.Graylog.index.IndexService.collect_indices"
1921 - class="doc doc-heading"
1922 - >
1923 - <code class="highlight language-python"
1924 - ><span class="n">collect_indices</span
1925 - ><span class="p">()</span></code
1926 - >
1927 - </h3>
1928 -
1929 - <div class="doc doc-contents">
1930 - <p>Collects the indices that are managed by Graylog.</p>
1931 -
1932 - <p><strong>Returns:</strong></p>
1933 - <table>
1934 - <thead>
1935 - <tr>
1936 - <th>Name</th>
1937 - <th>Type</th>
1938 - <th>Description</th>
1939 - </tr>
1940 - </thead>
1941 - <tbody>
1942 - <tr>
1943 - <td><code>dict</code></td>
1944 - <td>
1945 - <code
1946 - ><span title="typing.Dict">Dict</span
1947 - >[str,
1948 - <span title="typing.Union">Union</span
1949 - >[bool, str,
1950 - <span title="typing.Dict">Dict</span
1951 - >]]</code
1952 - >
1953 - </td>
1954 - <td>
1955 - <div class="doc-md-description">
1956 - <p>
1957 - A dictionary containing the success
1958 - status, a message, and potentially a
1959 - dictionary with indices.
1960 - </p>
1961 - </div>
1962 - </td>
1963 - </tr>
1964 - </tbody>
1965 - </table>
1966 -
1967 - <details class="quote">
1968 - <summary>
1969 - Source code in
1970 - <code>app\services\Graylog\index.py</code>
1971 - </summary>
1972 - <div class="highlight">
1973 - <table class="highlighttable">
1974 - <tr>
1975 - <td class="linenos">
1976 - <div class="linenodiv">
1977 - <pre><span></span><span class="normal"><a href="#__codelineno-0-29">29</a></span>
2335 +</code></pre></div></td></tr></table></div>
2336 + </details>
2337 + </div>
2338 +
2339 +</div>
2340 +
2341 +<div class="doc doc-object doc-function">
2342 +
2343 +
2344 +
2345 +<h3 id="app.services.Graylog.index.IndexService.collect_indices" class="doc doc-heading">
2346 +<code class="highlight language-python"><span class="n">collect_indices</span><span class="p">()</span></code>
2347 +
2348 +</h3>
2349 +
2350 +
2351 + <div class="doc doc-contents ">
2352 +
2353 + <p>Collects the indices that are managed by Graylog.</p>
2354 +
2355 + <p><strong>Returns:</strong></p>
2356 + <table>
2357 + <thead>
2358 + <tr>
2359 +<th>Name</th> <th>Type</th>
2360 + <th>Description</th>
2361 + </tr>
2362 + </thead>
2363 + <tbody>
2364 + <tr>
2365 +<td><code>dict</code></td> <td>
2366 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[bool, str, <span title="typing.Dict">Dict</span>]]</code>
2367 + </td>
2368 + <td>
2369 + <div class="doc-md-description">
2370 + <p>A dictionary containing the success status, a message, and potentially a dictionary with indices.</p>
2371 + </div>
2372 + </td>
2373 + </tr>
2374 + </tbody>
2375 + </table>
2376 +
2377 + <details class="quote">
2378 + <summary>Source code in <code>app\services\Graylog\index.py</code></summary>
2379 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-29">29</a></span>
2380 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
2381 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
2382 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
@@ -1994,12 +2396,7 @@
2396 <span class="normal"><a href="#__codelineno-0-46">46</a></span>
2397 <span class="normal"><a href="#__codelineno-0-47">47</a></span>
2398 <span class="normal"><a href="#__codelineno-0-48">48</a></span>
1997 -<span class="normal"><a href="#__codelineno-0-49">49</a></span></pre>
1998 - </div>
1999 - </td>
2000 - <td class="code">
2001 - <div>
2002 - <pre><span></span><code><a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="k">def</span> <span class="nf">collect_indices</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]]:</span>
2399 +<span class="normal"><a href="#__codelineno-0-49">49</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="k">def</span> <span class="nf">collect_indices</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]]:</span>
2400 <a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2401 <a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Collects the indices that are managed by Graylog.</span>
2402 <a id="__codelineno-0-32" name="__codelineno-0-32"></a>
@@ -2020,103 +2417,79 @@
2417 <a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">managed_indices</span><span class="p">[</span><span class="s2">&quot;index_names&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">index_names</span>
2418 <a id="__codelineno-0-48" name="__codelineno-0-48"></a>
2419 <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="n">managed_indices</span>
2023 -</code></pre>
2024 - </div>
2025 - </td>
2026 - </tr>
2027 - </table>
2028 - </div>
2029 - </details>
2030 - </div>
2031 - </div>
2032 -
2033 - <div class="doc doc-object doc-function">
2034 - <h3
2035 - id="app.services.Graylog.index.IndexService.delete_index"
2036 - class="doc doc-heading"
2037 - >
2038 - <code class="highlight language-python"
2039 - ><span class="n">delete_index</span
2040 - ><span class="p">(</span
2041 - ><span class="n">index_name</span
2042 - ><span class="p">)</span></code
2043 - >
2044 - </h3>
2045 -
2046 - <div class="doc doc-contents">
2047 - <p>Deletes the specified index from Graylog.</p>
2048 -
2049 - <p><strong>Parameters:</strong></p>
2050 - <table>
2051 - <thead>
2052 - <tr>
2053 - <th>Name</th>
2054 - <th>Type</th>
2055 - <th>Description</th>
2056 - <th>Default</th>
2057 - </tr>
2058 - </thead>
2059 - <tbody>
2060 - <tr>
2061 - <td><code>index_name</code></td>
2062 - <td>
2063 - <code>str</code>
2064 - </td>
2065 - <td>
2066 - <div class="doc-md-description">
2067 - <p>The name of the index to delete.</p>
2068 - </div>
2069 - </td>
2070 - <td>
2071 - <em>required</em>
2072 - </td>
2073 - </tr>
2074 - </tbody>
2075 - </table>
2076 -
2077 - <p><strong>Returns:</strong></p>
2078 - <table>
2079 - <thead>
2080 - <tr>
2081 - <th>Name</th>
2082 - <th>Type</th>
2083 - <th>Description</th>
2084 - </tr>
2085 - </thead>
2086 - <tbody>
2087 - <tr>
2088 - <td><code>dict</code></td>
2089 - <td>
2090 - <code
2091 - ><span title="typing.Dict">Dict</span
2092 - >[str,
2093 - <span title="typing.Union">Union</span
2094 - >[bool, str]]</code
2095 - >
2096 - </td>
2097 - <td>
2098 - <div class="doc-md-description">
2099 - <p>
2100 - A dictionary containing the
2101 - response.
2102 - </p>
2103 - </div>
2104 - </td>
2105 - </tr>
2106 - </tbody>
2107 - </table>
2108 -
2109 - <details class="quote">
2110 - <summary>
2111 - Source code in
2112 - <code>app\services\Graylog\index.py</code>
2113 - </summary>
2114 - <div class="highlight">
2115 - <table class="highlighttable">
2116 - <tr>
2117 - <td class="linenos">
2118 - <div class="linenodiv">
2119 - <pre><span></span><span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2420 +</code></pre></div></td></tr></table></div>
2421 + </details>
2422 + </div>
2423 +
2424 +</div>
2425 +
2426 +<div class="doc doc-object doc-function">
2427 +
2428 +
2429 +
2430 +<h3 id="app.services.Graylog.index.IndexService.delete_index" class="doc doc-heading">
2431 +<code class="highlight language-python"><span class="n">delete_index</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span></code>
2432 +
2433 +</h3>
2434 +
2435 +
2436 + <div class="doc doc-contents ">
2437 +
2438 + <p>Deletes the specified index from Graylog.</p>
2439 +
2440 + <p><strong>Parameters:</strong></p>
2441 + <table>
2442 + <thead>
2443 + <tr>
2444 + <th>Name</th>
2445 + <th>Type</th>
2446 + <th>Description</th>
2447 + <th>Default</th>
2448 + </tr>
2449 + </thead>
2450 + <tbody>
2451 + <tr>
2452 + <td><code>index_name</code></td>
2453 + <td>
2454 + <code>str</code>
2455 + </td>
2456 + <td>
2457 + <div class="doc-md-description">
2458 + <p>The name of the index to delete.</p>
2459 + </div>
2460 + </td>
2461 + <td>
2462 + <em>required</em>
2463 + </td>
2464 + </tr>
2465 + </tbody>
2466 + </table>
2467 +
2468 + <p><strong>Returns:</strong></p>
2469 + <table>
2470 + <thead>
2471 + <tr>
2472 +<th>Name</th> <th>Type</th>
2473 + <th>Description</th>
2474 + </tr>
2475 + </thead>
2476 + <tbody>
2477 + <tr>
2478 +<td><code>dict</code></td> <td>
2479 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[bool, str]]</code>
2480 + </td>
2481 + <td>
2482 + <div class="doc-md-description">
2483 + <p>A dictionary containing the response.</p>
2484 + </div>
2485 + </td>
2486 + </tr>
2487 + </tbody>
2488 + </table>
2489 +
2490 + <details class="quote">
2491 + <summary>Source code in <code>app\services\Graylog\index.py</code></summary>
2492 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2493 <span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
2494 <span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
2495 <span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
@@ -2149,12 +2522,7 @@
2522 <span class="normal"><a href="#__codelineno-0-117">117</a></span>
2523 <span class="normal"><a href="#__codelineno-0-118">118</a></span>
2524 <span class="normal"><a href="#__codelineno-0-119">119</a></span>
2152 -<span class="normal"><a href="#__codelineno-0-120">120</a></span></pre>
2153 - </div>
2154 - </td>
2155 - <td class="code">
2156 - <div>
2157 - <pre><span></span><code><a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="k">def</span> <span class="nf">delete_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
2525 +<span class="normal"><a href="#__codelineno-0-120">120</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="k">def</span> <span class="nf">delete_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
2526 <a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2527 <a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> Deletes the specified index from Graylog.</span>
2528 <a id="__codelineno-0-90" name="__codelineno-0-90"></a>
@@ -2188,47 +2556,89 @@
2556 <a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Failed to delete index </span><span class="si">{</span><span class="n">index_name</span><span class="si">}</span><span class="s2"> from Graylog&quot;</span><span class="p">,</span>
2557 <a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2558 <a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">}</span>
2191 -</code></pre>
2192 - </div>
2193 - </td>
2194 - </tr>
2195 - </table>
2196 - </div>
2197 - </details>
2198 - </div>
2199 - </div>
2200 - </div>
2201 - </div>
2202 - </div>
2203 - </div>
2204 - </div>
2205 - </div>
2206 -
2207 - <div class="doc doc-object doc-module">
2208 - <a id="app.services.Graylog.inputs"></a>
2209 - <div class="doc doc-contents first">
2210 - <div class="doc doc-children">
2211 - <div class="doc doc-object doc-class">
2212 - <h2 id="app.services.Graylog.inputs.InputsService" class="doc doc-heading">
2213 - <code>InputsService</code>
2214 - </h2>
2215 -
2216 - <div class="doc doc-contents">
2217 - <p>
2218 - A service class that encapsulates the logic for pulling index data
2219 - from Graylog
2220 - </p>
2221 -
2222 - <details class="quote">
2223 - <summary>
2224 - Source code in <code>app\services\Graylog\inputs.py</code>
2225 - </summary>
2226 - <div class="highlight">
2227 - <table class="highlighttable">
2228 - <tr>
2229 - <td class="linenos">
2230 - <div class="linenodiv">
2231 - <pre><span></span><span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
2559 +</code></pre></div></td></tr></table></div>
2560 + </details>
2561 + </div>
2562 +
2563 +</div>
2564 +
2565 +
2566 +
2567 + </div>
2568 +
2569 + </div>
2570 +
2571 +</div>
2572 +
2573 +
2574 +
2575 +
2576 + </div>
2577 +
2578 + </div>
2579 +
2580 +</div><h3 id="graylog-services-inputs"><span style="color:red">Graylog Services Inputs</span></h3>
2581 +<h2 id="inputsservice-class">InputsService Class</h2>
2582 +<p>The <code>inputs.py</code> file defines the <code>InputsService</code> class, which encapsulates the functionality for interacting with the Graylog input system.</p>
2583 +<h3 id="imports_2">Imports</h3>
2584 +<p>The script imports the following modules and services:</p>
2585 +<ul>
2586 +<li><code>requests</code>: A Python library for making HTTP requests.</li>
2587 +<li><code>loguru</code>: A third-party library providing a more convenient and powerful logger for Python.</li>
2588 +<li><code>typing</code>: A standard Python library for supporting type hints.</li>
2589 +<li><code>app.services.Graylog.universal.UniversalService</code>: The <code>UniversalService</code> class from the <code>app.services.Graylog.universal</code> module.</li>
2590 +</ul>
2591 +<h3 id="class-definition-inputsservice">Class Definition: InputsService</h3>
2592 +<p>The <code>InputsService</code> class encapsulates the logic for pulling input data from Graylog. It provides the following methods:</p>
2593 +<ul>
2594 +<li><code>__init__</code>: Initializes the <code>InputsService</code> by collecting Graylog details using <code>UniversalService</code>.</li>
2595 +<li><code>collect_running_inputs</code>: Collects the running inputs that are managed by Graylog.</li>
2596 +<li><code>_collect_running_inputs</code>: Core method for collecting running inputs from Graylog by making a GET request to the Graylog API endpoint <code>/api/system/inputstates</code>.</li>
2597 +<li><code>collect_configured_inputs</code>: Collects the configured inputs that are managed by Graylog.</li>
2598 +<li><code>_collect_configured_inputs</code>: Core method for collecting configured inputs from Graylog by making a GET request to the Graylog API endpoint <code>/api/system/inputs</code>.</li>
2599 +</ul>
2600 +<h3 id="error-handling_1">Error Handling</h3>
2601 +<p>The script includes error handling using try/except blocks. When an error occurs, the error message is logged using <code>loguru</code>'s <code>logger.error</code> function, and a dictionary with a failure message and success status set to False is returned.</p>
2602 +<p>The <code>InputsService</code> class follows good practices for encapsulating functionality related to Graylog's input system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.</p>
2603 +
2604 +
2605 +<div class="doc doc-object doc-module">
2606 +
2607 +
2608 +<a id="app.services.Graylog.inputs"></a>
2609 + <div class="doc doc-contents first">
2610 +
2611 +
2612 +
2613 + <div class="doc doc-children">
2614 +
2615 +
2616 +
2617 +
2618 +
2619 +
2620 +
2621 +
2622 +<div class="doc doc-object doc-class">
2623 +
2624 +
2625 +
2626 +<h2 id="app.services.Graylog.inputs.InputsService" class="doc doc-heading">
2627 + <code>InputsService</code>
2628 +
2629 +
2630 +</h2>
2631 +
2632 +
2633 + <div class="doc doc-contents ">
2634 +
2635 +
2636 + <p>A service class that encapsulates the logic for pulling index data from Graylog</p>
2637 +
2638 +
2639 + <details class="quote">
2640 + <summary>Source code in <code>app\services\Graylog\inputs.py</code></summary>
2641 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14"> 14</a></span>
2642 <span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
2643 <span class="normal"><a href="#__codelineno-0-16"> 16</a></span>
2644 <span class="normal"><a href="#__codelineno-0-17"> 17</a></span>
@@ -2352,12 +2762,7 @@
2762 <span class="normal"><a href="#__codelineno-0-135">135</a></span>
2763 <span class="normal"><a href="#__codelineno-0-136">136</a></span>
2764 <span class="normal"><a href="#__codelineno-0-137">137</a></span>
2355 -<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre>
2356 - </div>
2357 - </td>
2358 - <td class="code">
2359 - <div>
2360 - <pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">InputsService</span><span class="p">:</span>
2765 +<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">InputsService</span><span class="p">:</span>
2766 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2767 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> A service class that encapsulates the logic for pulling index data from Graylog</span>
2768 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -2482,43 +2887,38 @@
2887 <a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2888 <a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to collect configured inputs: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2889 <a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Failed to collect configured inputs&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2485 -</code></pre>
2486 - </div>
2487 - </td>
2488 - </tr>
2489 - </table>
2490 - </div>
2491 - </details>
2492 -
2493 - <div class="doc doc-children">
2494 - <div class="doc doc-object doc-function">
2495 - <h3
2496 - id="app.services.Graylog.inputs.InputsService.__init__"
2497 - class="doc doc-heading"
2498 - >
2499 - <code class="highlight language-python"
2500 - ><span class="fm">__init__</span
2501 - ><span class="p">()</span></code
2502 - >
2503 - </h3>
2504 -
2505 - <div class="doc doc-contents">
2506 - <p>
2507 - Initializes the InputsService by collecting Graylog
2508 - details.
2509 - </p>
2510 -
2511 - <details class="quote">
2512 - <summary>
2513 - Source code in
2514 - <code>app\services\Graylog\inputs.py</code>
2515 - </summary>
2516 - <div class="highlight">
2517 - <table class="highlighttable">
2518 - <tr>
2519 - <td class="linenos">
2520 - <div class="linenodiv">
2521 - <pre><span></span><span class="normal"><a href="#__codelineno-0-21">21</a></span>
2890 +</code></pre></div></td></tr></table></div>
2891 + </details>
2892 +
2893 +
2894 +
2895 + <div class="doc doc-children">
2896 +
2897 +
2898 +
2899 +
2900 +
2901 +
2902 +
2903 +
2904 +
2905 +<div class="doc doc-object doc-function">
2906 +
2907 +
2908 +
2909 +<h3 id="app.services.Graylog.inputs.InputsService.__init__" class="doc doc-heading">
2910 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">()</span></code>
2911 +
2912 +</h3>
2913 +
2914 +
2915 + <div class="doc doc-contents ">
2916 +
2917 + <p>Initializes the InputsService by collecting Graylog details.</p>
2918 +
2919 + <details class="quote">
2920 + <summary>Source code in <code>app\services\Graylog\inputs.py</code></summary>
2921 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-21">21</a></span>
2922 <span class="normal"><a href="#__codelineno-0-22">22</a></span>
2923 <span class="normal"><a href="#__codelineno-0-23">23</a></span>
2924 <span class="normal"><a href="#__codelineno-0-24">24</a></span>
@@ -2526,12 +2926,7 @@
2926 <span class="normal"><a href="#__codelineno-0-26">26</a></span>
2927 <span class="normal"><a href="#__codelineno-0-27">27</a></span>
2928 <span class="normal"><a href="#__codelineno-0-28">28</a></span>
2529 -<span class="normal"><a href="#__codelineno-0-29">29</a></span></pre>
2530 - </div>
2531 - </td>
2532 - <td class="code">
2533 - <div>
2534 - <pre><span></span><code><a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2929 +<span class="normal"><a href="#__codelineno-0-29">29</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2930 <a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2931 <a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> Initializes the InputsService by collecting Graylog details.</span>
2932 <a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -2540,82 +2935,51 @@
2935 <a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
2936 <a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
2937 <a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">&quot;Graylog&quot;</span><span class="p">)</span>
2543 -</code></pre>
2544 - </div>
2545 - </td>
2546 - </tr>
2547 - </table>
2548 - </div>
2549 - </details>
2550 - </div>
2551 - </div>
2552 -
2553 - <div class="doc doc-object doc-function">
2554 - <h3
2555 - id="app.services.Graylog.inputs.InputsService.collect_configured_inputs"
2556 - class="doc doc-heading"
2557 - >
2558 - <code class="highlight language-python"
2559 - ><span class="n">collect_configured_inputs</span
2560 - ><span class="p">()</span></code
2561 - >
2562 - </h3>
2563 -
2564 - <div class="doc doc-contents">
2565 - <p>
2566 - Collects the configured inputs that are managed by
2567 - Graylog.
2568 - </p>
2569 -
2570 - <p><strong>Returns:</strong></p>
2571 - <table>
2572 - <thead>
2573 - <tr>
2574 - <th>Name</th>
2575 - <th>Type</th>
2576 - <th>Description</th>
2577 - </tr>
2578 - </thead>
2579 - <tbody>
2580 - <tr>
2581 - <td><code>dict</code></td>
2582 - <td>
2583 - <code
2584 - ><span title="typing.Dict">Dict</span
2585 - >[str,
2586 - <span title="typing.Union">Union</span
2587 - >[bool, str,
2588 - <span title="typing.List">List</span
2589 - >[<span title="typing.Dict">Dict</span
2590 - >[str,
2591 - <span title="typing.Union">Union</span
2592 - >[str, int]]]]]</code
2593 - >
2594 - </td>
2595 - <td>
2596 - <div class="doc-md-description">
2597 - <p>
2598 - A dictionary containing the success
2599 - status, a message, and potentially a
2600 - list of configured inputs.
2601 - </p>
2602 - </div>
2603 - </td>
2604 - </tr>
2605 - </tbody>
2606 - </table>
2607 -
2608 - <details class="quote">
2609 - <summary>
2610 - Source code in
2611 - <code>app\services\Graylog\inputs.py</code>
2612 - </summary>
2613 - <div class="highlight">
2614 - <table class="highlighttable">
2615 - <tr>
2616 - <td class="linenos">
2617 - <div class="linenodiv">
2618 - <pre><span></span><span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
2938 +</code></pre></div></td></tr></table></div>
2939 + </details>
2940 + </div>
2941 +
2942 +</div>
2943 +
2944 +<div class="doc doc-object doc-function">
2945 +
2946 +
2947 +
2948 +<h3 id="app.services.Graylog.inputs.InputsService.collect_configured_inputs" class="doc doc-heading">
2949 +<code class="highlight language-python"><span class="n">collect_configured_inputs</span><span class="p">()</span></code>
2950 +
2951 +</h3>
2952 +
2953 +
2954 + <div class="doc doc-contents ">
2955 +
2956 + <p>Collects the configured inputs that are managed by Graylog.</p>
2957 +
2958 + <p><strong>Returns:</strong></p>
2959 + <table>
2960 + <thead>
2961 + <tr>
2962 +<th>Name</th> <th>Type</th>
2963 + <th>Description</th>
2964 + </tr>
2965 + </thead>
2966 + <tbody>
2967 + <tr>
2968 +<td><code>dict</code></td> <td>
2969 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[bool, str, <span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, int]]]]]</code>
2970 + </td>
2971 + <td>
2972 + <div class="doc-md-description">
2973 + <p>A dictionary containing the success status, a message, and potentially a list of configured inputs.</p>
2974 + </div>
2975 + </td>
2976 + </tr>
2977 + </tbody>
2978 + </table>
2979 +
2980 + <details class="quote">
2981 + <summary>Source code in <code>app\services\Graylog\inputs.py</code></summary>
2982 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
2983 <span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2984 <span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
2985 <span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
@@ -2634,12 +2998,7 @@
2998 <span class="normal"><a href="#__codelineno-0-102">102</a></span>
2999 <span class="normal"><a href="#__codelineno-0-103">103</a></span>
3000 <span class="normal"><a href="#__codelineno-0-104">104</a></span>
2637 -<span class="normal"><a href="#__codelineno-0-105">105</a></span></pre>
2638 - </div>
2639 - </td>
2640 - <td class="code">
2641 - <div>
2642 - <pre><span></span><code><a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span>
3001 +<span class="normal"><a href="#__codelineno-0-105">105</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span>
3002 <a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="p">,</span>
3003 <a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
3004 <a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
@@ -2659,81 +3018,51 @@
3018 <a id="__codelineno-0-103" name="__codelineno-0-103"></a>
3019 <a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">if</span> <span class="n">configured_inputs</span><span class="p">[</span><span class="s2">&quot;success&quot;</span><span class="p">]:</span>
3020 <a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="n">configured_inputs</span>
2662 -</code></pre>
2663 - </div>
2664 - </td>
2665 - </tr>
2666 - </table>
2667 - </div>
2668 - </details>
2669 - </div>
2670 - </div>
2671 -
2672 - <div class="doc doc-object doc-function">
2673 - <h3
2674 - id="app.services.Graylog.inputs.InputsService.collect_running_inputs"
2675 - class="doc doc-heading"
2676 - >
2677 - <code class="highlight language-python"
2678 - ><span class="n">collect_running_inputs</span
2679 - ><span class="p">()</span></code
2680 - >
2681 - </h3>
2682 -
2683 - <div class="doc doc-contents">
2684 - <p>
2685 - Collects the running inputs that are managed by Graylog.
2686 - </p>
2687 -
2688 - <p><strong>Returns:</strong></p>
2689 - <table>
2690 - <thead>
2691 - <tr>
2692 - <th>Name</th>
2693 - <th>Type</th>
2694 - <th>Description</th>
2695 - </tr>
2696 - </thead>
2697 - <tbody>
2698 - <tr>
2699 - <td><code>dict</code></td>
2700 - <td>
2701 - <code
2702 - ><span title="typing.Dict">Dict</span
2703 - >[str,
2704 - <span title="typing.Union">Union</span
2705 - >[bool, str,
2706 - <span title="typing.List">List</span
2707 - >[<span title="typing.Dict">Dict</span
2708 - >[str,
2709 - <span title="typing.Union">Union</span
2710 - >[str, int]]]]]</code
2711 - >
2712 - </td>
2713 - <td>
2714 - <div class="doc-md-description">
2715 - <p>
2716 - A dictionary containing the success
2717 - status, a message, and potentially a
2718 - list of running inputs.
2719 - </p>
2720 - </div>
2721 - </td>
2722 - </tr>
2723 - </tbody>
2724 - </table>
2725 -
2726 - <details class="quote">
2727 - <summary>
2728 - Source code in
2729 - <code>app\services\Graylog\inputs.py</code>
2730 - </summary>
2731 - <div class="highlight">
2732 - <table class="highlighttable">
2733 - <tr>
2734 - <td class="linenos">
2735 - <div class="linenodiv">
2736 - <pre><span></span><span class="normal"><a href="#__codelineno-0-31">31</a></span>
3021 +</code></pre></div></td></tr></table></div>
3022 + </details>
3023 + </div>
3024 +
3025 +</div>
3026 +
3027 +<div class="doc doc-object doc-function">
3028 +
3029 +
3030 +
3031 +<h3 id="app.services.Graylog.inputs.InputsService.collect_running_inputs" class="doc doc-heading">
3032 +<code class="highlight language-python"><span class="n">collect_running_inputs</span><span class="p">()</span></code>
3033 +
3034 +</h3>
3035 +
3036 +
3037 + <div class="doc doc-contents ">
3038 +
3039 + <p>Collects the running inputs that are managed by Graylog.</p>
3040 +
3041 + <p><strong>Returns:</strong></p>
3042 + <table>
3043 + <thead>
3044 + <tr>
3045 +<th>Name</th> <th>Type</th>
3046 + <th>Description</th>
3047 + </tr>
3048 + </thead>
3049 + <tbody>
3050 + <tr>
3051 +<td><code>dict</code></td> <td>
3052 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[bool, str, <span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, int]]]]]</code>
3053 + </td>
3054 + <td>
3055 + <div class="doc-md-description">
3056 + <p>A dictionary containing the success status, a message, and potentially a list of running inputs.</p>
3057 + </div>
3058 + </td>
3059 + </tr>
3060 + </tbody>
3061 + </table>
3062 +
3063 + <details class="quote">
3064 + <summary>Source code in <code>app\services\Graylog\inputs.py</code></summary>
3065 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-31">31</a></span>
3066 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
3067 <span class="normal"><a href="#__codelineno-0-33">33</a></span>
3068 <span class="normal"><a href="#__codelineno-0-34">34</a></span>
@@ -2752,12 +3081,7 @@
3081 <span class="normal"><a href="#__codelineno-0-47">47</a></span>
3082 <span class="normal"><a href="#__codelineno-0-48">48</a></span>
3083 <span class="normal"><a href="#__codelineno-0-49">49</a></span>
2755 -<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre>
2756 - </div>
2757 - </td>
2758 - <td class="code">
2759 - <div>
2760 - <pre><span></span><code><a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span>
3084 +<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span>
3085 <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="p">,</span>
3086 <a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
3087 <a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
@@ -2777,50 +3101,88 @@
3101 <a id="__codelineno-0-48" name="__codelineno-0-48"></a>
3102 <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">running_inputs</span><span class="p">[</span><span class="s2">&quot;success&quot;</span><span class="p">]:</span>
3103 <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">running_inputs</span>
2780 -</code></pre>
2781 - </div>
2782 - </td>
2783 - </tr>
2784 - </table>
2785 - </div>
2786 - </details>
2787 - </div>
2788 - </div>
2789 - </div>
2790 - </div>
2791 - </div>
2792 - </div>
2793 - </div>
2794 - </div>
2795 -
2796 - <div class="doc doc-object doc-module">
2797 - <a id="app.services.Graylog.messages"></a>
2798 - <div class="doc doc-contents first">
2799 - <div class="doc doc-children">
2800 - <div class="doc doc-object doc-class">
2801 - <h2
2802 - id="app.services.Graylog.messages.MessagesService"
2803 - class="doc doc-heading"
2804 - >
2805 - <code>MessagesService</code>
2806 - </h2>
2807 -
2808 - <div class="doc doc-contents">
2809 - <p>
2810 - A service class that encapsulates the logic for polling messages
2811 - from Graylog.
2812 - </p>
2813 -
2814 - <details class="quote">
2815 - <summary>
2816 - Source code in <code>app\services\Graylog\messages.py</code>
2817 - </summary>
2818 - <div class="highlight">
2819 - <table class="highlighttable">
2820 - <tr>
2821 - <td class="linenos">
2822 - <div class="linenodiv">
2823 - <pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
3104 +</code></pre></div></td></tr></table></div>
3105 + </details>
3106 + </div>
3107 +
3108 +</div>
3109 +
3110 +
3111 +
3112 + </div>
3113 +
3114 + </div>
3115 +
3116 +</div>
3117 +
3118 +
3119 +
3120 +
3121 + </div>
3122 +
3123 + </div>
3124 +
3125 +</div><h3 id="graylog-services-messages"><span style="color:red">Graylog Services Messages</span></h3>
3126 +<h2 id="messagesservice-class">MessagesService Class</h2>
3127 +<p>The <code>messages.py</code> file defines the <code>MessagesService</code> class, which encapsulates the functionality for interacting with the Graylog message system.</p>
3128 +<h3 id="imports_3">Imports</h3>
3129 +<p>The script imports the following modules and services:</p>
3130 +<ul>
3131 +<li><code>requests</code>: A Python library for making HTTP requests.</li>
3132 +<li><code>loguru</code>: A third-party library providing a more convenient and powerful logger for Python.</li>
3133 +<li><code>typing</code>: A standard Python library for supporting type hints.</li>
3134 +<li><code>app.services.Graylog.universal.UniversalService</code>: The <code>UniversalService</code> class from the <code>app.services.Graylog.universal</code> module.</li>
3135 +</ul>
3136 +<h3 id="class-definition-messagesservice">Class Definition: MessagesService</h3>
3137 +<p>The <code>MessagesService</code> class encapsulates the logic for polling messages from Graylog. It provides the following methods:</p>
3138 +<ul>
3139 +<li><code>__init__</code>: Initializes the <code>MessagesService</code> by collecting Graylog details using <code>UniversalService</code>.</li>
3140 +<li><code>_get_messages_from_graylog</code>: Fetches messages from Graylog for a specific page number by making a GET request to the Graylog API endpoint <code>/api/system/messages?page={page_number}</code>.</li>
3141 +<li><code>_handle_message_fetch_error</code>: Helper method for handling exceptions that occur while fetching messages.</li>
3142 +<li><code>collect_messages</code>: Collects the latest 10 messages from Graylog.</li>
3143 +</ul>
3144 +<h3 id="error-handling_2">Error Handling</h3>
3145 +<p>The script includes error handling using try/except blocks. When an error occurs while fetching messages, the <code>_handle_message_fetch_error</code> helper method is used to handle the exception.</p>
3146 +<p>The <code>MessagesService</code> class follows good practices for encapsulating functionality related to Graylog's message system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.</p>
3147 +
3148 +
3149 +<div class="doc doc-object doc-module">
3150 +
3151 +
3152 +<a id="app.services.Graylog.messages"></a>
3153 + <div class="doc doc-contents first">
3154 +
3155 +
3156 +
3157 + <div class="doc doc-children">
3158 +
3159 +
3160 +
3161 +
3162 +
3163 +
3164 +
3165 +
3166 +<div class="doc doc-object doc-class">
3167 +
3168 +
3169 +
3170 +<h2 id="app.services.Graylog.messages.MessagesService" class="doc doc-heading">
3171 + <code>MessagesService</code>
3172 +
3173 +
3174 +</h2>
3175 +
3176 +
3177 + <div class="doc doc-contents ">
3178 +
3179 +
3180 + <p>A service class that encapsulates the logic for polling messages from Graylog.</p>
3181 +
3182 +
3183 + <details class="quote">
3184 + <summary>Source code in <code>app\services\Graylog\messages.py</code></summary>
3185 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
3186 <span class="normal"><a href="#__codelineno-0-14">14</a></span>
3187 <span class="normal"><a href="#__codelineno-0-15">15</a></span>
3188 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
@@ -2887,12 +3249,7 @@
3249 <span class="normal"><a href="#__codelineno-0-77">77</a></span>
3250 <span class="normal"><a href="#__codelineno-0-78">78</a></span>
3251 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
2890 -<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre>
2891 - </div>
2892 - </td>
2893 - <td class="code">
2894 - <div>
2895 - <pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">MessagesService</span><span class="p">:</span>
3252 +<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">MessagesService</span><span class="p">:</span>
3253 <a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3254 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
3255 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -2960,78 +3317,60 @@
3317 <a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="p">}</span>
3318 <a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3319 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
2963 -</code></pre>
2964 - </div>
2965 - </td>
2966 - </tr>
2967 - </table>
2968 - </div>
2969 - </details>
2970 -
2971 - <div class="doc doc-children">
2972 - <div class="doc doc-object doc-function">
2973 - <h3
2974 - id="app.services.Graylog.messages.MessagesService.collect_messages"
2975 - class="doc doc-heading"
2976 - >
2977 - <code class="highlight language-python"
2978 - ><span class="n">collect_messages</span
2979 - ><span class="p">()</span></code
2980 - >
2981 - </h3>
2982 -
2983 - <div class="doc doc-contents">
2984 - <p>Collects the latest 10 messages from Graylog.</p>
2985 -
2986 - <p><strong>Returns:</strong></p>
2987 - <table>
2988 - <thead>
2989 - <tr>
2990 - <th>Name</th>
2991 - <th>Type</th>
2992 - <th>Description</th>
2993 - </tr>
2994 - </thead>
2995 - <tbody>
2996 - <tr>
2997 - <td><code>dict</code></td>
2998 - <td>
2999 - <code
3000 - ><span title="typing.Dict">Dict</span
3001 - >[str,
3002 - <span title="typing.Union">Union</span
3003 - >[str, bool,
3004 - <span title="typing.List">List</span
3005 - >[<span title="typing.Dict">Dict</span
3006 - >[str,
3007 - <span title="typing.Any">Any</span
3008 - >]]]]</code
3009 - >
3010 - </td>
3011 - <td>
3012 - <div class="doc-md-description">
3013 - <p>
3014 - A dictionary containing the success
3015 - status, a message, and potentially a
3016 - list of Graylog messages.
3017 - </p>
3018 - </div>
3019 - </td>
3020 - </tr>
3021 - </tbody>
3022 - </table>
3023 -
3024 - <details class="quote">
3025 - <summary>
3026 - Source code in
3027 - <code>app\services\Graylog\messages.py</code>
3028 - </summary>
3029 - <div class="highlight">
3030 - <table class="highlighttable">
3031 - <tr>
3032 - <td class="linenos">
3033 - <div class="linenodiv">
3034 - <pre><span></span><span class="normal"><a href="#__codelineno-0-44">44</a></span>
3320 +</code></pre></div></td></tr></table></div>
3321 + </details>
3322 +
3323 +
3324 +
3325 + <div class="doc doc-children">
3326 +
3327 +
3328 +
3329 +
3330 +
3331 +
3332 +
3333 +
3334 +
3335 +<div class="doc doc-object doc-function">
3336 +
3337 +
3338 +
3339 +<h3 id="app.services.Graylog.messages.MessagesService.collect_messages" class="doc doc-heading">
3340 +<code class="highlight language-python"><span class="n">collect_messages</span><span class="p">()</span></code>
3341 +
3342 +</h3>
3343 +
3344 +
3345 + <div class="doc doc-contents ">
3346 +
3347 + <p>Collects the latest 10 messages from Graylog.</p>
3348 +
3349 + <p><strong>Returns:</strong></p>
3350 + <table>
3351 + <thead>
3352 + <tr>
3353 +<th>Name</th> <th>Type</th>
3354 + <th>Description</th>
3355 + </tr>
3356 + </thead>
3357 + <tbody>
3358 + <tr>
3359 +<td><code>dict</code></td> <td>
3360 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool, <span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]]]]</code>
3361 + </td>
3362 + <td>
3363 + <div class="doc-md-description">
3364 + <p>A dictionary containing the success status, a message, and potentially a list of Graylog messages.</p>
3365 + </div>
3366 + </td>
3367 + </tr>
3368 + </tbody>
3369 + </table>
3370 +
3371 + <details class="quote">
3372 + <summary>Source code in <code>app\services\Graylog\messages.py</code></summary>
3373 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-44">44</a></span>
3374 <span class="normal"><a href="#__codelineno-0-45">45</a></span>
3375 <span class="normal"><a href="#__codelineno-0-46">46</a></span>
3376 <span class="normal"><a href="#__codelineno-0-47">47</a></span>
@@ -3067,12 +3406,7 @@
3406 <span class="normal"><a href="#__codelineno-0-77">77</a></span>
3407 <span class="normal"><a href="#__codelineno-0-78">78</a></span>
3408 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
3070 -<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre>
3071 - </div>
3072 - </td>
3073 - <td class="code">
3074 - <div>
3075 - <pre><span></span><code><a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3409 +<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3410 <a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3411 <a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Collects the latest 10 messages from Graylog.</span>
3412 <a id="__codelineno-0-47" name="__codelineno-0-47"></a>
@@ -3109,50 +3443,91 @@
3443 <a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="p">}</span>
3444 <a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3445 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
3112 -</code></pre>
3113 - </div>
3114 - </td>
3115 - </tr>
3116 - </table>
3117 - </div>
3118 - </details>
3119 - </div>
3120 - </div>
3121 - </div>
3122 - </div>
3123 - </div>
3124 - </div>
3125 - </div>
3126 - </div>
3127 -
3128 - <div class="doc doc-object doc-module">
3129 - <a id="app.services.Graylog.metrics"></a>
3130 - <div class="doc doc-contents first">
3131 - <div class="doc doc-children">
3132 - <div class="doc doc-object doc-class">
3133 - <h2
3134 - id="app.services.Graylog.metrics.MetricsService"
3135 - class="doc doc-heading"
3136 - >
3137 - <code>MetricsService</code>
3138 - </h2>
3139 -
3140 - <div class="doc doc-contents">
3141 - <p>
3142 - A service class that encapsulates the logic for pulling metrics from
3143 - Graylog.
3144 - </p>
3145 -
3146 - <details class="quote">
3147 - <summary>
3148 - Source code in <code>app\services\Graylog\metrics.py</code>
3149 - </summary>
3150 - <div class="highlight">
3151 - <table class="highlighttable">
3152 - <tr>
3153 - <td class="linenos">
3154 - <div class="linenodiv">
3155 - <pre><span></span><span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
3446 +</code></pre></div></td></tr></table></div>
3447 + </details>
3448 + </div>
3449 +
3450 +</div>
3451 +
3452 +
3453 +
3454 + </div>
3455 +
3456 + </div>
3457 +
3458 +</div>
3459 +
3460 +
3461 +
3462 +
3463 + </div>
3464 +
3465 + </div>
3466 +
3467 +</div><h3 id="graylog-services-metrics"><span style="color:red">Graylog Services Metrics</span></h3>
3468 +<h2 id="metricsservice-class">MetricsService Class</h2>
3469 +<p>The <code>metrics.py</code> file defines the <code>MetricsService</code> class, which encapsulates the functionality for interacting with the Graylog metrics system.</p>
3470 +<h3 id="imports_4">Imports</h3>
3471 +<p>The script imports the following modules and services:</p>
3472 +<ul>
3473 +<li><code>requests</code>: A Python library for making HTTP requests.</li>
3474 +<li><code>loguru</code>: A third-party library providing a more convenient and powerful logger for Python.</li>
3475 +<li><code>typing</code>: A standard Python library for supporting type hints.</li>
3476 +<li><code>app.services.Graylog.universal.UniversalService</code>: The <code>UniversalService</code> class from the <code>app.services.Graylog.universal</code> module.</li>
3477 +</ul>
3478 +<h3 id="class-definition-metricsservice">Class Definition: MetricsService</h3>
3479 +<p>The <code>MetricsService</code> class encapsulates the logic for polling metrics from Graylog. It provides the following methods:</p>
3480 +<ul>
3481 +<li><code>__init__</code>: Initializes the <code>MetricsService</code> by collecting Graylog details using <code>UniversalService</code>.</li>
3482 +<li><code>collect_uncommitted_journal_size</code>: Collects the journal size of uncommitted messages from Graylog.</li>
3483 +<li><code>_collect_metrics_uncommitted_journal_size</code>: Fetches the journal size of uncommitted messages from Graylog.</li>
3484 +<li><code>collect_throughput_metrics</code>: Collects various Graylog metrics related to throughput.</li>
3485 +<li><code>_collect_metrics_throughput_usage</code>: Fetches throughput usage from Graylog.</li>
3486 +<li><code>_make_throughput_api_call</code>: Helper method for making the actual API call to retrieve the throughput metrics.</li>
3487 +<li><code>_parse_throughput_metrics</code>: Helper method for parsing the returned throughput metrics.</li>
3488 +</ul>
3489 +<h3 id="error-handling_3">Error Handling</h3>
3490 +<p>The script includes error handling using try/except blocks. When an error occurs, the error message is logged using loguru's <code>logger.error</code> function, and a dictionary with a failure message and success status set to False is returned.</p>
3491 +<p>The <code>MetricsService</code> class follows good practices for encapsulating functionality related to Graylog's metrics system. Each method is well-documented with a docstring that describes its purpose, the arguments it accepts (if any), and what it returns.</p>
3492 +
3493 +
3494 +<div class="doc doc-object doc-module">
3495 +
3496 +
3497 +<a id="app.services.Graylog.metrics"></a>
3498 + <div class="doc doc-contents first">
3499 +
3500 +
3501 +
3502 + <div class="doc doc-children">
3503 +
3504 +
3505 +
3506 +
3507 +
3508 +
3509 +
3510 +
3511 +<div class="doc doc-object doc-class">
3512 +
3513 +
3514 +
3515 +<h2 id="app.services.Graylog.metrics.MetricsService" class="doc doc-heading">
3516 + <code>MetricsService</code>
3517 +
3518 +
3519 +</h2>
3520 +
3521 +
3522 + <div class="doc doc-contents ">
3523 +
3524 +
3525 + <p>A service class that encapsulates the logic for pulling metrics from Graylog.</p>
3526 +
3527 +
3528 + <details class="quote">
3529 + <summary>Source code in <code>app\services\Graylog\metrics.py</code></summary>
3530 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15"> 15</a></span>
3531 <span class="normal"><a href="#__codelineno-0-16"> 16</a></span>
3532 <span class="normal"><a href="#__codelineno-0-17"> 17</a></span>
3533 <span class="normal"><a href="#__codelineno-0-18"> 18</a></span>
@@ -3381,12 +3756,7 @@
3756 <span class="normal"><a href="#__codelineno-0-241">241</a></span>
3757 <span class="normal"><a href="#__codelineno-0-242">242</a></span>
3758 <span class="normal"><a href="#__codelineno-0-243">243</a></span>
3384 -<span class="normal"><a href="#__codelineno-0-244">244</a></span></pre>
3385 - </div>
3386 - </td>
3387 - <td class="code">
3388 - <div>
3389 - <pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">class</span> <span class="nc">MetricsService</span><span class="p">:</span>
3759 +<span class="normal"><a href="#__codelineno-0-244">244</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">class</span> <span class="nc">MetricsService</span><span class="p">:</span>
3760 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3761 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> A service class that encapsulates the logic for pulling metrics from Graylog.</span>
3762 <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -3616,40 +3986,38 @@
3986 <a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3987 <a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="s2">&quot;throughput_metrics&quot;</span><span class="p">:</span> <span class="n">throughput_metrics_list</span><span class="p">,</span>
3988 <a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="p">}</span>
3619 -</code></pre>
3620 - </div>
3621 - </td>
3622 - </tr>
3623 - </table>
3624 - </div>
3625 - </details>
3626 -
3627 - <div class="doc doc-children">
3628 - <div class="doc doc-object doc-function">
3629 - <h3
3630 - id="app.services.Graylog.metrics.MetricsService.__init__"
3631 - class="doc doc-heading"
3632 - >
3633 - <code class="highlight language-python"
3634 - ><span class="fm">__init__</span
3635 - ><span class="p">()</span></code
3636 - >
3637 - </h3>
3638 -
3639 - <div class="doc doc-contents">
3640 - <p>Initializes the MetricsService with Graylog details.</p>
3641 -
3642 - <details class="quote">
3643 - <summary>
3644 - Source code in
3645 - <code>app\services\Graylog\metrics.py</code>
3646 - </summary>
3647 - <div class="highlight">
3648 - <table class="highlighttable">
3649 - <tr>
3650 - <td class="linenos">
3651 - <div class="linenodiv">
3652 - <pre><span></span><span class="normal"><a href="#__codelineno-0-32">32</a></span>
3989 +</code></pre></div></td></tr></table></div>
3990 + </details>
3991 +
3992 +
3993 +
3994 + <div class="doc doc-children">
3995 +
3996 +
3997 +
3998 +
3999 +
4000 +
4001 +
4002 +
4003 +
4004 +<div class="doc doc-object doc-function">
4005 +
4006 +
4007 +
4008 +<h3 id="app.services.Graylog.metrics.MetricsService.__init__" class="doc doc-heading">
4009 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">()</span></code>
4010 +
4011 +</h3>
4012 +
4013 +
4014 + <div class="doc doc-contents ">
4015 +
4016 + <p>Initializes the MetricsService with Graylog details.</p>
4017 +
4018 + <details class="quote">
4019 + <summary>Source code in <code>app\services\Graylog\metrics.py</code></summary>
4020 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-32">32</a></span>
4021 <span class="normal"><a href="#__codelineno-0-33">33</a></span>
4022 <span class="normal"><a href="#__codelineno-0-34">34</a></span>
4023 <span class="normal"><a href="#__codelineno-0-35">35</a></span>
@@ -3657,12 +4025,7 @@
4025 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
4026 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
4027 <span class="normal"><a href="#__codelineno-0-39">39</a></span>
3660 -<span class="normal"><a href="#__codelineno-0-40">40</a></span></pre>
3661 - </div>
3662 - </td>
3663 - <td class="code">
3664 - <div>
3665 - <pre><span></span><code><a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4028 +<span class="normal"><a href="#__codelineno-0-40">40</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
4029 <a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4030 <a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> Initializes the MetricsService with Graylog details.</span>
4031 <a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -3671,83 +4034,58 @@
4034 <a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
4035 <a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
4036 <a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">&quot;Graylog&quot;</span><span class="p">)</span>
3674 -</code></pre>
3675 - </div>
3676 - </td>
3677 - </tr>
3678 - </table>
3679 - </div>
3680 - </details>
3681 - </div>
3682 - </div>
3683 -
3684 - <div class="doc doc-object doc-function">
3685 - <h3
3686 - id="app.services.Graylog.metrics.MetricsService.collect_throughput_metrics"
3687 - class="doc doc-heading"
3688 - >
3689 - <code class="highlight language-python"
3690 - ><span class="n">collect_throughput_metrics</span
3691 - ><span class="p">()</span></code
3692 - >
3693 - </h3>
3694 -
3695 - <div class="doc doc-contents">
3696 - <p>
3697 - Collects the following Graylog Metrics: - Input Usage -
3698 - Output Usage - Processor Usage - Input 1 Seconds Rate -
3699 - Output 1 Seconds Rate - Total Input - Total Output
3700 - </p>
3701 -
3702 - <p><strong>Returns:</strong></p>
3703 - <table>
3704 - <thead>
3705 - <tr>
3706 - <th>Name</th>
3707 - <th>Type</th>
3708 - <th>Description</th>
3709 - </tr>
3710 - </thead>
3711 - <tbody>
3712 - <tr>
3713 - <td><code>dict</code></td>
3714 - <td>
3715 - <code
3716 - ><span title="typing.Dict">Dict</span
3717 - >[str,
3718 - <span title="typing.Union">Union</span
3719 - >[str, bool,
3720 - <span title="typing.List">List</span
3721 - >[<span title="typing.Dict">Dict</span
3722 - >[str,
3723 - <span title="typing.Any">Any</span
3724 - >]]]]</code
3725 - >
3726 - </td>
3727 - <td>
3728 - <div class="doc-md-description">
3729 - <p>
3730 - A dictionary containing the success
3731 - status, a message, and the list of
3732 - throughput metrics.
3733 - </p>
3734 - </div>
3735 - </td>
3736 - </tr>
3737 - </tbody>
3738 - </table>
3739 -
3740 - <details class="quote">
3741 - <summary>
3742 - Source code in
3743 - <code>app\services\Graylog\metrics.py</code>
3744 - </summary>
3745 - <div class="highlight">
3746 - <table class="highlighttable">
3747 - <tr>
3748 - <td class="linenos">
3749 - <div class="linenodiv">
3750 - <pre><span></span><span class="normal"><a href="#__codelineno-0-66">66</a></span>
4037 +</code></pre></div></td></tr></table></div>
4038 + </details>
4039 + </div>
4040 +
4041 +</div>
4042 +
4043 +<div class="doc doc-object doc-function">
4044 +
4045 +
4046 +
4047 +<h3 id="app.services.Graylog.metrics.MetricsService.collect_throughput_metrics" class="doc doc-heading">
4048 +<code class="highlight language-python"><span class="n">collect_throughput_metrics</span><span class="p">()</span></code>
4049 +
4050 +</h3>
4051 +
4052 +
4053 + <div class="doc doc-contents ">
4054 +
4055 + <p>Collects the following Graylog Metrics:
4056 +- Input Usage
4057 +- Output Usage
4058 +- Processor Usage
4059 +- Input 1 Seconds Rate
4060 +- Output 1 Seconds Rate
4061 +- Total Input
4062 +- Total Output</p>
4063 +
4064 + <p><strong>Returns:</strong></p>
4065 + <table>
4066 + <thead>
4067 + <tr>
4068 +<th>Name</th> <th>Type</th>
4069 + <th>Description</th>
4070 + </tr>
4071 + </thead>
4072 + <tbody>
4073 + <tr>
4074 +<td><code>dict</code></td> <td>
4075 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool, <span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]]]]</code>
4076 + </td>
4077 + <td>
4078 + <div class="doc-md-description">
4079 + <p>A dictionary containing the success status, a message, and the list of throughput metrics.</p>
4080 + </div>
4081 + </td>
4082 + </tr>
4083 + </tbody>
4084 + </table>
4085 +
4086 + <details class="quote">
4087 + <summary>Source code in <code>app\services\Graylog\metrics.py</code></summary>
4088 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-66">66</a></span>
4089 <span class="normal"><a href="#__codelineno-0-67">67</a></span>
4090 <span class="normal"><a href="#__codelineno-0-68">68</a></span>
4091 <span class="normal"><a href="#__codelineno-0-69">69</a></span>
@@ -3778,12 +4116,7 @@
4116 <span class="normal"><a href="#__codelineno-0-94">94</a></span>
4117 <span class="normal"><a href="#__codelineno-0-95">95</a></span>
4118 <span class="normal"><a href="#__codelineno-0-96">96</a></span>
3781 -<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre>
3782 - </div>
3783 - </td>
3784 - <td class="code">
3785 - <div>
3786 - <pre><span></span><code><a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span>
4119 +<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span>
4120 <a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="bp">self</span><span class="p">,</span>
4121 <a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
4122 <a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
@@ -3815,77 +4148,51 @@
4148 <a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">throughput_usage</span><span class="p">[</span><span class="s2">&quot;success&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
4149 <a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
4150 <a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3818 -</code></pre>
3819 - </div>
3820 - </td>
3821 - </tr>
3822 - </table>
3823 - </div>
3824 - </details>
3825 - </div>
3826 - </div>
3827 -
3828 - <div class="doc doc-object doc-function">
3829 - <h3
3830 - id="app.services.Graylog.metrics.MetricsService.collect_uncommitted_journal_size"
3831 - class="doc doc-heading"
3832 - >
3833 - <code class="highlight language-python"
3834 - ><span class="n">collect_uncommitted_journal_size</span
3835 - ><span class="p">()</span></code
3836 - >
3837 - </h3>
3838 -
3839 - <div class="doc doc-contents">
3840 - <p>
3841 - Collects the journal size of uncommitted messages from
3842 - Graylog.
3843 - </p>
3844 -
3845 - <p><strong>Returns:</strong></p>
3846 - <table>
3847 - <thead>
3848 - <tr>
3849 - <th>Name</th>
3850 - <th>Type</th>
3851 - <th>Description</th>
3852 - </tr>
3853 - </thead>
3854 - <tbody>
3855 - <tr>
3856 - <td><code>dict</code></td>
3857 - <td>
3858 - <code
3859 - ><span title="typing.Dict">Dict</span
3860 - >[str,
3861 - <span title="typing.Union">Union</span
3862 - >[str, bool, int]]</code
3863 - >
3864 - </td>
3865 - <td>
3866 - <div class="doc-md-description">
3867 - <p>
3868 - A dictionary containing the success
3869 - status, a message, and the size of
3870 - uncommitted journal entries.
3871 - </p>
3872 - </div>
3873 - </td>
3874 - </tr>
3875 - </tbody>
3876 - </table>
3877 -
3878 - <details class="quote">
3879 - <summary>
3880 - Source code in
3881 - <code>app\services\Graylog\metrics.py</code>
3882 - </summary>
3883 - <div class="highlight">
3884 - <table class="highlighttable">
3885 - <tr>
3886 - <td class="linenos">
3887 - <div class="linenodiv">
3888 - <pre><span></span><span class="normal"><a href="#__codelineno-0-42">42</a></span>
4151 +</code></pre></div></td></tr></table></div>
4152 + </details>
4153 + </div>
4154 +
4155 +</div>
4156 +
4157 +<div class="doc doc-object doc-function">
4158 +
4159 +
4160 +
4161 +<h3 id="app.services.Graylog.metrics.MetricsService.collect_uncommitted_journal_size" class="doc doc-heading">
4162 +<code class="highlight language-python"><span class="n">collect_uncommitted_journal_size</span><span class="p">()</span></code>
4163 +
4164 +</h3>
4165 +
4166 +
4167 + <div class="doc doc-contents ">
4168 +
4169 + <p>Collects the journal size of uncommitted messages from Graylog.</p>
4170 +
4171 + <p><strong>Returns:</strong></p>
4172 + <table>
4173 + <thead>
4174 + <tr>
4175 +<th>Name</th> <th>Type</th>
4176 + <th>Description</th>
4177 + </tr>
4178 + </thead>
4179 + <tbody>
4180 + <tr>
4181 +<td><code>dict</code></td> <td>
4182 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool, int]]</code>
4183 + </td>
4184 + <td>
4185 + <div class="doc-md-description">
4186 + <p>A dictionary containing the success status, a message, and the size of uncommitted journal entries.</p>
4187 + </div>
4188 + </td>
4189 + </tr>
4190 + </tbody>
4191 + </table>
4192 +
4193 + <details class="quote">
4194 + <summary>Source code in <code>app\services\Graylog\metrics.py</code></summary>
4195 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-42">42</a></span>
4196 <span class="normal"><a href="#__codelineno-0-43">43</a></span>
4197 <span class="normal"><a href="#__codelineno-0-44">44</a></span>
4198 <span class="normal"><a href="#__codelineno-0-45">45</a></span>
@@ -3907,12 +4214,7 @@
4214 <span class="normal"><a href="#__codelineno-0-61">61</a></span>
4215 <span class="normal"><a href="#__codelineno-0-62">62</a></span>
4216 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
3910 -<span class="normal"><a href="#__codelineno-0-64">64</a></span></pre>
3911 - </div>
3912 - </td>
3913 - <td class="code">
3914 - <div>
3915 - <pre><span></span><code><a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">collect_uncommitted_journal_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span>
4217 +<span class="normal"><a href="#__codelineno-0-64">64</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">collect_uncommitted_journal_size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span>
4218 <a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4219 <a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Collects the journal size of uncommitted messages from Graylog.</span>
4220 <a id="__codelineno-0-45" name="__codelineno-0-45"></a>
@@ -3935,50 +4237,67 @@
4237 <a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">if</span> <span class="n">journal_size</span><span class="p">[</span><span class="s2">&quot;success&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
4238 <a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">return</span> <span class="n">journal_size</span>
4239 <a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">return</span> <span class="n">journal_size</span>
3938 -</code></pre>
3939 - </div>
3940 - </td>
3941 - </tr>
3942 - </table>
3943 - </div>
3944 - </details>
3945 - </div>
3946 - </div>
3947 - </div>
3948 - </div>
3949 - </div>
3950 - </div>
3951 - </div>
3952 - </div>
3953 -
3954 - <div class="doc doc-object doc-module">
3955 - <a id="app.services.Graylog.universal"></a>
3956 - <div class="doc doc-contents first">
3957 - <div class="doc doc-children">
3958 - <div class="doc doc-object doc-class">
3959 - <h2
3960 - id="app.services.Graylog.universal.UniversalService"
3961 - class="doc doc-heading"
3962 - >
3963 - <code>UniversalService</code>
3964 - </h2>
3965 -
3966 - <div class="doc doc-contents">
3967 - <p>
3968 - A service class that encapsulates the logic for polling messages
3969 - from Graylog.
3970 - </p>
3971 -
3972 - <details class="quote">
3973 - <summary>
3974 - Source code in <code>app\services\Graylog\universal.py</code>
3975 - </summary>
3976 - <div class="highlight">
3977 - <table class="highlighttable">
3978 - <tr>
3979 - <td class="linenos">
3980 - <div class="linenodiv">
3981 - <pre><span></span><span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
4240 +</code></pre></div></td></tr></table></div>
4241 + </details>
4242 + </div>
4243 +
4244 +</div>
4245 +
4246 +
4247 +
4248 + </div>
4249 +
4250 + </div>
4251 +
4252 +</div>
4253 +
4254 +
4255 +
4256 +
4257 + </div>
4258 +
4259 + </div>
4260 +
4261 +</div><h3 id="graylog-services-universal"><span style="color:red">Graylog Services Universal</span></h3>
4262 +
4263 +
4264 +<div class="doc doc-object doc-module">
4265 +
4266 +
4267 +<a id="app.services.Graylog.universal"></a>
4268 + <div class="doc doc-contents first">
4269 +
4270 +
4271 +
4272 + <div class="doc doc-children">
4273 +
4274 +
4275 +
4276 +
4277 +
4278 +
4279 +
4280 +
4281 +<div class="doc doc-object doc-class">
4282 +
4283 +
4284 +
4285 +<h2 id="app.services.Graylog.universal.UniversalService" class="doc doc-heading">
4286 + <code>UniversalService</code>
4287 +
4288 +
4289 +</h2>
4290 +
4291 +
4292 + <div class="doc doc-contents ">
4293 +
4294 +
4295 + <p>A service class that encapsulates the logic for polling messages from Graylog.</p>
4296 +
4297 +
4298 + <details class="quote">
4299 + <summary>Source code in <code>app\services\Graylog\universal.py</code></summary>
4300 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
4301 <span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
4302 <span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
4303 <span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
@@ -4006,12 +4325,7 @@
4325 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
4326 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
4327 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
4009 -<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre>
4010 - </div>
4011 - </td>
4012 - <td class="code">
4013 - <div>
4014 - <pre><span></span><code><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
4328 +<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
4329 <a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
4330 <a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
4331 <a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -4040,99 +4354,88 @@
4354 <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">)</span>
4355 <a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">else</span><span class="p">:</span>
4356 <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4043 -</code></pre>
4044 - </div>
4045 - </td>
4046 - </tr>
4047 - </table>
4048 - </div>
4049 - </details>
4050 -
4051 - <div class="doc doc-children">
4052 - <div class="doc doc-object doc-function">
4053 - <h3
4054 - id="app.services.Graylog.universal.UniversalService.collect_graylog_details"
4055 - class="doc doc-heading"
4056 - >
4057 - <code class="highlight language-python"
4058 - ><span class="n">collect_graylog_details</span
4059 - ><span class="p">(</span
4060 - ><span class="n">connector_name</span
4061 - ><span class="p">)</span></code
4062 - >
4063 - </h3>
4064 -
4065 - <div class="doc doc-contents">
4066 - <p>Collects the details of the Graylog connector.</p>
4067 -
4068 - <p><strong>Parameters:</strong></p>
4069 - <table>
4070 - <thead>
4071 - <tr>
4072 - <th>Name</th>
4073 - <th>Type</th>
4074 - <th>Description</th>
4075 - <th>Default</th>
4076 - </tr>
4077 - </thead>
4078 - <tbody>
4079 - <tr>
4080 - <td><code>connector_name</code></td>
4081 - <td>
4082 - <code>str</code>
4083 - </td>
4084 - <td>
4085 - <div class="doc-md-description">
4086 - <p>
4087 - The name of the Graylog connector.
4088 - </p>
4089 - </div>
4090 - </td>
4091 - <td>
4092 - <em>required</em>
4093 - </td>
4094 - </tr>
4095 - </tbody>
4096 - </table>
4097 -
4098 - <p><strong>Returns:</strong></p>
4099 - <table>
4100 - <thead>
4101 - <tr>
4102 - <th>Name</th>
4103 - <th>Type</th>
4104 - <th>Description</th>
4105 - </tr>
4106 - </thead>
4107 - <tbody>
4108 - <tr>
4109 - <td><code>tuple</code></td>
4110 - <td>
4111 - <code>tuple</code>
4112 - </td>
4113 - <td>
4114 - <div class="doc-md-description">
4115 - <p>
4116 - A tuple containing the connection
4117 - URL, username, and password.
4118 - </p>
4119 - </div>
4120 - </td>
4121 - </tr>
4122 - </tbody>
4123 - </table>
4124 -
4125 - <details class="quote">
4126 - <summary>
4127 - Source code in
4128 - <code>app\services\Graylog\universal.py</code>
4129 - </summary>
4130 - <div class="highlight">
4131 - <table class="highlighttable">
4132 - <tr>
4133 - <td class="linenos">
4134 - <div class="linenodiv">
4135 - <pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>

This file is too large to show in full.

backend/site/sitemap.xml.gz
Binary files a/backend/site/sitemap.xml.gz and b/backend/site/sitemap.xml.gz differ