Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Supervision / Installer LogAnalyzer sur Debian

Installer LogAnalyzer sur Debian

Par Pierre-Yves Landuré Dernière modification 02/11/2012 17:52

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 :

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