作为一个开发,总要时不时的帮运维排查问题、给运营导数据,而且也会担心自己开发的系统是否足够健壮,机器的性能是否都得到了发挥,哪些业务将会是瓶颈。总是需要分心去处理这些东西,怎么能写好代码,或许到了开发一套监控系统的时候了。
elk(Elasticsearch+Logstash+Kibana)是一套不错的解决方案,它们都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统架构,我们对此做了实践探索并进行了扩展。
有的时候我们并不希望专门为了存储去搭建一套es,这时influxdb是个不错的替代;有时面对高并发的场景,logstash因为不支持消息队列缓存,而且logstash是运行在jvm上的,消耗资源较大,运行占用CPU和内存高,这时flume和fluentd更合适;grafana做展示也很强大。
不论如何扩展,监控系统的三层架构是不会变的,即采集、存储和展示。
我只在图中展示我们使用过的技术栈,后续用到新的技术再做更新。我将会通过一系列的文章分享我在搭建和开发监控系统中的一些心得体会。