fix(apache): Logpfade als TOML-Liste + CustomLog-Erkennung zuerst (KeyHelp-VHost-Logs)
This commit is contained in:
1 parent
33eb5f2308
commit
2b853529f9
2 files changed
+41
-4
No files matched your search
+35
-2
@@ -154,6 +154,27 @@ fi
|
||||
HAS_APACHE=0; { command -v apache2ctl >/dev/null 2>&1 || command -v httpd >/dev/null 2>&1; } && HAS_APACHE=1
|
||||
# Apache-Logpfad ermitteln: erst explizit gesetzter Wert, dann uebliche Orte,
|
||||
# dann die von Apache selbst konfigurierte CustomLog-Direktive.
|
||||
if [ "$HAS_APACHE" -eq 1 ] && [ -z "$APACHE_LOG" ]; then
|
||||
# Erst die von Apache selbst konfigurierten Pfade — das ist die einzige
|
||||
# verlaessliche Quelle. Viele Panels (KeyHelp, Plesk) setzen pro VHost eigene
|
||||
# CustomLog-Pfade; der "globale" Standardpfad existiert dann oft leer, und
|
||||
# ein Input darauf liefert still nichts.
|
||||
_cl="$(grep -rhoE '^[[:space:]]*CustomLog[[:space:]]+(\S+|"[^"]+")' \
|
||||
/etc/apache2/ /etc/httpd/ /etc/apache2/sites-enabled/ 2>/dev/null \
|
||||
| sed -E 's/^[[:space:]]*CustomLog[[:space:]]+//; s/^"//; s/"$//' \
|
||||
| grep -v '^|' | grep -v '^/dev/' | sort -u)"
|
||||
if [ -n "$_cl" ]; then
|
||||
# Alle konfigurierten Pfade als Glob-Liste (Telegraf akzeptiert Listen).
|
||||
_found=""
|
||||
for _p in $_cl; do
|
||||
# Variablen wie ${APACHE_LOG_DIR} aufloesen
|
||||
_p="$(printf '%s' "$_p" | sed "s#\${APACHE_LOG_DIR}#/var/log/apache2#g; s#\${APACHE_LOG_DIR:-/var/log/apache2}#/var/log/apache2#g")"
|
||||
[ -r "$_p" ] && _found="$_found $_p"
|
||||
done
|
||||
[ -n "$_found" ] && APACHE_LOG="$(printf '%s' "$_found" | sed 's/^ //')"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$HAS_APACHE" -eq 1 ] && [ -z "$APACHE_LOG" ]; then
|
||||
for _p in /var/log/apache2/access.log /var/log/httpd/access_log \
|
||||
/var/log/apache2/other_vhosts_access.log /var/log/httpd/access.log; do
|
||||
@@ -178,6 +199,18 @@ if [ "$HAS_APACHE" -eq 1 ] && [ -z "$APACHE_LOG" ]; then
|
||||
fi
|
||||
[ -n "$APACHE_LOG" ] || APACHE_LOG="/var/log/apache2/access.log"
|
||||
fi
|
||||
# APACHE_LOG kann mehrere, leerzeichengetrennte Pfade enthalten -> als
|
||||
# TOML-Liste rendern. Achtung: Pfade mit Leerzeichen sind in Apache-Logs
|
||||
# ungewoehnlich; wir quoten jeden Eintrag einzeln.
|
||||
if [ "$HAS_APACHE" -eq 1 ]; then
|
||||
APACHE_FILES=""
|
||||
for _p in $APACHE_LOG; do
|
||||
APACHE_FILES="${APACHE_FILES:+$APACHE_FILES, }\"$_p\""
|
||||
done
|
||||
[ -n "$APACHE_FILES" ] || APACHE_FILES='"/var/log/apache2/access.log"'
|
||||
APACHE_FILES="[$APACHE_FILES]"
|
||||
export APACHE_FILES
|
||||
fi
|
||||
if [ "$ROLE" = "auto" ]; then
|
||||
ROLE="none"
|
||||
[ "$IS_PVE" -eq 1 ] && ROLE="proxmox"
|
||||
@@ -346,9 +379,9 @@ fetch_conf() {
|
||||
fetch "$1" "$2.tmp"
|
||||
set -a; [ -r /etc/default/telegraf ] && . /etc/default/telegraf; set +a
|
||||
if command -v envsubst >/dev/null; then
|
||||
envsubst '${NODE_NAME} ${PROM_URL} ${LOKI_URL} ${TELEGRAF_TOKEN} ${PVE_TOKEN} ${PVE_NODE} ${PVE_URL} ${APACHE_LOG}' < "$2.tmp" > "$2"
|
||||
envsubst '${NODE_NAME} ${PROM_URL} ${LOKI_URL} ${TELEGRAF_TOKEN} ${PVE_TOKEN} ${PVE_NODE} ${PVE_URL} ${APACHE_LOG} ${APACHE_FILES}' < "$2.tmp" > "$2"
|
||||
else
|
||||
subst_vars "$2.tmp" "$2" NODE_NAME PROM_URL LOKI_URL TELEGRAF_TOKEN PVE_TOKEN PVE_NODE PVE_URL APACHE_LOG
|
||||
subst_vars "$2.tmp" "$2" NODE_NAME PROM_URL LOKI_URL TELEGRAF_TOKEN PVE_TOKEN PVE_NODE PVE_URL APACHE_LOG APACHE_FILES
|
||||
fi
|
||||
if grep -q '\${' "$2"; then
|
||||
log "WARNUNG: $2 enthaelt noch unaufgeloeste Platzhalter:"
|
||||
|
||||
@@ -18,8 +18,12 @@
|
||||
# --------------------------------------------------------------------------
|
||||
# 1) Roh-Logs → Loki
|
||||
# --------------------------------------------------------------------------
|
||||
# ${APACHE_FILES} rendert zu einer echten TOML-Liste — der Installer baut sie
|
||||
# aus allen gefundenen Logpfaden (Panel-Hoster haben pro VHost eigene Dateien).
|
||||
# Ein einzelner String mit Leerzeichen ("/a.log /b.log") waere ein ungueltiger
|
||||
# Pfad und der Input liefe still leer.
|
||||
[[inputs.tail]]
|
||||
files = ["${APACHE_LOG}"]
|
||||
files = ${APACHE_FILES}
|
||||
name_override = "journal"
|
||||
# Beim Erstanlauf nur Neues lesen; danach Position merken.
|
||||
initial_read_offset = "saved-or-end"
|
||||
@@ -46,7 +50,7 @@
|
||||
# VHost-Apache (Debian-Default) stellt den Hostnamen voran:
|
||||
# example.com:80 127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET / HTTP/1.0" 200 2326
|
||||
[[inputs.tail]]
|
||||
files = ["${APACHE_LOG}"]
|
||||
files = ${APACHE_FILES}
|
||||
name_override = "apache_access"
|
||||
initial_read_offset = "saved-or-end"
|
||||
data_format = "grok"
|
||||
|
||||
Reference in new issue
Block a user