DEV Community

Dmitry Romanoff
Dmitry Romanoff

Posted on • Edited on

How to parse Azure PostgreSQL Server log files using AWK?

AWK is a text-processing utility on GNU/Linux. It is very powerful and uses a simple programming language. It can solve complex text processing tasks with a few lines of code.

This post demonstrates how to parse Azurer PostgreSQL Server log files using AWK.

How to list “connection authorized” text pattern occurrences in the hour:minute db_user format?

grep "connection authorized" postgresql-2021-12-09_100000.log | awk ' { printf("%s %s\n", substr($2, 1, 5), substr($6, index($6,"user=")+5, index($6, "database=")-6)); } ' 10:59 db_user_1 10:59 db_user_2 10:59 db_user_1 10:59 db_user_2 10:59 db_user_2 
Enter fullscreen mode Exit fullscreen mode

How to list top DB users by “connection authorized” text pattern occurrences sorted in descending order?

grep "connection authorized" postgresql-2021-12-09_100000.log | awk ' { printf("%s %s\n", substr($2, 1, 5), substr($6, index($6,"user=")+5, index($6, "database=")-6)); } ' | awk '{count[$2]++} END {for (word in count) print word, count[word]}' | sort -k 2,2 -n -r db_user_1 1821 db_user_2 196 db_user_3 136 db_user_4 136 db_user_5 130 
Enter fullscreen mode Exit fullscreen mode

How to list the distribution of “connection authorized” text pattern occurrences per hour:minute (HH24:MI) sorted in descending order by the number of occurrences?

grep "connection authorized" postgresql-2021-12-09_100000.log | awk ' { printf("%s %s\n", substr($2, 1, 5), substr($6, index($6,"user=")+5, index($6, "database=")-6)); } ' | awk '{count[$1]++} END {for (word in count) print word, count[word]}' | sort -k 2,2 -n -r 10:53 644 10:23 509 10:29 502 10:22 479 10:52 463 
Enter fullscreen mode Exit fullscreen mode

How to list the distribution of “connection authorized” text pattern occurrences per hour:minute:second (HH24:MI:SS) sorted in descending order by the number of occurrences?

grep "connection authorized" postgresql-2021-12-09_100000.log | awk ' { printf("%s,%s\n", substr($2, 1, 7), $6) } ' 10:29:44 90 10:28:15 67 10:35:02 61 10:05:51 57 10:30:36 56 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)