HTML5技术

Logstash实践: 分布式系统的日志监控 - 赵杰_yiwenshengmei(2)

字号+ 作者:H5之家 来源:H5之家 2015-11-13 10:26 我要评论( )

官方文档里flush_interval为缓冲时间(单位秒)。我实践下来不是秒而是数量,Logstash会等待缓冲区写满一定数量后才输出。这对线上调试是不能接受的,建议上线初期设为0。程序稳定后,随着日志量的增大,可以增大fl

官方文档里flush_interval为缓冲时间(单位秒)。我实践下来不是秒而是数量,Logstash会等待缓冲区写满一定数量后才输出。这对线上调试是不能接受的,建议上线初期设为0。程序稳定后,随着日志量的增大,可以增大flush_interval的值以提高文件写入性能。

Indexer的配置文件中,我明确指定了message_format的格式,其中%{host}对应的就是之前手动设置的host元数据。

3.5. 启动Logstash # 先在Indexer主机上启动 nohup /usr/local/logstash-1.4.3/bin/logstash agent -f indexer.conf &>/dev/null & # 再在Shipper主机上启动 nohup /usr/local/logstash-1.4.3/bin/logstash agent -f shipper.conf &>/dev/null & # 最后在Indexer上观察日志 tail -f /data/log/logstash/all.log

我们来测试一下,切到Shipper主机上,模拟日志产生:

echo "Hello World" >> /data/log/php/php_fetal.log

再切换到Indexer主机上,如果出现:10.140.46.134 B[1] Hello World,说明Logstash部署成功。

3.6. 日志着色脚本

使用awk配合echo,可以匹配你想要高亮的文本并改变他们的前景色和背景色。就像效果图里的那样。这里附上我写的脚本,把脚本中的关键信息替换成你想要匹配的文本即可:

tail -f /data/log/logstash/all.log | awk '{ if (match($0, /.*(PHP Deprecated|PHP Notice|PHP Fatal error|PHP Warning|ERROR|WARN).*/)) { print "\033[41;37;1m"$0"\033[0m" } else if (match($0, /.*关键信息1.*/)) { print "\033[32;1m"$0"\033[0m" } else if (match($0, /.*关键信息2.*/)) { print "\033[36;1m"$0"\033[0m" } else { print $0 } }'

So easy,妈妈再也不用担心我的日志。。。

4. 还有什么

有些公司需要挖掘日志的价值,那仅仅收集和实时显示是不够的,需要把逼格上升到日志分析技术层面。

一个完整的日志分析技术栈需要实时收集,实时索引和展示三部分组成,Logstash只是这其中的第一个环节。Logstash所属的Elastic公司,已经开发了完整的日志分析技术栈,它们是Elasticsearch,Logstash,和Kibana,简称ELK。Elasticsearch是搜索引擎,而Kibana是Web展示界面。

日志分析技术栈

如果你搭建了完整的技术栈,你的老板就可以在图形化界面上按不同的维度去搜索日志了。

Kibana界面

还可以做一些高大上的统计和计算。

Kibana界面

当然,我认为90%的公司是没有必要这么做的,能做到在控制台里监控和搜索就能满足需要了。但我们也可以看看剩下的那10%的公司是怎么做的,比如:新浪是如何分析处理32亿条实时日志的?

参考文献:

  • Logstash 最佳实践 -- github上的中文译本
  • Logstash 官方文档
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Session分布式共享 = Session + Redis + Nginx - 傲翼飞寒

      Session分布式共享 = Session + Redis + Nginx - 傲翼飞寒

      2017-03-10 16:00

    • 【G】开源的分布式部署解决方案(一) - 开篇 - 寻找和谐

      【G】开源的分布式部署解决方案(一) - 开篇 - 寻找和谐

      2017-01-24 14:01

    • 【实践】基于接口的插件机制 - 悠扬的牧笛

      【实践】基于接口的插件机制 - 悠扬的牧笛

      2017-01-18 14:03

    • ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 - 奔跑吧!小郭

      ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 - 奔跑吧!小郭

      2017-01-01 13:00

    网友点评
    >