Installer LogAnalyzer sur Debian
LogAnalyzer est une application Web d'analyse des journaux générés par rsyslog. LogAnalyzer est une alternative libre à Logzilla, anciennement PHP-Syslog-Ng. Bien que la compatibilité soit imparfaite, LogAnalyzer permet d'analyser les journaux générés par Syslog-NG. Ce guide présente l'installation de LogAnalyzer sur Debian.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Pré-requis
Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.
Ce guide nécessite un serveur HTTP avec support du PHP disposant au choix d'un des scripts suivant :
- Le script a2tools disponible dans le guide Installer Apache 2 sur Debian.
Ce guide recommande l'enregistrement des journaux Syslog dans une base MySQL.
Paramètres
Renseignez le nom de domaine ou sera disponible l'application :
DOMAIN="logs.domaine-exemple.fr"
Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur) :
MYSQL_HOST="localhost"
Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/loganalyzer/${DOMAIN}"
Assurez-vous que le dossier parent existe:
PARENT_PATH="$(command dirname "${INSTALL_PATH}")"
if [ ! -e "${PARENT_PATH}" ]; then
command mkdir --parent "${PARENT_PATH}"
fi
Préparation de l'environnement
Installez les logiciels nécessaires au bon fonctionnement de l'application :
command apt-get install php5-mysql php5-gd php5-cli apg mysql-client
Autorisez le serveur HTTP à accéder aux journaux:
command adduser www-data adm
Rechargez la configuration de PHP selon la méthode d'installation utilisée:
test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm restart
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload
Création de la base de données
Créez la base de données :
if [ "${MYSQL_HOST}" = "localhost" ]; then MYSQL_PARAMS=$(command mysql-tools --db-prefix="loganalyzer" --create "${DOMAIN}") else command echo "Saisissez le mot de passe de l'utilisateur root MySQL :" command read -s PASSWORD MYSQL_PARAMS=$(command ssh "root@${MYSQL_HOST}" "command mysql-tools \
--db-prefix='loganalyzer' --host='$(command cat '/etc/mailname')' \
--password='${PASSWORD}' --create '${DOMAIN}'") fi
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Générez des préfixes de table afin d'augmenter la sécurité contre les attaques par injection SQL:
TABLE_PREFIX="$(command apg -q -a 0 -n 1 -M NCL)"
Mise en place de l'application
Récupérez l'URL de la dernière version de l'application :
VERSION=$(command wget --quiet --output-document=- \
"http://loganalyzer.adiscon.com/downloads" \
| grep --max-count=1 --extended-regexp \
"(downloads/loganalyzer-|download.adiscon.com).*stable" \
| command sed -e 's/.*loganalyzer-v*\(.*\)-v.*/\1/' \
| command tr '-' '.')
SOURCE_URL="http://download.adiscon.com/loganalyzer/loganalyzer-${VERSION}.tar.gz"
Téléchargez la dernière version de l'application :
command wget "${SOURCE_URL}" --output-document="/tmp/loganalyzer-${VERSION}.tar.gz"
Décompressez l'archive téléchargée :
command tar --directory '/tmp' -xzf "/tmp/loganalyzer-${VERSION}.tar.gz"
Déplacez le dossier créé vers son emplacement final :
command mv "/tmp/loganalyzer-${VERSION}" "${INSTALL_PATH}"
Supprimez l'archive téléchargée:
command rm "/tmp/loganalyzer-${VERSION}.tar.gz"
Créez le fichier de configuration et supprimez le script d'installation standard:
command rm "${INSTALL_PATH}/src/install.php"
command cp "${INSTALL_PATH}/src/include/config.sample.php" "${INSTALL_PATH}/src/config.php"
Configurez la connexion à la base de données:
command sed -i \
-e "s|\('UserDBEnabled'.*=\).*|\1 true;|" \
-e "s|\('UserDBServer'.*=\).*|\1 '${MYSQL_HOST}';|" \
-e "s|\('UserDBName'.*=\).*|\1 '${MYSQL_DB}';|" \
-e "s|\('UserDBPref'.*=\).*|\1 '${TABLE_PREFIX}_';|" \
-e "s|\('UserDBUser'.*=\).*|\1 '${MYSQL_USER}';|" \
-e "s|\('UserDBPass'.*=\).*|\1 '${MYSQL_PASSWORD}';|" \
-e "s|\('UserDBLoginRequired'.*=\).*|\1 true;|" \
-e "s|\('HeaderDefaultEncoding'.*=\).*|\1 ENC_UTF8;|" \
"${INSTALL_PATH}/src/config.php"
Initialisez la base de données:
command cat "${INSTALL_PATH}/src/include/db_template.txt" \
| command sed -e "s/logcon_/${TABLE_PREFIX}_/g" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Renseignez la version de la base de données:
DB_VERSION=$(command grep "database_internalversion" "${INSTALL_PATH}/src/include/functions_db.php" \
| command sed -e 's/^.*=[^"]*"\([^"]*\)".*$/\1/')
command echo "INSERT INTO ${TABLE_PREFIX}_config (propname, propvalue, is_global)
VALUES ('database_installedversion', '${DB_VERSION}', 1)" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Générez le mot de passe de l'utilisateur d'administration et mettez à jour la base de données:
ADMIN_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)"
echo "INSERT INTO ${TABLE_PREFIX}_users(username, password, is_admin, is_readonly)
VALUES ('admin', '$(command php -r "echo md5('${ADMIN_PASSWORD}');")', 1, 0)" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Configurez la première source de données:
echo "INSERT INTO ${TABLE_PREFIX}_sources(Name, SourceType, ViewID, LogLineType, DiskFile, DBRecordsPerQuery)
VALUES ('$(command cat '/etc/mailname')', 1, 'SYSLOG', 'syslog', '/var/log/syslog', 100)" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Configurez le serveur HTTP pour servir le site Internet:
command a2tools "${DOMAIN}" "${INSTALL_PATH}/src"
Affichez les paramètres de connexion à l'outil et notez les précieusement:
echo "URL : http://${DOMAIN}/
User : admin
Password: ${ADMIN_PASSWORD}"
Si vous utilisez Syslog-NG, les colonnes "facility" et "severity" resteront vide car LogAnalyzer attends des valeurs numériques pour ces données, et Syslog-NG utilise des chaînes de caractères.
Remerciements
- Merci aux développeurs de Adiscon LogAnalyzer.