2606: Modify the healtchecks to make them disapear from the logs. r=nextgens a=nextgens

## What type of PR?

enhancement

## What does this PR do?

Modify the healtchecks to make them disapear from the logs.
This is not perfect...
- dovecot now complains about waitpid/finding a new process
- postfix is still regularly pinging rspamd / his milter and that generates a few lines worth of logs each time.

### Related issue(s)

## Prerequisites
Before we can consider review and merge, please make sure the following list is done and checked.
If an entry in not applicable, you can check it or remove it from the list.

- [ ] In case of feature or enhancement: documentation updated accordingly
- [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
main
bors[bot] 2 years ago committed by GitHub
commit 3ffe1d2a9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -23,7 +23,7 @@ RUN set -euxo pipefail \
RUN echo $VERSION >/version RUN echo $VERSION >/version
#EXPOSE 80/tcp #EXPOSE 80/tcp
HEALTHCHECK CMD curl -skfLo /dev/null http://localhost/sso/login?next=ui.index HEALTHCHECK CMD curl -skfLo /dev/null http://localhost/ping
VOLUME ["/data","/dkim"] VOLUME ["/data","/dkim"]

@ -5,9 +5,24 @@ import flask
import flask_bootstrap import flask_bootstrap
from mailu import utils, debug, models, manage, configuration from mailu import utils, debug, models, manage, configuration
from gunicorn import glogging
import logging
import hmac import hmac
class NoPingFilter(logging.Filter):
def filter(self, record):
if not (record.args['{host}i'] == 'localhost' and record.args['r'] == 'GET /ping HTTP/1.1'):
return True
class Logger(glogging.Logger):
def setup(self, cfg):
super().setup(cfg)
# Add filters to Gunicorn logger
logger = logging.getLogger("gunicorn.access")
logger.addFilter(NoPingFilter())
def create_app_from_config(config): def create_app_from_config(config):
""" Create a new application based on the given configuration """ Create a new application based on the given configuration
""" """
@ -69,6 +84,10 @@ def create_app_from_config(config):
def format_datetime(value): def format_datetime(value):
return utils.flask_babel.format_datetime(value) if value else '' return utils.flask_babel.format_datetime(value) if value else ''
def ping():
return ''
app.route('/ping')(ping)
# Import views # Import views
from mailu import ui, internal, sso, api from mailu import ui, internal, sso, api
app.register_blueprint(ui.ui, url_prefix=app.config['WEB_ADMIN']) app.register_blueprint(ui.ui, url_prefix=app.config['WEB_ADMIN'])

@ -52,12 +52,15 @@ def test_DNS():
test_DNS() test_DNS()
start_command="".join([ start_command=" ".join([
"gunicorn --threads ", str(os.cpu_count()), "gunicorn",
" -b :80 ", f"--threads {str(os.cpu_count())}",
"--access-logfile - " if (log.root.level<=log.INFO) else "", "-b :80",
"--error-logfile - ", "--logger-class mailu.Logger",
"--preload ", "--worker-tmp-dir /dev/shm",
"--access-logfile -" if (log.root.level<=log.INFO) else "",
"--error-logfile -",
"--preload",
"'mailu:create_app()'"]) "'mailu:create_app()'"])
os.system(start_command) os.system(start_command)

@ -16,7 +16,7 @@ COPY start.py /
RUN echo $VERSION >/version RUN echo $VERSION >/version
EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp
HEALTHCHECK --start-period=350s CMD echo QUIT|nc localhost 110|grep "Dovecot ready." HEALTHCHECK CMD echo PING|nc -w2 localhost 5001|grep "PONG"
VOLUME ["/mail"] VOLUME ["/mail"]

@ -95,6 +95,13 @@ service auth-worker {
} }
} }
service health-check {
executable = script -p health-check.sh
inet_listener health-check {
port = 5001
}
}
############### ###############
# IMAP & POP # IMAP & POP
############### ###############

@ -1,41 +1,43 @@
# rsyslog configuration file # rsyslog configuration file
# #
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html # or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### Global directives #### #### Global directives ####
# Sets the directory that rsyslog uses for work files. # Sets the directory that rsyslog uses for work files.
$WorkDirectory /var/lib/rsyslog $WorkDirectory /var/lib/rsyslog
# Sets default permissions for all log files. # Sets default permissions for all log files.
$FileOwner root $FileOwner root
$FileGroup adm $FileGroup adm
$FileCreateMode 0640 $FileCreateMode 0640
$DirCreateMode 0755 $DirCreateMode 0755
$Umask 0022 $Umask 0022
# Reduce repeating messages (default off). # Reduce repeating messages (default off).
$RepeatedMsgReduction on $RepeatedMsgReduction on
#### Modules #### #### Modules ####
# Provides support for local system logging (e.g. via logger command). # Provides support for local system logging (e.g. via logger command).
module(load="imuxsock") module(load="imuxsock")
#### Rules #### #### Rules ####
# Discard messages from local test requests # Discard messages from local test requests
:msg, contains, "connect from localhost[127.0.0.1]" ~ :msg, contains, "connect from localhost[127.0.0.1]" ~
:msg, contains, "connect from localhost[::1]" ~ :msg, contains, "connect from localhost[::1]" ~
:msg, contains, "haproxy read: short protocol header: QUIT" ~
{% if POSTFIX_LOG_FILE %} :msg, contains, "discarding EHLO keywords: PIPELINING" ~
# Log mail logs to file
mail.* -{{POSTFIX_LOG_FILE}} {% if POSTFIX_LOG_FILE %}
{% endif %} # Log mail logs to file
mail.* -{{POSTFIX_LOG_FILE}}
# Log mail logs to stdout {% endif %}
mail.* -/dev/stdout
# Log mail logs to stdout
mail.* -/dev/stdout

@ -0,0 +1 @@
Modify the healtchecks to make them disapear from the logs.
Loading…
Cancel
Save