运维部署
PHP日志系统实验:从零散记录到集中分析
背景需求
原系统使用简单的fwrite写日志,存在以下问题:
- 日志文件分散在多个目录,难以查找
- 没有日志级别区分,重要错误容易淹没在大量信息中
- 日志分析困难,无法进行关键词搜索和统计
- 日志文件不断增长,占用大量磁盘空间
搭建步骤
引入Monolog库:`composer require monolog/monolog`
配置Elasticsearch处理器:
关键日志分类:
- error(系统错误)
- warning(警告信息)
- info(用户操作)
- debug(接口调试)
Kibana可视化配置
访问Kibana控制台:http://localhost:5601
创建索引模式:`zxpn_logs-*`
配置时间字段:`@timestamp`
创建仪表盘,添加以下可视化:
- 错误日志趋势图
- 接口响应时间分布图
- 最常出现的错误类型
- 用户操作热力图
价值
- 问题定位时间从平均2小时缩短至15分钟
- 系统稳定性提升30%
- 运维效率提升50%
后续计划
- 实现日志告警机制
- 分析用户行为数据
- 建立性能指标监控体系
use Monolog\Logger; use Monolog\Handler\ElasticsearchHandler; use Elasticsearch\ClientBuilder; // 创建Elasticsearch客户端 $client = ClientBuilder::create() ->setHosts(['localhost:9200']) ->build(); // 创建日志记录器 $logger = new Logger('zxpn'); $logger->pushHandler(new ElasticsearchHandler($client, [ 'index' => 'zxpn_logs', 'type' => '_doc', 'ignore_error' => true ])); // 记录不同级别的日志 $logger->info('用户登录成功', ['user_id' => 123, 'ip' => $_SERVER['REMOTE_ADDR']]); $logger->error('数据库连接失败', ['error' => $e->getMessage()]);
分享至: