首頁 >後端開發 >php教程 >日志收集探讨

日志收集探讨

WBOY
WBOY原創
2016-06-06 20:37:491112瀏覽

在项目上线后,往往需要监控一些日志,但是日志分散在各个服务器的不同角落,查看时需要找到某应用在那台服务器上,然后翻apache或nginx配置找日志路径,耗时耗力很麻烦。
所以想将这些日志收集到一个地方,做一套web界面的日志查看工具
需要的日志主要有

  • apache日志
  • apache虚拟主机access,error日志
  • nginx日志
  • nginx虚拟主机access,error日志
  • php错误日志
  • mysql日志
  • php应用日志(如yii的/runtime/application.log)

基本实现实时查看即可(一分钟内延迟)
看了下Scribe和Flume,似乎太过重量级,
我的想法是做个简单的文本变化检测,将新增内容发送到统一redis队列,后端脚本处理入库。
不知道大家是如何解决这个问题的?探讨下吧!

回复内容:

在项目上线后,往往需要监控一些日志,但是日志分散在各个服务器的不同角落,查看时需要找到某应用在那台服务器上,然后翻apache或nginx配置找日志路径,耗时耗力很麻烦。
所以想将这些日志收集到一个地方,做一套web界面的日志查看工具
需要的日志主要有

  • apache日志
  • apache虚拟主机access,error日志
  • nginx日志
  • nginx虚拟主机access,error日志
  • php错误日志
  • mysql日志
  • php应用日志(如yii的/runtime/application.log)

基本实现实时查看即可(一分钟内延迟)
看了下Scribe和Flume,似乎太过重量级,
我的想法是做个简单的文本变化检测,将新增内容发送到统一redis队列,后端脚本处理入库。
不知道大家是如何解决这个问题的?探讨下吧!

你的这个需求直接使用elasticsearch、logstash和kibana结合即可,部署配置都比较简单,实时性较高,又不用开发代码~

ELK全部搞定 妥妥的 https://www.elastic.co/

说一个常用方案:很多公司都是专门布了脚本,定时去抓,抓完了索引存到数据平台,数据平台提供查询,接口确实是略重。

来点前沿科技——systemd 的 journald~不用检测文本变化,它本身就是类似数据库那种二进制存储,直接用它给的 API 读取就可以了。当然目前 journald 不支持搜索,只能根据一些域来取数据,不过满足你的需求够了。

当然我猜测你们服务器上目前是不会用 systemd 的。journald 大概也不能不依赖 systemd 自己跑……

看一下logstash吧。 http://logstash.net/

负责任地说,成熟的日志处理和监控平台很多很多很多很多。。手机用户就不方便写了改天用电脑的时候给你列出来十几样

参考:在Linux上使用logwatch分析监控日志文件

看看Sentry?https://github.com/getsentry/sentry

go语言的话可以考虑一下heka

楼主可以关注下开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)

http://finallygo.iteye.com/blog/2170588
建议你看看这个,非常轻量

成熟的商业方案Splunk不错。

fluentd + MongoDB

可以试试阿里云的日志服务,即开即用,无需运维。
1)提供客户端快速采集日志(https://yq.aliyun.com/articles/3228?spm=5176.team4.teamshow1.37.faH93Z)
2)日志收集到服务端后提供多种消费方式:数据通道(类Kafka)/数据投递(ODPS/OSS)/实时搜索
具体可以参考:https://help.aliyun.com/document_detail/sls/user-guide/overview.html

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn