《万凯-为 Apache SkyWalking 构建 Grafana dashboard——基于对原生 PromQL 的支持.pdf》由会员分享,可在线阅读,更多相关《万凯-为 Apache SkyWalking 构建 Grafana dashboard——基于对原生 PromQL 的支持.pdf(30页珍藏版)》请在三个皮匠报告上搜索。
1、为为Apache SkyWalking构建构建Grafana dashboards-基于对原生基于对原生PromQL的支持的支持万凯(Engineer Tetrate,Apache SkyWalking PMC Member)SkyWalking的PromQL Service是什么,能够做什么SkyWalking中的基本概念和metrics的特性如何使用PromQL Service使用PromQL Service构建Grafana dashboards实践PromQL(Prometheus Query Language)lets the user select and aggregate ti
2、me series data in real time.The result of an expression can either be shown as a graph,viewed as tabular data in Prometheuss expression browser,or consumed by external systems via the HTTP API.(https:/prometheus.io/docs/prometheus/latest/querying/basics/#querying-prometheus)Prometheus ServerGrafanaT
3、hird-party API clientsPrometheus web UIPromQL SkyWalking version=9.4.0PromQL HTTP APIExpressions ParserMetrics TransformationExpressions CalculationGraphQL ServiceOAPMetaDataPromQL ServiceOAP Storage and Query Engine 遵循 PromQL 的协议和语法,无缝接入已经支持PromQL的系统。基于SkyWalking 原生 GraphQL 查询服务之上提供查询SkyWalking数据的服
4、务。支持基于PromQL 表达式的附加查询阶段计算。endpoint_slaservice=songs,endpoint=GET:/songs/top,layer=MESH 9800,1679020888Metric nameLabelsValueTimestampendpoint_slaservice=songs,endpoint=GET:/songs,layer=GENERAL /100Match nameMatch labelendpoint_slaservice=songs,endpoint=GET:/songs,layer=MESH 10000,1679020888endpoint_
5、slaservice=songs,endpoint=GET:/songs/top,layer=GENERAL 9900,1679020888endpoint_slaservice=songs,endpoint=GET:/songs,layer=GENERAL 10000,1679020888endpoint_slaservice=songs,endpoint=GET:/songs,layer=GENERAL 100,1679020888Additional CalculateRepresents an abstract framework in computer science,such as
6、 Operating System(OS_LINUX layer),Kubernetes(k8s layer).This layer would be the owner of different services detected from different technologies.LayerServiceService InstanceRepresents a set/group of workloads which provides the same behaviors for incoming requests.An individual workload in the Servi
7、ce group.EndpointA path in a service for incoming requests.ProcessAn operating system process.In some scenarios,a service instance is not a process,such as a pod Kubernetes could contain multiple processes.Service/Instance/Endpoint/Process RelationRepresents the relation between Service/Instance/End
8、point/Process.TimeBucketInstance EndpointSourcesAggregation/Pre-calculationDownsamplingMetricsMinuteHourDayxx_cpmxx_sla.xx_xxxOAL/MALNameEntityValue.TrafficTraffic dispatcherService.Process OAL:service_cpm=from(Service.*).cpm();ScopeEntity InfoServiceService(include layer info)ServiceInstanceService
9、,ServiceInstanceEndpointService,EndpointServiceRelationService,DestServiceServiceInstanceRelationServiceInstance,DestServiceInstanceEndpointRelationEndpoint,DestEndpointProcessService,ServiceInstance,ProcessProcessRelationProcess,ServiceInstance,DestProcessRepresents the metrics level and in query s
10、tage represents the Scope catalog,Scope catalog provides high-dimension classifications for all scopes as a hierarchy structure.ScopeEntityRepresents the metrics belonging and used for the query.SkyWalking PrometheusExample Metric nameMetric nameservice_instance_cpmLayerLabellayer=GENERALServiceLabe
11、lservice=agent:songsServiceInstanceLabelservice_instance=agent:songs_instance_1EndpointLabelCommon Value(long)Value 6Labeled Value(Text)Label.,Value.TimeBucketTimestamp1681285800 Common Value(6)service_instance_cpm service=agent:songs,service_instance=agent:songs_instance_1,layer=GENERAL 6 168128580
12、0 Labeled Value(P50,3|P90,6)endpoint_percentileservice=agent:songs,endpoint=GET:/songs,layer=GENERAL,label=P50 3 1681285800endpoint_percentileservice=agent:songs,endpoint=GET:/songs,layer=GENERAL,label=P90 6 1681285800PromQL HTTP API说明说明示例示例/api/v1/query查询实时metric数据/api/v1/query?query=service_cpmser
13、vice=agent:songs,layer=GENERAL/api/v1/query_range查询时间范围metric数据,step根据查询时间范围自动返回/api/v1/query_range?query=service_cpmservice=agent:songs,layer=GENERAL&start=1677479336&end=1677479636/api/v1/series查询某个metric的label name/value 组合的集合查询有哪些服务:/api/v1/series?match=service_trafficlayer=GENERAL&start=1677479
14、336&end=1677479636/api/v1/labels查询某个metric的label name的集合查询instance_jvm_cpu 有哪些label:/api/v1/labels?match=instance_jvm_cpu/api/v1/label/values查询某个label value的集合查询所有metric的名称:/api/v1/label/_name_/values/api/v1/metadata查询metrics的类型、单位、帮助说明/api/v1/metadata?metric=service_cpm或/api/v1/metadata?limit=10查询表
15、达式编写步骤查询表达式编写步骤 选取metrics 根据Scope设置metrics的匹配Label:service/service_instance/endpoint和layer 根据value类型判断是否需要匹配Label:labels和relabels 根据查询类型判断是否需要匹配Label:parent_service,top_n,order 添加额外计算 endpoint_percentile endpoint_percentileservice=agent:songs,endpoint=GET:/songs,layer=GENERAL endpoint_percentileserv
16、ice=agent:songs,endpoint=GET:/songs,layer=GENERAL,labels=0,1,2,3,4,relabels=P50,P75,P90,P95,P99 endpoint_percentileservice=agent:songs,endpoint=GET:/songs,layer=GENERAL,labels=0,1,2,3,4,relabels=P50,P75,P90,P95,P99+100在OAP端application.yml 或者环境变量中设置,默认为开启:设置Data Source 设置Variables作为查询表达式的参数化匹配条件 创建da
17、shboard,建议按照Layer创建 创建panel,选择metrics,根据metrics的Scope、value类型以及查询需求写表达式 验证表达式,设置panel等全新构建:从SkyWalking Showcase 导入(建议):设置Data Source 从SkyWalking Showcase 下载或者从Demo导出dashboard文件,通过dashboard导入功能导入 根据需要调整或者新增metrics和panel相关API和表达式:/api/v1/series?match=service_trafficlayer=GENERAL&start=1677479336&end=1
18、677479636HTTP API Response:status:success,data:_name_:service_traffic,service:agent:songs,scope:Service,layer:GENERAL ,_name_:service_traffic,service:agent:recommendation,scope:Service,layer:GENERAL ,_name_:service_traffic,service:agent:app,scope:Service,layer:GENERAL ,_name_:service_traffic,service
19、:agent:gateway,scope:Service,layer:GENERAL ,_name_:service_traffic,service:agent:frontend,scope:Service,layer:GENERAL variable service=label_values(service_trafficlayer=$layer,service)variable endpoint=label_values(endpoint_trafficlayer=$layer,service=$service,keyword=$endpoint_keyword,limit=$endpoi
20、nt_limit,endpoint)variable service_instance=label_values(instance_trafficlayer=$layer,service=$service,service_instance)variable endpoint=label_values(endpoint_trafficlayer=$layer,service=$service,keyword=$endpoint_keyword,limit=$endpoint_limit,endpoint)label_values(endpoint_trafficlayer=$layer,serv
21、ice=$service,keyword=$endpoint_keyword,limit=$endpoint_limit,endpoint)相关API和表达式:/api/v1/query_range?query=service_apdexservice=agent:songs,layer=GENERAL/10000&start=1681456800&end=1681457700查询时间范围1h 或者 1d,API将返回 hour/day step 的指标数据Min interval 也可以根据时间范围选择1m/h/dHTTP API Response:status:success,data:r
22、esultType:matrix,result:metric:_name_:service_apdex,layer:GENERAL,scope:Service,service:agent:songs ,values:1681456800,0.99 ,1681456860,1 ,.相关API和表达式:/api/v1/query_range?query=service_percentileservice=agent:songs,layer=GENERAL,labels=0,1,2,3,4,relabels=P50,P75,P90,P95,P99&start=1681456800&end=16814
23、57700labels:用于过滤需要查询的labelsrelabels:用于重命名返回的labels,列表顺序需要一致HTTP API Response:status:success,data:resultType:matrix,result:metric:_name_:service_percentile,label:P50,layer:GENERAL,scope:Service,service:agent:songs ,values:1681456800,0 ,.,metric:_name_:service_percentile,label:P75,layer:GENERAL,scope:
24、Service,service:agent:songs ,values:1681456860,10 ,.P90,P95,P99.相关API和表达式:/api/v1/query_range?query=service_instance_cpmparent_service=agent:songs,layer=GENERAL,top_n=10,order=DES&start=1681456800&end=1681457700parent_service:metric父级的service的名字top_n:用于过滤排序结果的条数order:排序规则HTTP API Response:status:suc
25、cess,data:resultType:matrix,result:metric:_name_:service_instance_cpm,layer:GENERAL,scope:ServiceInstance,service_instance:e6cd9e47f8604512bdb6a16a2dfd4ec210.68.1.223 ,values:1681456800,17 ,.,metric:_name_:service_instance_cpm,layer:GENERAL,scope:ServiceInstance,service_instance:917a83e463a0407593565fa0c0abdbe810.68.1.226 ,values:1681456800,16 ,.,.原生原生UIUI:更全面的数据内容,更多的数据联动Grafana UIGrafana UI:更丰富的样式,自定义额外的计算,Grafana生态的集成,混合使用Prometheus和SkyWalking在同一UI展现https:/skywalking.apache.org/#demohttps:/skywalking.apache.org/#demo关注我们获取更多云原生资讯Thank you