{"id":18420,"date":"2021-03-15T11:19:00","date_gmt":"2021-03-15T10:19:00","guid":{"rendered":"https:\/\/www.sysbus.eu\/?p=18420"},"modified":"2021-03-09T10:26:34","modified_gmt":"2021-03-09T09:26:34","slug":"analyse-von-log-files-bei-postgresql-cloud-datenbanken","status":"publish","type":"post","link":"https:\/\/www.sysbus.eu\/?p=18420","title":{"rendered":"Analyse von Log-Files bei PostgreSQL-Cloud-Datenbanken"},"content":{"rendered":"\n<p>Beim Einrichten, Betreiben und Skalieren von PostgreSQL Open-Source-Datenbanken mittels Amazon Relational Database Service (RDS) oder Amazon Aurora f\u00e4llt eine Vielzahl von Log-Files an, deren Auswertung Datenbankadministratoren weiterhelfen kann. Dazu m\u00fcssen sie die Dateien regelm\u00e4\u00dfig und effektiv analysieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-1024x417.png\" alt=\"\" class=\"wp-image-18421\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-1024x417.png 1024w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-300x122.png 300w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-768x312.png 768w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-1536x625.png 1536w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-2048x833.png 2048w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2021\/03\/Deutsch-Optimizing-and-tuning-queries-1320x537.png 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Grafik: AWS<\/figcaption><\/figure>\n\n\n\n<!--more-->\n\n\n\n<p>Bei den vollst\u00e4ndig verwalteten Diensten f\u00fcr relationale Datenbanken wie Amazon RDS oder Amazon Aurora f\u00fcr PostgreSQL-Datenbanken k\u00f6nnen Sie <a>die Logdateien <\/a>der Nutzerzugriffe abrufen und analysieren. Denn mit einer steigenden Zahl von Transaktionen ist es hilfreich, den \u00dcberblick \u00fcber Zugriffe und Protokoll-Eintr\u00e4ge (DEBUG, LOG, INFO, NOTICE, WARNING und EXCEPTION-Level) zu behalten.<\/p>\n\n\n\n<p>F\u00fcr die regelm\u00e4\u00dfige, idealerweise t\u00e4gliche \u00dcberpr\u00fcfung der <a>Protokoll-Eintr\u00e4ge<\/a> k\u00f6nnen Sie <a>den pgBadger <\/a>nutzen, der \u00fcber GitHub erh\u00e4ltlich ist. Dieses Open-Source PostgreSQL-Tool erzeugt f\u00fcr Amazon RDS- und Amazon Aurora-Instanzen HTML-Berichte aus Ihren PostgreSQL-Protokollen.<\/p>\n\n\n\n<p>Zur Installation starten Sie eine <a>Amazon EC2<\/a> Instanz mitRHEL- oder <a>CentOS<\/a> AMI \u00fcber Ihre AWS Management-Konsole. Nach der Verbindung mit der Instanz installieren Sie die notwendigen Pakte (Perl, PostgreSQL Repository und pgBadger). Das erm\u00f6glicht ein einfacher Code \u2013 hier am Beispiel f\u00fcr RHEL 7 mit pgdg-10:<\/p>\n\n\n\n<p><em>sudo yum install ftp:\/\/ftp.pbone.net\/mirror\/apt.sw.be\/redhat\/7.3\/en\/i386\/rpmforge\/RPMS\/perl-Text-CSV_XS-0.65-1.rh7.rf.i386.rpm perl perl-devel<\/em><\/p>\n\n\n\n<p><em>sudo yum install https:\/\/download.postgresql.org\/pub\/repos\/yum\/reporpms\/EL-7-x86_64\/<a>pgdg<\/a>-redhat-repo-latest.noarch.rpm<\/em><\/p>\n\n\n\n<p><em>sudo yum install pgbadger -y<\/em><\/p>\n\n\n\n<p>Um die Berichte \u00fcber die Zugriffe auf die Datenbanken zu generieren, laden Sie die PostgreSQL Protokolle von Amazon RDS oder Aurora auf die Instanz und starten das <a>pgBadger<\/a>-Tool. Dann aktivieren Sie die Protokollierungsparameter in Ihrer DB Parameter-Gruppe. Anschlie\u00dfend legen Sie einen Cronjob f\u00fcr den weiteren automatisierten Download der Dateien an. Das Herunterladen, das Konvertieren der Informationen und das Generieren von Reports f\u00fcr die letzten drei Tage erm\u00f6glicht das untenstehende Bash-Skript.<\/p>\n\n\n\n<p>Wichtig zu wissen ist, dass Amazon RDS und Amazon Aurora-Instanzen Zugriffsdaten f\u00fcr eine Zeit von drei bis sieben Tagen vorhalten. Wenn Sie weiter auf die Eintr\u00e4ge zugreifen wollen, lassen diese mit benutzerdefinierten Bash-Skripts auf Amazon EC2-Instanzen oder Amazon S3-Buckets langfristig sichern.<\/p>\n\n\n\n<p><em>#This Script helps to download the Postgres log files from cloud and store it on EC2.<br>## 1. Delete the logs and pgBadger reports older than 3 days.<br>## 2. Download the latest Postgres log from Amazon RDS instance: &lt;instance_name&gt;.<br>## 3. Generate the pgBadger report for newly downloaded log file.<br>#create pgBadger dir under \/home\/ec2-user mkdir -p \/home\/ec2-user\/pgBadger,<br># mkdir -p \/home\/ec2-user\/pgBadger\/logs , mkdir -p \/home\/ec2-user\/pgBadger\/reports<br>#Use must install pgbadger and it should be in path.<br>#Here is link for pgbadger installation: https:\/\/github.com\/darold\/pgbadger<br>#Install awscli on EC2 instance set the env (https:\/\/docs.aws.amazon.com\/cli\/latest\/topic\/config-vars.html)<br># to download the log files.<br><br><\/em>home_dir=<strong>&#8222;\/home\/postgres\/pgBadger&#8220;<br><\/strong>logDir=<strong>&#8222;\/home\/postgres\/pgBadger\/logs&#8220;<br><\/strong>rptDir=<strong>&#8222;\/var\/www\/pgbadger&#8220;<br><\/strong>identifier=<strong>&#8218;&lt;instance_identifier&gt;&#8216;<br><br><\/strong>date=<strong>$<\/strong>(date -d <strong>&#8222;-1 days&#8220; <\/strong>+%Y-%m-%d)<br><br>sudo find $logDir -name <strong>&#8218;*.log.*&#8216; <\/strong>-type f -mtime 0 -exec rm {} \\;<br>sudo find $rptDir -name <strong>&#8218;postgresql*.html&#8216; <\/strong>-type f -mtime +10 -exec rm {} \\;<br><br>sudo mkdir -p $logDir\/$date<br>sudo chown -R postgres:postgres $logDir\/$date<br><br><em>#how to generate pgbadger report<br>#Install pgbadger on EC2 . To install, follow the link: https:\/\/github.com\/darold\/pgbadger<br><br><\/em><strong>for <\/strong>i <strong>in $<\/strong>(seq -w 00 23); <strong>do<br>&nbsp; <\/strong>sudo aws rds download-db-log-file-portion &#8211;db-instance-identifier $identifier<br>&nbsp; &#8211;log-file-name error\/postgresql.log.$date-$i &#8211;starting-token 0 &#8211;output text<br>&nbsp; &gt; $logDir\/$date\/postgresql.log.$date-$i<br><strong>done<br><br>if <\/strong>[ $? -eq 0 ]; <strong>then<br><br>&nbsp; <\/strong>sudo pgbadger &#8211;prefix <strong>&#8218;%t:%r:%u@%d:[%p]:&#8216; <\/strong>$logDir\/$date\/*.log.* -o $rptDir\/postgresql.$date.html<br>&nbsp; -f stderr <em>#-f $logDir\/*.log.*<br>&nbsp; <\/em>sudo chmod -R 777 $rptDir\/postgresql.$date.html<br><br>&nbsp; <strong>if <\/strong>[ $? -eq 0 ]; <strong>then<br>&nbsp;&nbsp;&nbsp; <\/strong><em>#mailx -s &#8222;Successfully Generated the pgbadger report for Date: $date&#8220;<br>&nbsp;&nbsp;&nbsp; <\/em>echo <strong>&#8222;Successfully Generated the pgbadger report for Date: <\/strong>$date<strong>&#8222;<br>&nbsp; <\/strong><strong>else<br>&nbsp;&nbsp;&nbsp; <\/strong><em>#mailx -s &#8222;UNSUCESSFUL GENERATION of pgbadger report for Date: $date&#8220;<br>&nbsp;&nbsp;&nbsp; <\/em>echo <strong>&#8222;Successfully Generated the pgbadger report for Date: <\/strong>$date<strong>&#8222;<br>&nbsp; <\/strong><strong>fi<br>&nbsp; <\/strong>gzip -r9 $logDir\/$date<br><strong>fi<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Einrichten, Betreiben und Skalieren von PostgreSQL Open-Source-Datenbanken mittels Amazon Relational Database Service (RDS) oder Amazon Aurora f\u00e4llt eine Vielzahl von Log-Files an, deren Auswertung Datenbankadministratoren weiterhelfen kann. Dazu m\u00fcssen sie die Dateien regelm\u00e4\u00dfig und effektiv analysieren.<\/p>\n","protected":false},"author":3,"featured_media":18421,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[22,6],"tags":[14722,2064,14721,14723,3000],"class_list":["post-18420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-tipps","tag-amazon-aurora","tag-analyse","tag-aws-postgresql","tag-log-file","tag-rds"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18420"}],"version-history":[{"count":2,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18420\/revisions"}],"predecessor-version":[{"id":18423,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/18420\/revisions\/18423"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/media\/18421"}],"wp:attachment":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}