今天austin项目来给大家整点不一样的:花点时间跟着文章做完,屏幕壁纸就可以有了,我来上个图,大家就懂了。
每当同事一瞄你的电脑,发现都是图形化的、黑色的看起来就比较高端的界面:“
嗯,这逼又在找Bug了吧
”
没错,要聊的话题就是
监控
01、为什么监控
过去在面试的时候,我记得曾经被问过:“
线上出了问题,你们是怎么排查的?排查的思路是怎么样的?
”
我以前的部门老大很看重
稳定性
,经常让我们梳理系统的上下链路和接口信息。我想:想要提高系统的稳定性就需要有
完备的监控和及时告警
。
有了监控,出了问题可以快速定位(而不是出了问题还在那里打印日志查找,很多问题都可以通过监控的数据就直接看出来了)。有了监控,我们可以把指标都配置在监控内,无论是技术上的还是业务上的(只不过业务的数据叫做看板,而系统的数据叫做监控)。有了监控我们看待系统的角度都会不一样(全方位理解系统的性能指标和业务指标)
如果你线上的系统还没有监控,
那着实是不太行的了
02、监控开源组件
监控告警这种想都不用想,直接依赖开源组件就完事了,应该只有大公司才有人力去自研监控告警的组件了。
我选择的是
Prometheus
(普罗米修斯),这个在业内还是很出名的,有很多公司都是用它来做监控和告警。
从prometheus的官网我们可以从文档中找到一张架构图:
我把上面图以我的理解“
不适当地
”简化下
简化完了之后,发现:
还是他娘的人家的图画得好看
总体而言,prometheus的核心是在于
Server
,我们要接入prometheus的话,实际上就是
开放接口
给prometheus拉取数据,然后在
web-ui
下配置图形化界面进而实现监控的功能。
03、prometheus环境搭建
对于prometheus的环境搭建,我这次也是直接用docker来弄了,毕竟Redis和Kafka都上了docker了。新建一个prometheus的文件夹,存放
docker-compose.yml
的信息:
version: '2'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
# - ./node_down.yml:/usr/local/etc/node_down.yml:rw
ports:
- "9090:9090"
networks:
- monitor
ale