Maison  >  Article  >  développement back-end  >  Surveillance et gestion des logs des applications PHP à l'aide de Docker Compose, Nginx et MariaDB

Surveillance et gestion des logs des applications PHP à l'aide de Docker Compose, Nginx et MariaDB

WBOY
WBOYoriginal
2023-10-12 11:51:12694parcourir

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的监控和日志管理

Utilisez Docker Compose, Nginx et MariaDB pour mettre en œuvre la surveillance et la gestion des journaux des applications PHP

La surveillance et la gestion des journaux sont des éléments très importants lors du développement et de l'exploitation d'applications Web. Grâce à Docker Compose, Nginx et MariaDB, nous pouvons mettre en œuvre une solution complète de surveillance et de gestion des journaux.

Tout d'abord, nous devons préparer une application PHP et l'écrire sous forme d'image Docker. Cette application PHP peut être une simple page statique ou une application dynamique contenant du code PHP. Quel que soit celui-ci, nous devons le regrouper dans une image Docker.

Ensuite, nous devons écrire un fichier Docker Compose pour définir l'ensemble de l'environnement de notre application. Dans ce fichier, nous devons définir trois services : Nginx, PHP et MariaDB.

version: '3'

services:
  web:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./logs:/var/log/nginx

  php:
    image: your_php_image:latest
    volumes:
      - ./php:/var/www/html
    links:
      - db

  db:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
    volumes:
      - ./data:/var/lib/mariadb

Dans la configuration ci-dessus, nous avons défini trois services : web, php et db. Le service Web utilise l'image Nginx et lie le port 80 de l'hôte au port 80 du conteneur. Nous avons également spécifié le chemin de montage du fichier de configuration Nginx nginx.conf et le répertoire du fichier journal logs.

Le service php utilise notre propre image PHP packagée et monte le répertoire php de l'hôte dans le répertoire /var/www/html du conteneur, afin que notre application PHP puisse accéder aux fichiers de ce répertoire.

Le service db utilise le miroir MariaDB et définit un mot de passe utilisateur ROOT. Nous avons également monté un répertoire de données pour le stockage persistant des données de la base de données.

Ensuite, nous devons préparer un fichier de configuration Nginx nginx.conf pour configurer l'hôte virtuel et la gestion des journaux de Nginx. Voici un exemple simple :

server {
    listen 80;
    server_name localhost;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        root /var/www/html;
        index index.html index.php;
    }

    location ~ .php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
        include fastcgi_params;
    }
}

Le fichier de configuration ci-dessus définit un hôte virtuel nommé localhost, qui écoute sur le port 80. Nous avons configuré respectivement le journal d'accès et le journal des erreurs dans le répertoire /var/log/nginx.

Ensuite, nous devons écrire un script pour analyser et stocker les journaux. Nous pouvons écrire un script simple en utilisant PHP pour réaliser cette fonction. Voici un exemple :

<?php

function save_log($log_file, $log_data) {
    // 解析日志数据
    // 存储到数据库中
}

$log_file = '/var/log/nginx/access.log';

$handle = fopen($log_file, "r");

if ($handle) {
    while (($line = fgets($handle)) !== false) {
        // 解析日志行,获取需要存储的数据
        $log_data = parse_log($line);

        // 存储日志数据
        save_log($log_file, $log_data);
    }

    fclose($handle);
}
?>

Dans le script ci-dessus, nous utilisons une simple boucle pour lire le fichier journal ligne par ligne et stocker les données du journal analysées dans la base de données. La logique spécifique d'analyse et de stockage doit être écrite en fonction de la situation réelle.

Enfin, nous devons ajouter ce script à notre application PHP pour effectuer régulièrement des opérations d'analyse et de stockage des journaux. Nous pouvons utiliser crontab pour implémenter une exécution planifiée. Voici un exemple :

# 每分钟执行一次日志解析脚本
* * * * * php /var/www/html/log_parser.php

Ajoutez la configuration ci-dessus à crontab pour exécuter le script log_parser.php toutes les minutes.

Pour résumer, en utilisant Docker Compose, Nginx et MariaDB, nous pouvons facilement mettre en œuvre la surveillance et la gestion des journaux des applications PHP. En configurant l'hôte virtuel et la gestion des journaux de Nginx, nous pouvons stocker les journaux d'accès et les journaux d'erreurs dans des répertoires spécifiés. Ensuite, en écrivant un script qui analyse les journaux et en l'ajoutant à l'application PHP, nous pouvons analyser et stocker régulièrement ces données de journal. De cette façon, nous pouvons facilement surveiller et dépanner l’application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn