作者回复: log是文本日志。metrics一般是数据点,也称时间序列(time series),格式如(value, timestamp),比方说CPU的使用率,某个API的单位时间调用次数,都是可以数字化的,并且可以定时记录起来,就形成了一串的时间序列数据,这些时间序列可以存起来,而且可以在像grafana这样的工具中进行分析展示。metrics可以认为是一种特殊的日志,使用特殊的方式存储。当前log一般存elasticsearch分布式搜索引擎,metrics一般存时间序列数据库(例如opentsdb, influxDB等)。log一般是用在调试和Trouble Shooting等场景,metrics一般用在系统和应用性能监控场景,或者是业务数据分析等场景。log数据可以进一步分析产生出metrics来。
作者回复: 不错很强👍
作者回复: 不能脱离场景,单纯讲某个监控产品的好坏。zabbix是老牌的监控产品,目前还是业界运维监控的一个主流产品,这个产品主要偏运维层的监控,但对大规模应用层和业务层的监控的能力比较欠缺,所以一般需要和ELK/Prometheus/CAT等监控产品配合互补,才能构成完整的监控体系。
作者回复: 我在网上简单搜了一下,貌似pinpoint/skywalking的架构都没有直接支持kafka这样的mq做中转。zipkin应该是支持的,但是zipkin的报表能力不行。如果这是你们企业的强需求,建议研究下pinpoint的通讯协议,然后做一下定制扩展,支持mq中转,我想这个工作量不会很大。
作者回复: 日志监控一定要有,用ELK收集应用日志,方便排查错误和性能问题,其它监控可暂缓
作者回复: 已回复,见08节
作者回复: 你指得是微服务监控agent吗?简单的监控agent可以直接往消息系统(例如kafka)丢消息即可,生产级的监控agent要考虑很多方面,如性能,cpu内存消耗,消息可靠性和及时性等,有很多参考,例如influxdb有golang写的agent,prometheus有golang写的很多exportor,cat有cat client,还有ELK有logstash,等等,这些可以参考。
作者回复: 1. consul是一种通用服务发现产品,不管go/python都可以用,有相应的客户端。
2. 如果使用的是grpc/thrift这样的rpc框架,那么它们支持跨语言调用,go可以调用python服务,可以通过契约直接生成调用客户端。如果是restful的服务,则更加松散,一般http client就可以调用,每个语言一般都有http client,然后自己解析一下json之类的payload就可以了。
作者回复: 你的问题太宽泛了,能否具一点?后台服务一般是一些原子基础服务,根据企业业务领域划分,集成一般是供前台聚合服务消费调用,有同步和异步消息等方式。
作者回复: 当然可以扛住,只是集群容量规模问题。HBase/ELK这些大数据产品就是为应对海量数据而生,集群容量可大可大,大公司一天几T甚至几十T数据都很正常。
作者回复: 日志监控一般要有,然后是metrics和告警逐步完善,到一定规模上调用链