1 import logging
2 import logging.handlers
3 import os
4 import sys
5
6 import pyagentx
7
8 import pcs.utils
9 from pcs.snmp import settings
10 from pcs.snmp.updaters.v1 import ClusterPcsV1Updater
11
12 logger = logging.getLogger("pcs.snmp")
13 logger.addHandler(logging.NullHandler())
14
15
16 def is_debug():
17 debug = os.environ.get("PCS_SNMP_AGENT_DEBUG", "")
18 return debug.lower() in ["true", "on", "1"]
19
20
21 def get_update_interval():
22 interval = os.environ.get("PCS_SNMP_AGENT_UPDATE_INTERVAL")
23 if not interval:
24 return settings.DEFAULT_UPDATE_INTERVAL
25
26 def _log_invalid_value(_value):
27 logger.warning(
28 "Invalid update interval value: '%s' is not >= 1.0", str(_value)
29 )
30 logger.debug(
31 "Using default update interval: %s",
32 str(settings.DEFAULT_UPDATE_INTERVAL),
33 )
34
35 try:
36 interval = float(interval)
37 except ValueError:
38 _log_invalid_value(interval)
39 return settings.DEFAULT_UPDATE_INTERVAL
40 if interval <= 1.0:
41 _log_invalid_value(interval)
42 return settings.DEFAULT_UPDATE_INTERVAL
43 return interval
44
45
46 def setup_logging(debug=False):
47 level = logging.INFO
48 if debug:
49 level = logging.DEBUG
50 # this is required to enable debug also in the ruby code
51 # key '--debug' has to be added
52 pcs.utils.pcs_options["--debug"] = debug
53 formatter = logging.Formatter(
54 "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
55 )
56 handler = logging.handlers.WatchedFileHandler(
57 settings.LOG_FILE, encoding="utf8"
58 )
59 handler.setLevel(level)
60 handler.setFormatter(formatter)
61 for logger_name in ["pyagentx", "pcs"]:
62 logger_instance = logging.getLogger(logger_name)
|
CID (unavailable; MK=2140019f2b4525672026c2a68e123fc5) (#1 of 1): Excessive log level (SIGMA.debug_logging_enabled): |
|
(1) Event Sigma main event: |
The Python application has been configured to create excessive logs using a `DEBUG` log level. Excessive logging can expose sensitive information in log files. |
|
(2) Event remediation: |
The log level of a production Python application should be set to `ERROR`, `WARN`, or `INFO`, instead of `DEBUG`. |
63 logger_instance.setLevel(level)
64 logger_instance.addHandler(handler)
65
66
67 class PcsAgent(pyagentx.Agent):
68 def setup(self):
69 update_interval = get_update_interval()
70 logger.info("Update interval set to: %s", str(update_interval))
71 self.register(
72 settings.PCS_OID + ".1",
73 ClusterPcsV1Updater,
74 freq=update_interval,
75 )
76
77
78 def main():
79 setup_logging(is_debug())
80 try:
81 agent = PcsAgent()
82 agent.start()
83 except Exception as e:
84 print("Unhandled exception: {0}".format(str(e)))
85 agent.stop()
86 sys.exit(1)
87 except KeyboardInterrupt:
88 agent.stop()
89