Skip to content

Commit 6f9f222

Browse files
committed
Better logging, less logs by default; improved netflowwriter robustness when reading from named pipe
1 parent d1066c2 commit 6f9f222

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

dbutils.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, register_adapter
1212
from psycopg2.extras import Json
1313

14-
logging.basicConfig(format='%(asctime)s | %(levelname)s | %(message)s',
15-
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)
14+
IS_DEBUG = os.environ.get('DEBUG', 'false') in ['true', 'yes', '1']
15+
logging.basicConfig(format='%(asctime)s.%(msecs)03d | %(levelname)s | %(message)s',
16+
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG if IS_DEBUG else logging.INFO)
1617
logging.addLevelName(logging.DEBUG, color("DBG", 7))
1718
logging.addLevelName(logging.INFO, "INF")
1819
logging.addLevelName(logging.WARNING, color('WRN', fg='red'))
1920
logging.addLevelName(logging.ERROR, color('ERR', bg='red'))
20-
log = logging.getLogger("{}.{}".format(__name__, "base"))
21+
log = logging.getLogger("{}.{}".format(__name__, "dbutils"))
2122

2223

2324
db_pool = None

netflowbot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
logging.addLevelName(logging.INFO, "INF")
2323
logging.addLevelName(logging.WARNING, color('WRN', fg='red'))
2424
logging.addLevelName(logging.ERROR, color('ERR', bg='red'))
25-
log = logging.getLogger("{}.{}".format(__name__, "base"))
25+
log = logging.getLogger("{}.{}".format(__name__, "bot"))
2626

2727

2828
NETFLOW_AGGREGATION_INTERVALS = [

netflowcollector.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
# disable DEBUG logging on NetFlow collector library:
2323
logging.getLogger('pynetflow.main').setLevel(logging.INFO)
2424

25-
25+
IS_DEBUG = os.environ.get('DEBUG', 'false') in ['true', 'yes', '1']
2626
logging.basicConfig(format='%(asctime)s.%(msecs)03d | %(levelname)s | %(message)s',
27-
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)
27+
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG if IS_DEBUG else logging.INFO)
2828
logging.addLevelName(logging.DEBUG, color("DBG", 7))
2929
logging.addLevelName(logging.INFO, "INF")
3030
logging.addLevelName(logging.WARNING, color('WRN', fg='red'))
3131
logging.addLevelName(logging.ERROR, color('ERR', bg='red'))
32-
log = logging.getLogger("{}.{}".format(__name__, "base"))
32+
log = logging.getLogger("{}.{}".format(__name__, "collector"))
3333

3434

3535
def process_netflow(netflow_port, named_pipe_filename):

netflowwriter.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@
1616
from dbutils import migrate_if_needed, get_db_cursor, DB_PREFIX
1717

1818

19+
IS_DEBUG = os.environ.get('DEBUG', 'false') in ['true', 'yes', '1']
1920
logging.basicConfig(format='%(asctime)s.%(msecs)03d | %(levelname)s | %(message)s',
20-
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)
21+
datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG if IS_DEBUG else logging.INFO)
2122
logging.addLevelName(logging.DEBUG, color("DBG", 7))
2223
logging.addLevelName(logging.INFO, "INF")
2324
logging.addLevelName(logging.WARNING, color('WRN', fg='red'))
2425
logging.addLevelName(logging.ERROR, color('ERR', bg='red'))
25-
log = logging.getLogger("{}.{}".format(__name__, "base"))
26+
log = logging.getLogger("{}.{}".format(__name__, "writer"))
2627

2728

2829
def process_named_pipe(named_pipe_filename):
@@ -40,7 +41,10 @@ def process_named_pipe(named_pipe_filename):
4041
log.info("Named pipe closed")
4142
break
4243

43-
write_record(json.loads(line))
44+
try:
45+
write_record(json.loads(line))
46+
except Exception as ex:
47+
log.exception("Error writing line, skipping...")
4448

4549

4650
def write_record(j):
@@ -72,7 +76,7 @@ def write_record(j):
7276
with get_db_cursor() as c:
7377
# first save the flow record:
7478
ts = j['ts']
75-
log.info(f"Received record [{j['seq']}]: {datetime.utcfromtimestamp(ts)} from {j['client']}")
79+
log.debug(f"Received record [{j['seq']}]: {datetime.utcfromtimestamp(ts)} from {j['client']}")
7680
c.execute(f"INSERT INTO {DB_PREFIX}records (ts, client_ip) VALUES (%s, %s) RETURNING seq;", (ts, j['client'],))
7781
record_db_seq = c.fetchone()[0]
7882

0 commit comments

Comments
 (0)