694241ad77
This started with me wondering why gerritbot was putting all its output into /var/log/syslog -- it turns out Xenial docker is configured to use journalctl (which forwards to syslog) and Bionic onwards uses json-file. Both are sub-optimial; but particularly the json-file because we lose the logs when the container dies. This proposes moving to a more standard model of having the containers log to syslog and redirecting that to files on disk. Install a rsyslog configuration to capture "docker-*" program names and put them into logfiles in /var/log/containers. Also install rotation for these files. In an initial group of docker-compose files, setup logging to syslog which should then be captured into these files. Add some basic testing. If this works OK, I think we can standardise our docker-compose files like this to caputure the logs the same everywhere. Change-Id: I940a5b05057e832e2efad79d9a2ed5325020ed0c
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
# Copyright 2018 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
testinfra_hosts = ['eavesdrop01.openstack.org']
|
|
|
|
|
|
def test_eavesdrop(host):
|
|
rules = host.iptables.rules()
|
|
rules = [x.strip() for x in rules]
|
|
|
|
web = ('-A openstack-INPUT -p tcp -m state --state NEW'
|
|
' -m tcp --dport 80 -j ACCEPT')
|
|
assert web in rules
|
|
|
|
def test_gerritbot_logs(host):
|
|
|
|
log_file = host.file('/var/log/containers/docker-gerritbot.log')
|
|
# A simple check that docker-compose and our container did something
|
|
# We expect auth to fail so check that it did
|
|
assert log_file.contains("Authentication (publickey) failed")
|
|
|
|
def test_gerritbot_running(host):
|
|
# Check that the container hasn't stopped
|
|
cmd = host.run("docker ps -a")
|
|
assert 'gerritbot-docker_gerritbot_1' in cmd.stdout
|
|
assert 'Up ' in cmd.stdout
|