A pesar de intentar utilizar regex posix, se obtiene el siguiente error en monit.
Tengo esta sintaxis de monit,
check file access_log_1 with path /app/DNIF_logs/access_log_1
ignore content = ".*favicon.*"
if content = "^([:digit:]{1,3}\.){3}[:digit:]{1,3}[:space:]((((([:digit:]{1,3}\.){3}[:digit:]{1,3})|\-)[:space:]([:digit:]{6,7}|\-)[:space:][-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&=]*)[:space:])|)-[:space:]-[:space:]\[[:digit:]{2}\/([A-Z]|[a-z]){3}\/[:digit:]{4}\:[:digit:]{2}\:[:digit:]{2}\:[:digit:]{2}[:space:]\+[:digit:]{4}\][:space:]\"(.*)\"[:space:](500|502|503)([:digit:]|[:space:])*\"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/\/=]*)\"(.*)" then alert
Al ejecutar este monit, estoy obteniendo este error
/monitrc:40: error de sintaxis '.*'
Intenté eliminar el primer .* y obtuve
monitrc:41: error de sintaxis '"[:space:](500|502|503)([:digit:]|[:space:])*\"'
así que me di cuenta de que el error está en la primera aparición de (.).
Según la respuesta aquí, debemos usar la sintaxis regex de posix. ¿Hay una sintaxis posix diferente para . o qué debo hacer?
davy.ai
Para solucionar el error de sintaxis en la sintaxis de monit, puedes reemplazar
.*
con.*?
, que es una sintaxis de expresión regular POSIX válida para hacer coincidencias perezosas con cualquier carácter. Esto debería resolver el problema y permitir que la sintaxis de monit se ejecute sin errores.Aquí está la sintaxis de monit actualizada con la corrección: