Prometheus,Grafana ,skywalking
-
Prometheus 内置了一个强大的数据查询语言 PromQL。 通过 PromQL 可以实现对监控数据的查询、聚合。同时 PromQL 也被应用于数据可视化(如 Grafana)以及告警当中。
通过 PromQL 可以轻松回答类似于以下问题:
在过去一段时间中 95%应用延迟时间的分布范围?
预测在 4 小时后,磁盘空间占用大致会是什么情况?
CPU 占用率前 5 位的服务有哪些?(过滤) -
在 Prometheus 的架构设计中,Prometheus Server 主要负责数据的收集,存储并且对外提供数据查询支持,而实际的监控样本数据的收集则是由 Exporter 完成。
-
当 Prometheus 通过 Exporter 采集到相应的监控指标样本数据后,我们就可以通过PromQL 对监控样本数据进行查询。
-
统一数据,而非数据库。将各个地方的数据整合到一起
-
支持自定义面板
-
influxDB与promtheus的区别
InfluxDB 和 Prometheus 是两种常用的监控和时间序列数据库,它们有以下一些区别:
- 数据模型:InfluxDB 采用类 SQL 的查询语言,支持多维度数据模型和标签系统;Prometheus 则使用自己的 PromQL 查询语言,数据模型相对简单。
- 应用场景:InfluxDB 适用于需要长期存储和复杂查询的时间序列数据,如物联网数据、系统监控数据等;Prometheus 则更专注于监控和告警,适用于实时性要求较高的场景。
- 扩展性:InfluxDB 具有较好的扩展性,可以通过水平扩展实现高并发写入和查询;Prometheus 在扩展性方面相对较弱,通常适用于中小规模的监控系统。
- 社区和生态:InfluxDB 拥有活跃的社区和丰富的生态系统,有许多第三方工具和库可供选择;Prometheus 也有强大的社区支持,但相对来说生态系统不如 InfluxDB 丰富。 在选择使用哪种工具时,需要根据具体的需求和场景来决定。如果需要处理大量的时间序列数据并进行复杂查询,InfluxDB 可能是更好的选择;如果主要关注监控和告警,并且对实时性要求较高,Prometheus 可能更适合。
-
influxDB
InfluxDB 不会实时清空数据。它是一种时序数据库,用于存储时间序列数据。
InfluxDB 支持数据保留策略(Retention Policy),可以根据设定的规则自动删除过期的数据,以控制数据库的大小。保留策略定义了数据在数据库中保留的时间范围,超过指定时间的数据将被自动删除。
例如,可以设置保留最近 7 天、30 天或其他时间长度的数据。这样,当数据的时间超过了保留策略所设定的时间范围时,InfluxDB 就会自动清理这些过期数据。
此外,InfluxDB 不支持删除单条数据的操作,只能通过保留策略周期性地定时删除数据,或者通过其他方式如删除时间序列线、删除表、删除数据库等批量删除指定的数据。
需要注意的是,InfluxDB 中的删除操作是不可逆的,在执行删除操作之前请确保确认无误,并及时备份重要数据。同时,合理设置保留策略对于管理数据库中的数据量和性能非常重要。
-
skywalking全链路追踪
-
skywalking主要包含4个方面:
主页(全局的性能信息),拓扑图(全局服务间关联),追踪,告警
下图为skywalking的首页,主要展示全局的性能信息。
-
.skywalking的traceId与日志组件(log4j,logback,elk等)的集成
链路中的所有节点的traceId是一样的,这样就可以在skywalking上面发现性能差的traceId后,再去日志组件中查看日志是否有异常日志。
-
skywalaking总体架构分为三部分:
- skywalking-collector:链路数据归集器,数据可以落地ElasticSearch,单机也可以落地H2,不推荐,H2仅作为临时演示用
- skywalking-web:web可视化平台,用来展示落地的数据
- skywalking-agent:探针,用来收集和发送数据到归集器
-
grafana可与Jmeter进行整合:
修改influxdb中的配置文件,将数据库改为Jmeter
在Jmeter中加入后端监听器,加入influxDB的url
运行Jmeter时会把数据写到influxDB中
grafana官网中写好了很多仪表盘,可以直接用