├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── issue--bug-report.md └── workflows │ ├── e2e.yaml │ ├── frontend.yml │ ├── helm-ci.yml │ ├── helm-release.yml │ ├── publish-technical-documentation-next.yml │ ├── publish-technical-documentation-release.yml │ ├── release.yml │ ├── test.yml │ └── weekly-release.yml ├── .gitignore ├── .golangci.yml ├── .goreleaser.yaml ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── GOVERNANCE.md ├── LICENSE ├── LICENSING.md ├── MAINTAINERS.md ├── Makefile ├── README.md ├── api ├── LICENSE ├── agent │ └── v1 │ │ └── agent.proto ├── buf.gen.yaml ├── buf.lock ├── buf.work.yaml ├── buf.yaml ├── gen │ └── proto │ │ └── go │ │ ├── agent │ │ └── v1 │ │ │ ├── agent.pb.go │ │ │ ├── agent.pb.gw.go │ │ │ ├── agent_vtproto.pb.go │ │ │ └── agentv1connect │ │ │ ├── agent.connect.go │ │ │ └── agent.connect.mux.go │ │ ├── google │ │ └── v1 │ │ │ ├── profile.pb.go │ │ │ └── profile_vtproto.pb.go │ │ ├── ingester │ │ └── v1 │ │ │ ├── ingester.pb.go │ │ │ ├── ingester_vtproto.pb.go │ │ │ └── ingesterv1connect │ │ │ ├── ingester.connect.go │ │ │ └── ingester.connect.mux.go │ │ ├── push │ │ └── v1 │ │ │ ├── push.pb.go │ │ │ ├── push_vtproto.pb.go │ │ │ └── pushv1connect │ │ │ ├── push.connect.go │ │ │ └── push.connect.mux.go │ │ ├── querier │ │ └── v1 │ │ │ ├── querier.pb.go │ │ │ ├── querier_vtproto.pb.go │ │ │ └── querierv1connect │ │ │ ├── querier.connect.go │ │ │ └── querier.connect.mux.go │ │ ├── status │ │ └── v1 │ │ │ ├── status.pb.go │ │ │ ├── status.pb.gw.go │ │ │ ├── status_vtproto.pb.go │ │ │ └── statusv1connect │ │ │ ├── status.connect.go │ │ │ └── status.connect.mux.go │ │ ├── storegateway │ │ └── v1 │ │ │ ├── storegateway.pb.go │ │ │ ├── storegateway_vtproto.pb.go │ │ │ └── storegatewayv1connect │ │ │ ├── storegateway.connect.go │ │ │ └── storegateway.connect.mux.go │ │ └── types │ │ └── v1 │ │ ├── types.pb.go │ │ └── types_vtproto.pb.go ├── go.mod ├── go.sum ├── google │ └── v1 │ │ └── profile.proto ├── ingester │ └── v1 │ │ └── ingester.proto ├── openapiv2 │ ├── gen │ │ └── phlare.swagger.json │ └── openapiv2.go ├── push │ └── v1 │ │ └── push.proto ├── querier │ └── v1 │ │ └── querier.proto ├── status │ └── v1 │ │ └── status.proto ├── storegateway │ └── v1 │ │ └── storegateway.proto └── types │ └── v1 │ └── types.proto ├── cmd ├── phlare │ ├── .dockerignore │ ├── Dockerfile │ ├── debug.Dockerfile │ ├── help-all.txt.tmpl │ ├── help.txt.tmpl │ ├── main.go │ ├── main_test.go │ └── phlare.yaml └── profilecli │ ├── blocks.go │ ├── canary_exporter.go │ ├── client.go │ ├── main.go │ ├── my.pprof │ ├── parquet.go │ ├── query.go │ └── upload.go ├── cypress.config.ts ├── cypress ├── ci-base-path.ts ├── ci.ts ├── e2e │ └── smoke.cy.ts ├── fixtures │ └── profileTypes.json ├── support │ ├── commands.ts │ └── e2e.ts └── tsconfig.json ├── docs ├── Makefile ├── docs.mk ├── internal │ ├── RELEASE.md │ └── contributing │ │ └── README.md └── sources │ ├── _index.md │ ├── configure-client │ ├── _index.md │ ├── grafana-agent.md │ ├── language-sdks │ │ ├── _index.md │ │ ├── dotnet.md │ │ ├── ebpf.md │ │ ├── go_push.md │ │ ├── java.md │ │ ├── nodejs.md │ │ ├── python.md │ │ ├── ruby.md │ │ └── rust.md │ └── phlare-agent-server-diag.png │ ├── configure-server │ ├── _index.md │ ├── about-configurations.md │ ├── about-ip-address-logging.md │ ├── about-tenant-ids.md │ ├── configure-disk-storage.md │ ├── configure-object-storage-backend.md │ ├── configuring-memberlist.md │ ├── configuring-tracing.md │ └── reference-configuration-parameters │ │ ├── index.md │ │ └── index.template │ ├── deploy-kubernetes │ ├── _index.md │ └── tanka-jsonnet.md │ ├── get-started │ └── _index.md │ ├── logo.png │ ├── reference-http-api │ └── index.md │ ├── reference-learning-resources │ └── _index.md │ ├── reference-phlare-architecture │ ├── _index.md │ ├── about-grafana-phlare-architecture │ │ ├── index.md │ │ ├── read-path.svg │ │ └── write-path.svg │ ├── block-format │ │ ├── _index.md │ │ └── model.svg │ ├── components │ │ ├── _index.md │ │ ├── distributor.md │ │ ├── ingester.md │ │ ├── querier.md │ │ ├── query-frontend │ │ │ └── index.md │ │ └── query-scheduler │ │ │ ├── index.md │ │ │ └── query-scheduler-architecture.png │ ├── deployment-modes │ │ ├── index.md │ │ ├── microservices-mode.svg │ │ ├── monolithic-mode.svg │ │ └── scaled-monolithic-mode.svg │ ├── hash-ring │ │ ├── hash-ring-with-replication.png │ │ ├── hash-ring-without-replication.png │ │ └── index.md │ └── memberlist-and-the-gossip-protocol.md │ ├── release-notes │ ├── _index.md │ └── v0.1 │ │ ├── index.md │ │ ├── phlare-logo.png │ │ └── phlare-ui.png │ └── ui.webm ├── ebpf ├── LICENSE ├── bpf │ ├── Makefile │ ├── libbpf │ │ ├── .dockerignore │ │ └── .gitignore │ ├── profile.bpf.c │ ├── profile.bpf.h │ └── vmlinux │ │ ├── .dockerignore │ │ └── .gitignore ├── cmd │ └── playground │ │ └── main.go ├── cpuonline │ └── cpuonline.go ├── go.mod ├── go.sum ├── perf_event.go ├── pprof │ ├── pprof.go │ └── pprof_test.go ├── profile_bpfeb.go ├── profile_bpfeb.o ├── profile_bpfel.go ├── profile_bpfel.o ├── rlimit │ ├── internal │ │ └── internal_mirror.go │ └── rlimit.go ├── sd │ ├── k8s.go │ ├── procfs.go │ ├── target.go │ └── target_test.go ├── session.go ├── session_maps.go ├── symtab │ ├── elf.go │ ├── elf │ │ ├── buildid.go │ │ ├── buildid_test.go │ │ ├── elf_sym.go │ │ ├── elfmmap.go │ │ ├── elfmmap_test.go │ │ ├── go_table.go │ │ ├── go_table_test.go │ │ ├── symbol_table.go │ │ ├── symbol_table_test.go │ │ ├── testdata │ │ │ ├── .gitignore │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── docker.sh │ │ │ ├── elfs │ │ │ │ ├── elf │ │ │ │ ├── elf.debug │ │ │ │ ├── elf.debuglink │ │ │ │ ├── elf.nobuildid │ │ │ │ ├── elf.nopie │ │ │ │ ├── elf.stripped │ │ │ │ ├── go12 │ │ │ │ ├── go12-static │ │ │ │ ├── go16 │ │ │ │ ├── go16-static │ │ │ │ ├── go18 │ │ │ │ ├── go18-static │ │ │ │ ├── go20 │ │ │ │ ├── go20-static │ │ │ │ └── libexample.so │ │ │ ├── hello.go │ │ │ ├── lib.c │ │ │ ├── src.c │ │ │ └── usr │ │ │ │ └── lib │ │ │ │ └── debug │ │ │ │ └── .build-id │ │ │ │ └── 1f │ │ │ │ └── cfa068c5fdb9f31e6d9f3f89019beacb70182d.debug │ │ └── testutils.go │ ├── elf_cache.go │ ├── elf_cache_test.go │ ├── elf_test.go │ ├── gcache.go │ ├── gcache_test.go │ ├── gosym.go │ ├── gosym │ │ ├── data.go │ │ ├── parse.go │ │ ├── pcindex.go │ │ └── pclntab.go │ ├── gosym_linux_test.go │ ├── gosym_test.go │ ├── kallsyms.go │ ├── kallsyms_test.go │ ├── metrics.go │ ├── proc.go │ ├── proc_linux_test.go │ ├── proc_test.go │ ├── procmap.go │ ├── procmaps_test.go │ ├── stat_darwin.go │ ├── stat_linux.go │ ├── stat_placeholder.go │ ├── symbols.go │ ├── symtab.go │ ├── table.go │ ├── table_test.go │ └── test_helper.go └── util │ └── test_logger.go ├── examples └── README.md ├── go.mod ├── go.sum ├── go.work ├── go.work.sum ├── images ├── grafana-profiles.gif └── logo.png ├── jest.config.js ├── operations └── phlare │ ├── helm │ ├── cr.yaml │ ├── ct.yaml │ └── phlare │ │ ├── .helmignore │ │ ├── Chart.lock │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── charts │ │ └── minio-4.0.12.tgz │ │ ├── ci │ │ ├── micro-services-values.yaml │ │ └── single-binary-values.yaml │ │ ├── rendered │ │ ├── micro-services.yaml │ │ └── single-binary.yaml │ │ ├── templates │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── clusterrole.yaml │ │ ├── clusterrolebinding.yaml │ │ ├── configmap-overrides.yaml │ │ ├── configmap.yaml │ │ ├── deployments-statefulsets.yaml │ │ ├── ingress.yaml │ │ ├── memberlist-service.yaml │ │ ├── serviceaccount.yaml │ │ └── services.yaml │ │ ├── values-micro-services.yaml │ │ └── values.yaml │ ├── jsonnet │ ├── README.md │ ├── phlare-mixin │ │ ├── phlare-mixin │ │ │ ├── .gitignore │ │ │ ├── config.libsonnet │ │ │ ├── dashboards.libsonnet │ │ │ ├── dashboards │ │ │ │ ├── dashboard-utils.libsonnet │ │ │ │ ├── phlare-reads.libsonnet │ │ │ │ └── phlare-writes.libsonnet │ │ │ ├── jsonnetfile.json │ │ │ ├── jsonnetfile.lock.json │ │ │ ├── mixin.libsonnet │ │ │ └── recording_rules.libsonnet │ │ └── vendor │ │ │ ├── github.com │ │ │ └── grafana │ │ │ │ ├── grafonnet-lib │ │ │ │ └── grafonnet │ │ │ │ │ ├── alert_condition.libsonnet │ │ │ │ │ ├── alertlist.libsonnet │ │ │ │ │ ├── annotation.libsonnet │ │ │ │ │ ├── bar_gauge_panel.libsonnet │ │ │ │ │ ├── cloudmonitoring.libsonnet │ │ │ │ │ ├── cloudwatch.libsonnet │ │ │ │ │ ├── dashboard.libsonnet │ │ │ │ │ ├── dashlist.libsonnet │ │ │ │ │ ├── elasticsearch.libsonnet │ │ │ │ │ ├── gauge_panel.libsonnet │ │ │ │ │ ├── grafana.libsonnet │ │ │ │ │ ├── graph_panel.libsonnet │ │ │ │ │ ├── graphite.libsonnet │ │ │ │ │ ├── heatmap_panel.libsonnet │ │ │ │ │ ├── influxdb.libsonnet │ │ │ │ │ ├── link.libsonnet │ │ │ │ │ ├── log_panel.libsonnet │ │ │ │ │ ├── loki.libsonnet │ │ │ │ │ ├── pie_chart_panel.libsonnet │ │ │ │ │ ├── pluginlist.libsonnet │ │ │ │ │ ├── prometheus.libsonnet │ │ │ │ │ ├── row.libsonnet │ │ │ │ │ ├── singlestat.libsonnet │ │ │ │ │ ├── sql.libsonnet │ │ │ │ │ ├── stat_panel.libsonnet │ │ │ │ │ ├── table_panel.libsonnet │ │ │ │ │ ├── template.libsonnet │ │ │ │ │ ├── text.libsonnet │ │ │ │ │ ├── timepicker.libsonnet │ │ │ │ │ └── transformation.libsonnet │ │ │ │ └── jsonnet-libs │ │ │ │ ├── grafana-builder │ │ │ │ └── grafana.libsonnet │ │ │ │ └── mixin-utils │ │ │ │ └── utils.libsonnet │ │ │ ├── grafana-builder │ │ │ ├── grafonnet │ │ │ └── mixin-utils │ ├── phlare │ │ ├── .gitignore │ │ ├── jsonnetfile.json │ │ ├── jsonnetfile.lock.json │ │ └── phlare.libsonnet │ ├── test-jsonnet.sh │ ├── values-micro-services.json │ └── values.json │ └── relabeling_test.go ├── package.json ├── pkg ├── agent │ ├── agent.go │ ├── api.go │ ├── config.go │ ├── config_test.go │ ├── profiles.go │ ├── profiles_test.go │ ├── scrape │ │ └── target.go │ └── target.go ├── api │ ├── api.go │ ├── api_test.go │ ├── index.go │ ├── index.gohtml │ ├── index_test.go │ ├── memberlist_status.go │ ├── memberlist_status.gohtml │ └── static │ │ ├── bootstrap-5.1.3.bundle.min.js │ │ ├── bootstrap-5.1.3.min.css │ │ ├── bootstrap-icons-1.8.1.css │ │ ├── fonts │ │ ├── bootstrap-icons.woff │ │ └── bootstrap-icons.woff2 │ │ ├── phlare-logo.png │ │ └── phlare-styles.css ├── buf.gen.yaml ├── buf.work.yaml ├── buf.yaml ├── cfg │ ├── cfg.go │ ├── cfg_test.go │ ├── data_test.go │ ├── dynamic.go │ ├── dynamic_test.go │ ├── files.go │ ├── files_test.go │ ├── flag.go │ ├── flag_test.go │ └── precedence_test.go ├── clientpool │ ├── bidi.go │ ├── ingester_client_pool.go │ └── store_gateway_client_pool.go ├── distributor │ ├── distributor.go │ ├── distributor_ring.go │ ├── distributor_test.go │ ├── instance_count.go │ ├── instance_count_test.go │ ├── metrics.go │ ├── rate_strategy.go │ └── rate_strategy_test.go ├── frontend │ ├── frontend.go │ ├── frontend_diff.go │ ├── frontend_label_names.go │ ├── frontend_label_values.go │ ├── frontend_profile_types.go │ ├── frontend_scheduler_worker.go │ ├── frontend_select_merge_profile.go │ ├── frontend_select_merge_stacktraces.go │ ├── frontend_select_series.go │ ├── frontend_series.go │ ├── frontend_test.go │ ├── frontendpb │ │ ├── frontend.pb.go │ │ ├── frontend.proto │ │ ├── frontend_vtproto.pb.go │ │ └── frontendpbconnect │ │ │ ├── frontend.connect.go │ │ │ └── frontend.connect.mux.go │ ├── split_by_interval.go │ └── split_by_interval_test.go ├── ingester │ ├── ingester.go │ ├── ingester_test.go │ ├── instance.go │ ├── limiter.go │ ├── limiter_test.go │ ├── pyroscope │ │ ├── ingest_adapter.go │ │ └── ingest_handler.go │ ├── query.go │ ├── query_test.go │ ├── retention.go │ └── retention_test.go ├── iter │ ├── batch.go │ ├── batch_test.go │ ├── iter.go │ ├── profiles.go │ ├── profiles_test.go │ └── tree.go ├── model │ ├── flamegraph.go │ ├── flamegraph_diff.go │ ├── flamegraph_diff_test.go │ ├── flamegraph_test.go │ ├── labels.go │ ├── profile.go │ ├── profile_test.go │ ├── series.go │ ├── series_test.go │ ├── stack.go │ ├── stacktraces.go │ ├── stacktraces_test.go │ ├── testdata │ │ └── stacktraces │ │ │ ├── 1.pb │ │ │ ├── 2.pb │ │ │ └── 3.pb │ ├── tree.go │ └── tree_test.go ├── objstore │ ├── bucket_util.go │ ├── bucket_util_test.go │ ├── client │ │ ├── client_mock.go │ │ ├── config.go │ │ ├── factory.go │ │ └── factory_test.go │ ├── delayed_bucket_client.go │ ├── objstore.go │ ├── parquet │ │ └── reader.go │ ├── providers │ │ ├── azure │ │ │ ├── bucket_client.go │ │ │ └── config.go │ │ ├── cos │ │ │ ├── bucket_client.go │ │ │ ├── config.go │ │ │ └── config_test.go │ │ ├── filesystem │ │ │ ├── bucket_client.go │ │ │ └── config.go │ │ ├── gcs │ │ │ ├── bucket_client.go │ │ │ └── config.go │ │ ├── s3 │ │ │ ├── bucket_client.go │ │ │ ├── config.go │ │ │ └── config_test.go │ │ └── swift │ │ │ ├── bucket_client.go │ │ │ └── config.go │ ├── reader.go │ ├── reader_test.go │ ├── sse_bucket_client.go │ └── sse_bucket_client_test.go ├── parquet │ ├── group.go │ ├── row_reader.go │ ├── row_reader_test.go │ ├── row_writer.go │ └── row_writer_test.go ├── phlare │ ├── context │ │ └── context.go │ ├── health.go │ ├── modules.go │ ├── phlare.go │ ├── phlare_test.go │ └── runtime_config.go ├── phlaredb │ ├── block │ │ ├── block.go │ │ ├── list.go │ │ ├── metadata.go │ │ └── testdata │ │ │ ├── 01GR3QABQB6J30Q04K4E6MAKRE │ │ │ ├── functions.parquet │ │ │ ├── index.tsdb │ │ │ ├── locations.parquet │ │ │ ├── mappings.parquet │ │ │ ├── meta.json │ │ │ ├── profiles.parquet │ │ │ ├── stacktraces.parquet │ │ │ └── strings.parquet │ │ │ └── 01H3YE0W63FNXM69N2WVTRBYYK │ │ │ ├── functions.parquet │ │ │ ├── index.tsdb │ │ │ ├── locations.parquet │ │ │ ├── mappings.parquet │ │ │ ├── meta.json │ │ │ ├── profiles.parquet │ │ │ ├── strings.parquet │ │ │ └── symbols │ │ │ ├── index.symdb │ │ │ └── stacktraces.symdb │ ├── block_querier.go │ ├── block_querier_test.go │ ├── bucket │ │ └── users.go │ ├── deduplicating_slice.go │ ├── delta.go │ ├── delta_test.go │ ├── functions.go │ ├── head.go │ ├── head_queriers.go │ ├── head_test.go │ ├── labels.go │ ├── labels_test.go │ ├── locations.go │ ├── mappings.go │ ├── metrics.go │ ├── metrics_test.go │ ├── phlaredb.go │ ├── phlaredb_test.go │ ├── profile_store.go │ ├── profile_store_test.go │ ├── profile_test.go │ ├── profiles.go │ ├── querier.go │ ├── querier_test.go │ ├── query │ │ ├── iters.go │ │ ├── iters_test.go │ │ ├── metrics.go │ │ ├── predicate_test.go │ │ ├── predicates.go │ │ ├── profiles.go │ │ ├── repeated.go │ │ ├── repeated_test.go │ │ └── util.go │ ├── sample_merge.go │ ├── sample_merge_test.go │ ├── schemas │ │ └── v1 │ │ │ ├── functions.go │ │ │ ├── locations.go │ │ │ ├── mappings.go │ │ │ ├── profiles.go │ │ │ ├── profiles_test.go │ │ │ ├── read_writer.go │ │ │ ├── schema_test.go │ │ │ ├── stacktraces.go │ │ │ └── strings.go │ ├── shipper │ │ └── shipper.go │ ├── strings.go │ ├── symdb │ │ ├── format.go │ │ ├── interfaces.go │ │ ├── mapping_memory.go │ │ ├── mapping_memory_test.go │ │ ├── mapping_reader_file.go │ │ ├── mapping_reader_file_test.go │ │ ├── mapping_writer_file.go │ │ ├── mapping_writer_file_test.go │ │ ├── stacktrace_tree.go │ │ ├── stacktrace_tree_bench_test.go │ │ ├── stacktrace_tree_test.go │ │ ├── symdb.go │ │ └── testdata │ │ │ └── profile.pb.gz │ ├── testdata │ │ ├── heap │ │ ├── profile │ │ ├── profile_java │ │ ├── profile_python │ │ └── profile_uncompressed │ └── tsdb │ │ ├── bitprefix.go │ │ ├── bitprefix_test.go │ │ ├── encoding │ │ └── encoding.go │ │ ├── index.go │ │ ├── index │ │ ├── chunk.go │ │ ├── chunk_test.go │ │ ├── fingerprint.go │ │ ├── fingerprint_test.go │ │ ├── index.go │ │ ├── index_test.go │ │ ├── pool.go │ │ ├── postings.go │ │ ├── postings_test.go │ │ ├── postingsstats.go │ │ ├── postingsstats_test.go │ │ ├── shard.go │ │ ├── shard_test.go │ │ └── test_utils.go │ │ ├── index_test.go │ │ ├── shard │ │ └── shard.go │ │ └── testdata │ │ └── 20kseries.json ├── pprof │ ├── pprof.go │ ├── pprof_test.go │ ├── testdata │ │ ├── heap │ │ └── profile_java │ └── testhelper │ │ ├── model.go │ │ └── profile_builder.go ├── querier │ ├── grpc_handler.go │ ├── grpc_roundtripper.go │ ├── http.go │ ├── http_test.go │ ├── ingester_querier.go │ ├── querier.go │ ├── querier_test.go │ ├── replication.go │ ├── select_merge.go │ ├── select_merge_test.go │ ├── stats │ │ ├── stats.go │ │ ├── stats.pb.go │ │ ├── stats.proto │ │ ├── stats_test.go │ │ ├── stats_vtproto.pb.go │ │ └── time_middleware.go │ ├── store_gateway_querier.go │ ├── timeline │ │ ├── calculator.go │ │ ├── calculator_test.go │ │ ├── timeline.go │ │ └── timeline_test.go │ └── worker │ │ ├── processor_manager.go │ │ ├── scheduler_processor.go │ │ ├── scheduler_processor_test.go │ │ ├── util.go │ │ ├── worker.go │ │ └── worker_test.go ├── scheduler │ ├── queue │ │ ├── queue.go │ │ ├── queue_test.go │ │ ├── user_queues.go │ │ └── user_queues_test.go │ ├── scheduler.go │ ├── scheduler_test.go │ ├── schedulerdiscovery │ │ ├── config.go │ │ ├── config_test.go │ │ ├── discovery.go │ │ ├── ring.go │ │ └── ring_test.go │ └── schedulerpb │ │ ├── custom.go │ │ ├── scheduler.pb.go │ │ ├── scheduler.proto │ │ ├── scheduler_vtproto.pb.go │ │ └── schedulerpbconnect │ │ ├── scheduler.connect.go │ │ └── scheduler.connect.mux.go ├── slices │ └── slices.go ├── storegateway │ ├── block.go │ ├── block_filter.go │ ├── blocks.gohtml │ ├── bucket.go │ ├── bucket_stores.go │ ├── clientpool │ │ └── client_pool.go │ ├── gateway.go │ ├── gateway_blocks_http.go │ ├── gateway_ring_http.go │ ├── gateway_tenants_http.go │ ├── metrics.go │ ├── query.go │ ├── ring_status.gohtml │ └── tenants.gohtml ├── tenant │ ├── interceptor.go │ ├── interceptor_test.go │ └── tenant.go ├── test │ └── capture.go ├── testhelper │ ├── http.go │ ├── pool.go │ ├── proto.go │ └── ring.go ├── tracing │ └── config.go ├── usage │ └── usage.go ├── usagestats │ ├── reporter.go │ ├── reporter_test.go │ ├── seed.go │ ├── seed_test.go │ ├── stats.go │ └── stats_test.go ├── util │ ├── active_user.go │ ├── build │ │ └── build.go │ ├── config.go │ ├── connectgrpc │ │ ├── connectgrpc.go │ │ └── connectgrpc_test.go │ ├── disk │ │ ├── disk.go │ │ ├── disk_windows.go │ │ └── interface.go │ ├── error.go │ ├── error_test.go │ ├── fieldcategory │ │ └── overrides.go │ ├── gziphandler │ │ ├── doc.go │ │ ├── gzip.go │ │ ├── gzip_go18.go │ │ ├── gzip_go18_test.go │ │ └── gzip_test.go │ ├── http.go │ ├── http_test.go │ ├── httpgrpc │ │ ├── httpgrpc.go │ │ ├── httpgrpc.pb.go │ │ ├── httpgrpc.proto │ │ ├── httpgrpc_vtproto.pb.go │ │ └── httpgrpcconnect │ │ │ ├── httpgrpc.connect.go │ │ │ └── httpgrpc.connect.mux.go │ ├── httpgrpcutil │ │ ├── carrier.go │ │ ├── errors.go │ │ └── errors_test.go │ ├── interceptor.go │ ├── logger.go │ ├── loser │ │ ├── tree.go │ │ └── tree_test.go │ ├── math │ │ └── math.go │ ├── net.go │ ├── prometheus.go │ ├── recovery.go │ ├── recovery_test.go │ ├── servicediscovery │ │ ├── dns.go │ │ ├── ring.go │ │ └── ring_test.go │ ├── shard.go │ ├── strings.go │ ├── time.go │ ├── unsafe.go │ ├── validation │ │ └── limits.go │ ├── yaml.go │ └── yolo.go └── validation │ ├── exporter │ ├── exporter.go │ ├── exporter_test.go │ ├── ring.go │ └── ring_test.go │ ├── limits.go │ ├── limits_mock.go │ ├── limits_test.go │ ├── testutil.go │ ├── user_limits_handler.go │ ├── user_limits_handler_test.go │ ├── validate.go │ └── validate_test.go ├── public ├── README.md ├── app │ ├── app.tsx │ ├── components │ │ ├── AppSelector │ │ │ ├── AppSelector.module.css │ │ │ ├── AppSelector.spec.tsx │ │ │ ├── AppSelector.tsx │ │ │ └── SelectButton.tsx │ │ ├── Sidebar.module.css │ │ ├── Sidebar.tsx │ │ ├── SidebarTenant.module.css │ │ ├── SidebarTenant.tsx │ │ └── TenantWall.tsx │ ├── example.test.tsx │ ├── hooks │ │ └── useAppNames.ts │ ├── jquery-import.ts │ ├── overrides │ │ ├── components │ │ │ ├── AppSelector │ │ │ │ └── Label.tsx │ │ │ ├── ExportData.tsx │ │ │ ├── TimelineChart │ │ │ │ ├── ContextMenu.plugin.ts │ │ │ │ └── Tooltip.plugin.ts │ │ │ └── Toolbar.tsx │ │ ├── models │ │ │ ├── app.spec.ts │ │ │ ├── app.ts │ │ │ ├── query.spec.ts │ │ │ └── query.ts │ │ ├── services │ │ │ ├── apps.spec.ts │ │ │ ├── apps.ts │ │ │ ├── base.spec.ts │ │ │ ├── base.ts │ │ │ ├── render.ts │ │ │ ├── tags.spec.ts │ │ │ └── tags.ts │ │ ├── ui │ │ │ └── Sidebar.tsx │ │ └── util │ │ │ ├── baseurl.spec.ts │ │ │ └── baseurl.ts │ ├── pages │ │ ├── ComparisonView.tsx │ │ ├── DiffView.tsx │ │ ├── ExploreView.tsx │ │ ├── SingleView.tsx │ │ └── routes.ts │ ├── redux │ │ ├── hooks.ts │ │ ├── reducers │ │ │ └── tenant.ts │ │ └── store.ts │ ├── services │ │ └── tenant.ts │ ├── static │ │ └── logo.svg │ ├── types.ts │ └── util │ │ └── history.ts ├── assets.go ├── assets_embedded.go ├── execute_template.go ├── execute_template_test.go ├── templates │ └── index.html └── testdata │ └── baseurl.html ├── scripts ├── base-url │ ├── docker-compose.yaml │ └── nginx.conf └── webpack │ ├── webpack.common.js │ ├── webpack.dev.js │ └── webpack.prod.js ├── testSetupFile.js ├── tools ├── add-parquet-tags.sh ├── doc-generator │ ├── main.go │ ├── parse │ │ ├── parser.go │ │ ├── root_blocks.go │ │ ├── util.go │ │ └── util_test.go │ └── writer.go ├── docker-compose │ ├── .gitignore │ ├── README.md │ ├── datasource.yaml │ ├── docker-compose.yml │ ├── golang │ │ ├── Dockerfile │ │ ├── go.mod │ │ └── main.go │ ├── java │ │ ├── simple │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── build.gradle │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ ├── Main.java │ │ │ │ └── Something.java │ │ └── springboot │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ ├── build.gradle │ │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── gradlew.bat │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── springboot │ │ │ ├── Application.java │ │ │ ├── HelloController.java │ │ │ ├── PprofController.java │ │ │ └── Something.java │ ├── phlare.yaml │ ├── python │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── main.py │ │ └── requirements.txt │ ├── rust │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── Dockerfile │ │ ├── README.md │ │ └── src │ │ │ └── main.rs │ └── seccomp.json ├── grafana-phlare ├── image-tag ├── kubernetes │ └── java-simple-deployment.yaml ├── monitoring │ ├── .gitignore │ ├── README.md │ ├── environments │ │ └── default │ │ │ ├── loki.libsonnet │ │ │ ├── main.jsonnet │ │ │ ├── monitoring.libsonnet │ │ │ └── tempo.libsonnet │ ├── jsonnetfile.json │ ├── jsonnetfile.lock.json │ ├── lib │ │ └── k.libsonnet │ └── vendor │ │ ├── 1.20 │ │ ├── alertmanager │ │ ├── alertmanager-mixin │ │ ├── github.com │ │ ├── grafana │ │ │ ├── grafana │ │ │ │ └── grafana-mixin │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README.md │ │ │ │ │ ├── alerts │ │ │ │ │ └── alerts.libsonnet │ │ │ │ │ ├── dashboards │ │ │ │ │ ├── dashboards.libsonnet │ │ │ │ │ └── grafana-overview.json │ │ │ │ │ ├── mixin.libsonnet │ │ │ │ │ ├── rules │ │ │ │ │ └── rules.libsonnet │ │ │ │ │ └── scripts │ │ │ │ │ ├── build.sh │ │ │ │ │ ├── common.sh │ │ │ │ │ ├── format.sh │ │ │ │ │ └── lint.sh │ │ │ ├── grafonnet-lib │ │ │ │ ├── grafonnet-7.0 │ │ │ │ │ ├── DOCS.md │ │ │ │ │ ├── dashboard.libsonnet │ │ │ │ │ ├── grafana.libsonnet │ │ │ │ │ ├── panel │ │ │ │ │ │ ├── gauge.libsonnet │ │ │ │ │ │ ├── graph.libsonnet │ │ │ │ │ │ ├── row.libsonnet │ │ │ │ │ │ ├── stat.libsonnet │ │ │ │ │ │ ├── table.libsonnet │ │ │ │ │ │ └── text.libsonnet │ │ │ │ │ ├── target │ │ │ │ │ │ └── prometheus.libsonnet │ │ │ │ │ └── template │ │ │ │ │ │ ├── custom.libsonnet │ │ │ │ │ │ ├── datasource.libsonnet │ │ │ │ │ │ └── query.libsonnet │ │ │ │ └── grafonnet │ │ │ │ │ ├── alert_condition.libsonnet │ │ │ │ │ ├── alertlist.libsonnet │ │ │ │ │ ├── annotation.libsonnet │ │ │ │ │ ├── bar_gauge_panel.libsonnet │ │ │ │ │ ├── cloudmonitoring.libsonnet │ │ │ │ │ ├── cloudwatch.libsonnet │ │ │ │ │ ├── dashboard.libsonnet │ │ │ │ │ ├── dashlist.libsonnet │ │ │ │ │ ├── elasticsearch.libsonnet │ │ │ │ │ ├── gauge_panel.libsonnet │ │ │ │ │ ├── grafana.libsonnet │ │ │ │ │ ├── graph_panel.libsonnet │ │ │ │ │ ├── graphite.libsonnet │ │ │ │ │ ├── heatmap_panel.libsonnet │ │ │ │ │ ├── influxdb.libsonnet │ │ │ │ │ ├── link.libsonnet │ │ │ │ │ ├── log_panel.libsonnet │ │ │ │ │ ├── loki.libsonnet │ │ │ │ │ ├── pie_chart_panel.libsonnet │ │ │ │ │ ├── pluginlist.libsonnet │ │ │ │ │ ├── prometheus.libsonnet │ │ │ │ │ ├── row.libsonnet │ │ │ │ │ ├── singlestat.libsonnet │ │ │ │ │ ├── sql.libsonnet │ │ │ │ │ ├── stat_panel.libsonnet │ │ │ │ │ ├── table_panel.libsonnet │ │ │ │ │ ├── template.libsonnet │ │ │ │ │ ├── text.libsonnet │ │ │ │ │ ├── timepicker.libsonnet │ │ │ │ │ └── transformation.libsonnet │ │ │ └── jsonnet-libs │ │ │ │ ├── alertmanager │ │ │ │ ├── alertmanager.libsonnet │ │ │ │ ├── config.libsonnet │ │ │ │ ├── files │ │ │ │ │ └── alertmanager_config.tmpl │ │ │ │ ├── images.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── receivers.libsonnet │ │ │ │ ├── receivers │ │ │ │ │ ├── pagerduty.libsonnet │ │ │ │ │ └── slack.libsonnet │ │ │ │ └── slack.libsonnet │ │ │ │ ├── grafana-builder │ │ │ │ └── grafana.libsonnet │ │ │ │ ├── grafana │ │ │ │ ├── README.md │ │ │ │ ├── config.libsonnet │ │ │ │ ├── configmaps.libsonnet │ │ │ │ ├── dashboards.libsonnet │ │ │ │ ├── datasources.libsonnet │ │ │ │ ├── deployment.libsonnet │ │ │ │ ├── example │ │ │ │ │ ├── simple │ │ │ │ │ │ ├── dashboard-simple.libsonnet │ │ │ │ │ │ └── main.jsonnet │ │ │ │ │ └── tanka │ │ │ │ │ │ ├── environments │ │ │ │ │ │ └── default │ │ │ │ │ │ │ ├── dashboards.libsonnet │ │ │ │ │ │ │ ├── dashboards │ │ │ │ │ │ │ └── nyc.json │ │ │ │ │ │ │ ├── datasources.libsonnet │ │ │ │ │ │ │ ├── main.jsonnet │ │ │ │ │ │ │ ├── mixins.libsonnet │ │ │ │ │ │ │ └── spec.json │ │ │ │ │ │ ├── jsonnetfile.json │ │ │ │ │ │ └── lib │ │ │ │ │ │ └── k.libsonnet │ │ │ │ ├── grafana.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ └── notifications.libsonnet │ │ │ │ ├── ksonnet-util │ │ │ │ ├── grafana.libsonnet │ │ │ │ ├── k-compat.libsonnet │ │ │ │ ├── kausal.libsonnet │ │ │ │ ├── legacy-custom.libsonnet │ │ │ │ ├── legacy-noname.libsonnet │ │ │ │ ├── legacy-subtypes.libsonnet │ │ │ │ ├── legacy-types.libsonnet │ │ │ │ └── util.libsonnet │ │ │ │ ├── kube-state-metrics │ │ │ │ ├── README.md │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── main.libsonnet │ │ │ │ └── scrape_config.libsonnet │ │ │ │ ├── mixin-utils │ │ │ │ └── utils.libsonnet │ │ │ │ ├── nginx-directory │ │ │ │ ├── config.libsonnet │ │ │ │ ├── configfile.libsonnet │ │ │ │ ├── directory.libsonnet │ │ │ │ ├── files │ │ │ │ │ ├── index.html │ │ │ │ │ ├── link.html │ │ │ │ │ └── nginx.conf │ │ │ │ ├── jsonnetfile.json │ │ │ │ └── link_data.libsonnet │ │ │ │ ├── node-exporter │ │ │ │ ├── README.md │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── main.libsonnet │ │ │ │ └── scrape_config.libsonnet │ │ │ │ ├── oauth2-proxy │ │ │ │ ├── jsonnetfile.json │ │ │ │ └── oauth2-proxy.libsonnet │ │ │ │ ├── prometheus-ksonnet │ │ │ │ ├── README.md │ │ │ │ ├── grafana │ │ │ │ │ ├── admin-services.libsonnet │ │ │ │ │ ├── config.libsonnet │ │ │ │ │ ├── dashboards.libsonnet │ │ │ │ │ ├── datasources.libsonnet │ │ │ │ │ ├── deployment.libsonnet │ │ │ │ │ ├── grafana.libsonnet │ │ │ │ │ └── notifications.libsonnet │ │ │ │ ├── images.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── lib │ │ │ │ │ ├── alertmanager.libsonnet │ │ │ │ │ ├── config.libsonnet │ │ │ │ │ ├── datasources.libsonnet │ │ │ │ │ ├── files │ │ │ │ │ │ └── alertmanager_config.tmpl │ │ │ │ │ ├── kube-state-metrics.libsonnet │ │ │ │ │ ├── node-exporter.libsonnet │ │ │ │ │ ├── prometheus-config-kops.libsonnet │ │ │ │ │ ├── prometheus-config.libsonnet │ │ │ │ │ ├── prometheus-ha-mixin.libsonnet │ │ │ │ │ └── prometheus.libsonnet │ │ │ │ ├── mixins.libsonnet │ │ │ │ └── prometheus-ksonnet.libsonnet │ │ │ │ └── prometheus │ │ │ │ ├── config.libsonnet │ │ │ │ ├── ha-mixin.libsonnet │ │ │ │ ├── images.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── mixins.libsonnet │ │ │ │ ├── prometheus.libsonnet │ │ │ │ └── scrape_configs.libsonnet │ │ ├── jsonnet-libs │ │ │ └── k8s-libsonnet │ │ │ │ └── 1.20 │ │ │ │ ├── _custom │ │ │ │ ├── apps.libsonnet │ │ │ │ ├── autoscaling.libsonnet │ │ │ │ ├── batch.libsonnet │ │ │ │ ├── core.libsonnet │ │ │ │ ├── list.libsonnet │ │ │ │ ├── mapContainers.libsonnet │ │ │ │ ├── rbac.libsonnet │ │ │ │ └── volumeMounts.libsonnet │ │ │ │ ├── _gen │ │ │ │ ├── admissionregistration │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── mutatingWebhook.libsonnet │ │ │ │ │ │ ├── mutatingWebhookConfiguration.libsonnet │ │ │ │ │ │ ├── ruleWithOperations.libsonnet │ │ │ │ │ │ ├── serviceReference.libsonnet │ │ │ │ │ │ ├── validatingWebhook.libsonnet │ │ │ │ │ │ ├── validatingWebhookConfiguration.libsonnet │ │ │ │ │ │ └── webhookClientConfig.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── mutatingWebhook.libsonnet │ │ │ │ │ │ ├── mutatingWebhookConfiguration.libsonnet │ │ │ │ │ │ ├── ruleWithOperations.libsonnet │ │ │ │ │ │ ├── serviceReference.libsonnet │ │ │ │ │ │ ├── validatingWebhook.libsonnet │ │ │ │ │ │ ├── validatingWebhookConfiguration.libsonnet │ │ │ │ │ │ └── webhookClientConfig.libsonnet │ │ │ │ ├── apiregistration │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── apiService.libsonnet │ │ │ │ │ │ ├── apiServiceCondition.libsonnet │ │ │ │ │ │ ├── apiServiceSpec.libsonnet │ │ │ │ │ │ ├── apiServiceStatus.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ └── serviceReference.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── apiService.libsonnet │ │ │ │ │ │ ├── apiServiceCondition.libsonnet │ │ │ │ │ │ ├── apiServiceSpec.libsonnet │ │ │ │ │ │ ├── apiServiceStatus.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ └── serviceReference.libsonnet │ │ │ │ ├── apiserverinternal │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1alpha1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── serverStorageVersion.libsonnet │ │ │ │ │ │ ├── storageVersion.libsonnet │ │ │ │ │ │ ├── storageVersionCondition.libsonnet │ │ │ │ │ │ ├── storageVersionSpec.libsonnet │ │ │ │ │ │ └── storageVersionStatus.libsonnet │ │ │ │ ├── apps │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── controllerRevision.libsonnet │ │ │ │ │ │ ├── daemonSet.libsonnet │ │ │ │ │ │ ├── daemonSetCondition.libsonnet │ │ │ │ │ │ ├── daemonSetSpec.libsonnet │ │ │ │ │ │ ├── daemonSetStatus.libsonnet │ │ │ │ │ │ ├── daemonSetUpdateStrategy.libsonnet │ │ │ │ │ │ ├── deployment.libsonnet │ │ │ │ │ │ ├── deploymentCondition.libsonnet │ │ │ │ │ │ ├── deploymentSpec.libsonnet │ │ │ │ │ │ ├── deploymentStatus.libsonnet │ │ │ │ │ │ ├── deploymentStrategy.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── replicaSet.libsonnet │ │ │ │ │ │ ├── replicaSetCondition.libsonnet │ │ │ │ │ │ ├── replicaSetSpec.libsonnet │ │ │ │ │ │ ├── replicaSetStatus.libsonnet │ │ │ │ │ │ ├── rollingUpdateDaemonSet.libsonnet │ │ │ │ │ │ ├── rollingUpdateDeployment.libsonnet │ │ │ │ │ │ ├── rollingUpdateStatefulSetStrategy.libsonnet │ │ │ │ │ │ ├── statefulSet.libsonnet │ │ │ │ │ │ ├── statefulSetCondition.libsonnet │ │ │ │ │ │ ├── statefulSetSpec.libsonnet │ │ │ │ │ │ ├── statefulSetStatus.libsonnet │ │ │ │ │ │ └── statefulSetUpdateStrategy.libsonnet │ │ │ │ ├── authentication │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── boundObjectReference.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── tokenRequest.libsonnet │ │ │ │ │ │ ├── tokenRequestSpec.libsonnet │ │ │ │ │ │ ├── tokenRequestStatus.libsonnet │ │ │ │ │ │ ├── tokenReview.libsonnet │ │ │ │ │ │ ├── tokenReviewSpec.libsonnet │ │ │ │ │ │ ├── tokenReviewStatus.libsonnet │ │ │ │ │ │ └── userInfo.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── tokenReview.libsonnet │ │ │ │ │ │ ├── tokenReviewSpec.libsonnet │ │ │ │ │ │ ├── tokenReviewStatus.libsonnet │ │ │ │ │ │ └── userInfo.libsonnet │ │ │ │ ├── authorization │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── localSubjectAccessReview.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── nonResourceAttributes.libsonnet │ │ │ │ │ │ ├── nonResourceRule.libsonnet │ │ │ │ │ │ ├── resourceAttributes.libsonnet │ │ │ │ │ │ ├── resourceRule.libsonnet │ │ │ │ │ │ ├── selfSubjectAccessReview.libsonnet │ │ │ │ │ │ ├── selfSubjectAccessReviewSpec.libsonnet │ │ │ │ │ │ ├── selfSubjectRulesReview.libsonnet │ │ │ │ │ │ ├── selfSubjectRulesReviewSpec.libsonnet │ │ │ │ │ │ ├── subjectAccessReview.libsonnet │ │ │ │ │ │ ├── subjectAccessReviewSpec.libsonnet │ │ │ │ │ │ ├── subjectAccessReviewStatus.libsonnet │ │ │ │ │ │ └── subjectRulesReviewStatus.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── localSubjectAccessReview.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── nonResourceAttributes.libsonnet │ │ │ │ │ │ ├── nonResourceRule.libsonnet │ │ │ │ │ │ ├── resourceAttributes.libsonnet │ │ │ │ │ │ ├── resourceRule.libsonnet │ │ │ │ │ │ ├── selfSubjectAccessReview.libsonnet │ │ │ │ │ │ ├── selfSubjectAccessReviewSpec.libsonnet │ │ │ │ │ │ ├── selfSubjectRulesReview.libsonnet │ │ │ │ │ │ ├── selfSubjectRulesReviewSpec.libsonnet │ │ │ │ │ │ ├── subjectAccessReview.libsonnet │ │ │ │ │ │ ├── subjectAccessReviewSpec.libsonnet │ │ │ │ │ │ ├── subjectAccessReviewStatus.libsonnet │ │ │ │ │ │ └── subjectRulesReviewStatus.libsonnet │ │ │ │ ├── autoscaling │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── crossVersionObjectReference.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscaler.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerSpec.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerStatus.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── scale.libsonnet │ │ │ │ │ │ ├── scaleSpec.libsonnet │ │ │ │ │ │ └── scaleStatus.libsonnet │ │ │ │ │ ├── v2beta1 │ │ │ │ │ │ ├── containerResourceMetricSource.libsonnet │ │ │ │ │ │ ├── containerResourceMetricStatus.libsonnet │ │ │ │ │ │ ├── crossVersionObjectReference.libsonnet │ │ │ │ │ │ ├── externalMetricSource.libsonnet │ │ │ │ │ │ ├── externalMetricStatus.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscaler.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerCondition.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerSpec.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerStatus.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── metricSpec.libsonnet │ │ │ │ │ │ ├── metricStatus.libsonnet │ │ │ │ │ │ ├── objectMetricSource.libsonnet │ │ │ │ │ │ ├── objectMetricStatus.libsonnet │ │ │ │ │ │ ├── podsMetricSource.libsonnet │ │ │ │ │ │ ├── podsMetricStatus.libsonnet │ │ │ │ │ │ ├── resourceMetricSource.libsonnet │ │ │ │ │ │ └── resourceMetricStatus.libsonnet │ │ │ │ │ └── v2beta2 │ │ │ │ │ │ ├── containerResourceMetricSource.libsonnet │ │ │ │ │ │ ├── containerResourceMetricStatus.libsonnet │ │ │ │ │ │ ├── crossVersionObjectReference.libsonnet │ │ │ │ │ │ ├── externalMetricSource.libsonnet │ │ │ │ │ │ ├── externalMetricStatus.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscaler.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerBehavior.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerCondition.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerSpec.libsonnet │ │ │ │ │ │ ├── horizontalPodAutoscalerStatus.libsonnet │ │ │ │ │ │ ├── hpaScalingPolicy.libsonnet │ │ │ │ │ │ ├── hpaScalingRules.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── metricIdentifier.libsonnet │ │ │ │ │ │ ├── metricSpec.libsonnet │ │ │ │ │ │ ├── metricStatus.libsonnet │ │ │ │ │ │ ├── metricTarget.libsonnet │ │ │ │ │ │ ├── metricValueStatus.libsonnet │ │ │ │ │ │ ├── objectMetricSource.libsonnet │ │ │ │ │ │ ├── objectMetricStatus.libsonnet │ │ │ │ │ │ ├── podsMetricSource.libsonnet │ │ │ │ │ │ ├── podsMetricStatus.libsonnet │ │ │ │ │ │ ├── resourceMetricSource.libsonnet │ │ │ │ │ │ └── resourceMetricStatus.libsonnet │ │ │ │ ├── batch │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── job.libsonnet │ │ │ │ │ │ ├── jobCondition.libsonnet │ │ │ │ │ │ ├── jobSpec.libsonnet │ │ │ │ │ │ ├── jobStatus.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ │ ├── v1beta1 │ │ │ │ │ │ ├── cronJob.libsonnet │ │ │ │ │ │ ├── cronJobSpec.libsonnet │ │ │ │ │ │ ├── cronJobStatus.libsonnet │ │ │ │ │ │ ├── jobTemplateSpec.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ ├── cronJob.libsonnet │ │ │ │ │ │ ├── cronJobSpec.libsonnet │ │ │ │ │ │ ├── cronJobStatus.libsonnet │ │ │ │ │ │ ├── jobTemplateSpec.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── certificates │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── certificateSigningRequest.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestCondition.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestSpec.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestStatus.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── certificateSigningRequest.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestCondition.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestSpec.libsonnet │ │ │ │ │ │ ├── certificateSigningRequestStatus.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── coordination │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── lease.libsonnet │ │ │ │ │ │ ├── leaseSpec.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── lease.libsonnet │ │ │ │ │ │ ├── leaseSpec.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── core │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── affinity.libsonnet │ │ │ │ │ │ ├── attachedVolume.libsonnet │ │ │ │ │ │ ├── awsElasticBlockStoreVolumeSource.libsonnet │ │ │ │ │ │ ├── azureDiskVolumeSource.libsonnet │ │ │ │ │ │ ├── azureFilePersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── azureFileVolumeSource.libsonnet │ │ │ │ │ │ ├── binding.libsonnet │ │ │ │ │ │ ├── capabilities.libsonnet │ │ │ │ │ │ ├── cephFSPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── cephFSVolumeSource.libsonnet │ │ │ │ │ │ ├── cinderPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── cinderVolumeSource.libsonnet │ │ │ │ │ │ ├── clientIPConfig.libsonnet │ │ │ │ │ │ ├── componentCondition.libsonnet │ │ │ │ │ │ ├── componentStatus.libsonnet │ │ │ │ │ │ ├── configMap.libsonnet │ │ │ │ │ │ ├── configMapEnvSource.libsonnet │ │ │ │ │ │ ├── configMapKeySelector.libsonnet │ │ │ │ │ │ ├── configMapNodeConfigSource.libsonnet │ │ │ │ │ │ ├── configMapProjection.libsonnet │ │ │ │ │ │ ├── configMapVolumeSource.libsonnet │ │ │ │ │ │ ├── container.libsonnet │ │ │ │ │ │ ├── containerImage.libsonnet │ │ │ │ │ │ ├── containerPort.libsonnet │ │ │ │ │ │ ├── containerState.libsonnet │ │ │ │ │ │ ├── containerStateRunning.libsonnet │ │ │ │ │ │ ├── containerStateTerminated.libsonnet │ │ │ │ │ │ ├── containerStateWaiting.libsonnet │ │ │ │ │ │ ├── containerStatus.libsonnet │ │ │ │ │ │ ├── csiPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── csiVolumeSource.libsonnet │ │ │ │ │ │ ├── daemonEndpoint.libsonnet │ │ │ │ │ │ ├── downwardAPIProjection.libsonnet │ │ │ │ │ │ ├── downwardAPIVolumeFile.libsonnet │ │ │ │ │ │ ├── downwardAPIVolumeSource.libsonnet │ │ │ │ │ │ ├── emptyDirVolumeSource.libsonnet │ │ │ │ │ │ ├── endpointAddress.libsonnet │ │ │ │ │ │ ├── endpointPort.libsonnet │ │ │ │ │ │ ├── endpointSubset.libsonnet │ │ │ │ │ │ ├── endpoints.libsonnet │ │ │ │ │ │ ├── envFromSource.libsonnet │ │ │ │ │ │ ├── envVar.libsonnet │ │ │ │ │ │ ├── envVarSource.libsonnet │ │ │ │ │ │ ├── ephemeralContainer.libsonnet │ │ │ │ │ │ ├── ephemeralVolumeSource.libsonnet │ │ │ │ │ │ ├── event.libsonnet │ │ │ │ │ │ ├── eventSeries.libsonnet │ │ │ │ │ │ ├── eventSource.libsonnet │ │ │ │ │ │ ├── execAction.libsonnet │ │ │ │ │ │ ├── fcVolumeSource.libsonnet │ │ │ │ │ │ ├── flexPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── flexVolumeSource.libsonnet │ │ │ │ │ │ ├── flockerVolumeSource.libsonnet │ │ │ │ │ │ ├── gcePersistentDiskVolumeSource.libsonnet │ │ │ │ │ │ ├── gitRepoVolumeSource.libsonnet │ │ │ │ │ │ ├── glusterfsPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── glusterfsVolumeSource.libsonnet │ │ │ │ │ │ ├── handler.libsonnet │ │ │ │ │ │ ├── hostAlias.libsonnet │ │ │ │ │ │ ├── hostPathVolumeSource.libsonnet │ │ │ │ │ │ ├── httpGetAction.libsonnet │ │ │ │ │ │ ├── httpHeader.libsonnet │ │ │ │ │ │ ├── iscsiPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── iscsiVolumeSource.libsonnet │ │ │ │ │ │ ├── keyToPath.libsonnet │ │ │ │ │ │ ├── lifecycle.libsonnet │ │ │ │ │ │ ├── limitRange.libsonnet │ │ │ │ │ │ ├── limitRangeItem.libsonnet │ │ │ │ │ │ ├── limitRangeSpec.libsonnet │ │ │ │ │ │ ├── loadBalancerIngress.libsonnet │ │ │ │ │ │ ├── loadBalancerStatus.libsonnet │ │ │ │ │ │ ├── localObjectReference.libsonnet │ │ │ │ │ │ ├── localVolumeSource.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── namespace.libsonnet │ │ │ │ │ │ ├── namespaceCondition.libsonnet │ │ │ │ │ │ ├── namespaceSpec.libsonnet │ │ │ │ │ │ ├── namespaceStatus.libsonnet │ │ │ │ │ │ ├── nfsVolumeSource.libsonnet │ │ │ │ │ │ ├── node.libsonnet │ │ │ │ │ │ ├── nodeAddress.libsonnet │ │ │ │ │ │ ├── nodeAffinity.libsonnet │ │ │ │ │ │ ├── nodeCondition.libsonnet │ │ │ │ │ │ ├── nodeConfigSource.libsonnet │ │ │ │ │ │ ├── nodeConfigStatus.libsonnet │ │ │ │ │ │ ├── nodeDaemonEndpoints.libsonnet │ │ │ │ │ │ ├── nodeSelector.libsonnet │ │ │ │ │ │ ├── nodeSelectorRequirement.libsonnet │ │ │ │ │ │ ├── nodeSelectorTerm.libsonnet │ │ │ │ │ │ ├── nodeSpec.libsonnet │ │ │ │ │ │ ├── nodeStatus.libsonnet │ │ │ │ │ │ ├── nodeSystemInfo.libsonnet │ │ │ │ │ │ ├── objectFieldSelector.libsonnet │ │ │ │ │ │ ├── objectReference.libsonnet │ │ │ │ │ │ ├── persistentVolume.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaim.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaimCondition.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaimSpec.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaimStatus.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaimTemplate.libsonnet │ │ │ │ │ │ ├── persistentVolumeClaimVolumeSource.libsonnet │ │ │ │ │ │ ├── persistentVolumeSpec.libsonnet │ │ │ │ │ │ ├── persistentVolumeStatus.libsonnet │ │ │ │ │ │ ├── photonPersistentDiskVolumeSource.libsonnet │ │ │ │ │ │ ├── pod.libsonnet │ │ │ │ │ │ ├── podAffinity.libsonnet │ │ │ │ │ │ ├── podAffinityTerm.libsonnet │ │ │ │ │ │ ├── podAntiAffinity.libsonnet │ │ │ │ │ │ ├── podCondition.libsonnet │ │ │ │ │ │ ├── podDNSConfig.libsonnet │ │ │ │ │ │ ├── podDNSConfigOption.libsonnet │ │ │ │ │ │ ├── podIP.libsonnet │ │ │ │ │ │ ├── podReadinessGate.libsonnet │ │ │ │ │ │ ├── podSecurityContext.libsonnet │ │ │ │ │ │ ├── podSpec.libsonnet │ │ │ │ │ │ ├── podStatus.libsonnet │ │ │ │ │ │ ├── podTemplate.libsonnet │ │ │ │ │ │ ├── podTemplateSpec.libsonnet │ │ │ │ │ │ ├── portStatus.libsonnet │ │ │ │ │ │ ├── portworxVolumeSource.libsonnet │ │ │ │ │ │ ├── preferredSchedulingTerm.libsonnet │ │ │ │ │ │ ├── probe.libsonnet │ │ │ │ │ │ ├── projectedVolumeSource.libsonnet │ │ │ │ │ │ ├── quobyteVolumeSource.libsonnet │ │ │ │ │ │ ├── rbdPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── rbdVolumeSource.libsonnet │ │ │ │ │ │ ├── replicationController.libsonnet │ │ │ │ │ │ ├── replicationControllerCondition.libsonnet │ │ │ │ │ │ ├── replicationControllerSpec.libsonnet │ │ │ │ │ │ ├── replicationControllerStatus.libsonnet │ │ │ │ │ │ ├── resourceFieldSelector.libsonnet │ │ │ │ │ │ ├── resourceQuota.libsonnet │ │ │ │ │ │ ├── resourceQuotaSpec.libsonnet │ │ │ │ │ │ ├── resourceQuotaStatus.libsonnet │ │ │ │ │ │ ├── resourceRequirements.libsonnet │ │ │ │ │ │ ├── scaleIOPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── scaleIOVolumeSource.libsonnet │ │ │ │ │ │ ├── scopeSelector.libsonnet │ │ │ │ │ │ ├── scopedResourceSelectorRequirement.libsonnet │ │ │ │ │ │ ├── seLinuxOptions.libsonnet │ │ │ │ │ │ ├── seccompProfile.libsonnet │ │ │ │ │ │ ├── secret.libsonnet │ │ │ │ │ │ ├── secretEnvSource.libsonnet │ │ │ │ │ │ ├── secretKeySelector.libsonnet │ │ │ │ │ │ ├── secretProjection.libsonnet │ │ │ │ │ │ ├── secretReference.libsonnet │ │ │ │ │ │ ├── secretVolumeSource.libsonnet │ │ │ │ │ │ ├── securityContext.libsonnet │ │ │ │ │ │ ├── service.libsonnet │ │ │ │ │ │ ├── serviceAccount.libsonnet │ │ │ │ │ │ ├── serviceAccountTokenProjection.libsonnet │ │ │ │ │ │ ├── servicePort.libsonnet │ │ │ │ │ │ ├── serviceSpec.libsonnet │ │ │ │ │ │ ├── serviceStatus.libsonnet │ │ │ │ │ │ ├── sessionAffinityConfig.libsonnet │ │ │ │ │ │ ├── storageOSPersistentVolumeSource.libsonnet │ │ │ │ │ │ ├── storageOSVolumeSource.libsonnet │ │ │ │ │ │ ├── sysctl.libsonnet │ │ │ │ │ │ ├── taint.libsonnet │ │ │ │ │ │ ├── tcpSocketAction.libsonnet │ │ │ │ │ │ ├── toleration.libsonnet │ │ │ │ │ │ ├── topologySelectorLabelRequirement.libsonnet │ │ │ │ │ │ ├── topologySelectorTerm.libsonnet │ │ │ │ │ │ ├── topologySpreadConstraint.libsonnet │ │ │ │ │ │ ├── typedLocalObjectReference.libsonnet │ │ │ │ │ │ ├── volume.libsonnet │ │ │ │ │ │ ├── volumeDevice.libsonnet │ │ │ │ │ │ ├── volumeMount.libsonnet │ │ │ │ │ │ ├── volumeNodeAffinity.libsonnet │ │ │ │ │ │ ├── volumeProjection.libsonnet │ │ │ │ │ │ ├── vsphereVirtualDiskVolumeSource.libsonnet │ │ │ │ │ │ ├── weightedPodAffinityTerm.libsonnet │ │ │ │ │ │ └── windowsSecurityContextOptions.libsonnet │ │ │ │ ├── discovery │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── endpoint.libsonnet │ │ │ │ │ │ ├── endpointConditions.libsonnet │ │ │ │ │ │ ├── endpointPort.libsonnet │ │ │ │ │ │ ├── endpointSlice.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── events │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── event.libsonnet │ │ │ │ │ │ ├── eventSeries.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── event.libsonnet │ │ │ │ │ │ ├── eventSeries.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── extensions │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── httpIngressPath.libsonnet │ │ │ │ │ │ ├── httpIngressRuleValue.libsonnet │ │ │ │ │ │ ├── ingress.libsonnet │ │ │ │ │ │ ├── ingressBackend.libsonnet │ │ │ │ │ │ ├── ingressRule.libsonnet │ │ │ │ │ │ ├── ingressSpec.libsonnet │ │ │ │ │ │ ├── ingressStatus.libsonnet │ │ │ │ │ │ ├── ingressTLS.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── flowcontrol │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1alpha1 │ │ │ │ │ │ ├── flowDistinguisherMethod.libsonnet │ │ │ │ │ │ ├── flowSchema.libsonnet │ │ │ │ │ │ ├── flowSchemaCondition.libsonnet │ │ │ │ │ │ ├── flowSchemaSpec.libsonnet │ │ │ │ │ │ ├── flowSchemaStatus.libsonnet │ │ │ │ │ │ ├── groupSubject.libsonnet │ │ │ │ │ │ ├── limitResponse.libsonnet │ │ │ │ │ │ ├── limitedPriorityLevelConfiguration.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── nonResourcePolicyRule.libsonnet │ │ │ │ │ │ ├── policyRulesWithSubjects.libsonnet │ │ │ │ │ │ ├── priorityLevelConfiguration.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationCondition.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationReference.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationSpec.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationStatus.libsonnet │ │ │ │ │ │ ├── queuingConfiguration.libsonnet │ │ │ │ │ │ ├── resourcePolicyRule.libsonnet │ │ │ │ │ │ ├── serviceAccountSubject.libsonnet │ │ │ │ │ │ ├── subject.libsonnet │ │ │ │ │ │ └── userSubject.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── flowDistinguisherMethod.libsonnet │ │ │ │ │ │ ├── flowSchema.libsonnet │ │ │ │ │ │ ├── flowSchemaCondition.libsonnet │ │ │ │ │ │ ├── flowSchemaSpec.libsonnet │ │ │ │ │ │ ├── flowSchemaStatus.libsonnet │ │ │ │ │ │ ├── groupSubject.libsonnet │ │ │ │ │ │ ├── limitResponse.libsonnet │ │ │ │ │ │ ├── limitedPriorityLevelConfiguration.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── nonResourcePolicyRule.libsonnet │ │ │ │ │ │ ├── policyRulesWithSubjects.libsonnet │ │ │ │ │ │ ├── priorityLevelConfiguration.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationCondition.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationReference.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationSpec.libsonnet │ │ │ │ │ │ ├── priorityLevelConfigurationStatus.libsonnet │ │ │ │ │ │ ├── queuingConfiguration.libsonnet │ │ │ │ │ │ ├── resourcePolicyRule.libsonnet │ │ │ │ │ │ ├── serviceAccountSubject.libsonnet │ │ │ │ │ │ ├── subject.libsonnet │ │ │ │ │ │ └── userSubject.libsonnet │ │ │ │ ├── meta │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── apiGroup.libsonnet │ │ │ │ │ │ ├── apiGroupList.libsonnet │ │ │ │ │ │ ├── apiResource.libsonnet │ │ │ │ │ │ ├── apiResourceList.libsonnet │ │ │ │ │ │ ├── apiVersions.libsonnet │ │ │ │ │ │ ├── condition.libsonnet │ │ │ │ │ │ ├── deleteOptions.libsonnet │ │ │ │ │ │ ├── fieldsV1.libsonnet │ │ │ │ │ │ ├── groupVersionForDiscovery.libsonnet │ │ │ │ │ │ ├── labelSelector.libsonnet │ │ │ │ │ │ ├── labelSelectorRequirement.libsonnet │ │ │ │ │ │ ├── listMeta.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── managedFieldsEntry.libsonnet │ │ │ │ │ │ ├── microTime.libsonnet │ │ │ │ │ │ ├── objectMeta.libsonnet │ │ │ │ │ │ ├── ownerReference.libsonnet │ │ │ │ │ │ ├── patch.libsonnet │ │ │ │ │ │ ├── preconditions.libsonnet │ │ │ │ │ │ ├── serverAddressByClientCIDR.libsonnet │ │ │ │ │ │ ├── statusCause.libsonnet │ │ │ │ │ │ ├── statusDetails.libsonnet │ │ │ │ │ │ ├── time.libsonnet │ │ │ │ │ │ └── watchEvent.libsonnet │ │ │ │ ├── networking │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── httpIngressPath.libsonnet │ │ │ │ │ │ ├── httpIngressRuleValue.libsonnet │ │ │ │ │ │ ├── ingress.libsonnet │ │ │ │ │ │ ├── ingressBackend.libsonnet │ │ │ │ │ │ ├── ingressClass.libsonnet │ │ │ │ │ │ ├── ingressClassSpec.libsonnet │ │ │ │ │ │ ├── ingressRule.libsonnet │ │ │ │ │ │ ├── ingressServiceBackend.libsonnet │ │ │ │ │ │ ├── ingressSpec.libsonnet │ │ │ │ │ │ ├── ingressStatus.libsonnet │ │ │ │ │ │ ├── ingressTLS.libsonnet │ │ │ │ │ │ ├── ipBlock.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── networkPolicy.libsonnet │ │ │ │ │ │ ├── networkPolicyEgressRule.libsonnet │ │ │ │ │ │ ├── networkPolicyIngressRule.libsonnet │ │ │ │ │ │ ├── networkPolicyPeer.libsonnet │ │ │ │ │ │ ├── networkPolicyPort.libsonnet │ │ │ │ │ │ ├── networkPolicySpec.libsonnet │ │ │ │ │ │ └── serviceBackendPort.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── httpIngressPath.libsonnet │ │ │ │ │ │ ├── httpIngressRuleValue.libsonnet │ │ │ │ │ │ ├── ingress.libsonnet │ │ │ │ │ │ ├── ingressBackend.libsonnet │ │ │ │ │ │ ├── ingressClass.libsonnet │ │ │ │ │ │ ├── ingressClassSpec.libsonnet │ │ │ │ │ │ ├── ingressRule.libsonnet │ │ │ │ │ │ ├── ingressSpec.libsonnet │ │ │ │ │ │ ├── ingressStatus.libsonnet │ │ │ │ │ │ ├── ingressTLS.libsonnet │ │ │ │ │ │ └── main.libsonnet │ │ │ │ ├── node │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── overhead.libsonnet │ │ │ │ │ │ ├── runtimeClass.libsonnet │ │ │ │ │ │ └── scheduling.libsonnet │ │ │ │ │ ├── v1alpha1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── overhead.libsonnet │ │ │ │ │ │ ├── runtimeClass.libsonnet │ │ │ │ │ │ ├── runtimeClassSpec.libsonnet │ │ │ │ │ │ └── scheduling.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── overhead.libsonnet │ │ │ │ │ │ ├── runtimeClass.libsonnet │ │ │ │ │ │ └── scheduling.libsonnet │ │ │ │ ├── policy │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── allowedCSIDriver.libsonnet │ │ │ │ │ │ ├── allowedFlexVolume.libsonnet │ │ │ │ │ │ ├── allowedHostPath.libsonnet │ │ │ │ │ │ ├── eviction.libsonnet │ │ │ │ │ │ ├── fsGroupStrategyOptions.libsonnet │ │ │ │ │ │ ├── hostPortRange.libsonnet │ │ │ │ │ │ ├── idRange.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── podDisruptionBudget.libsonnet │ │ │ │ │ │ ├── podDisruptionBudgetSpec.libsonnet │ │ │ │ │ │ ├── podDisruptionBudgetStatus.libsonnet │ │ │ │ │ │ ├── podSecurityPolicy.libsonnet │ │ │ │ │ │ ├── podSecurityPolicySpec.libsonnet │ │ │ │ │ │ ├── runAsGroupStrategyOptions.libsonnet │ │ │ │ │ │ ├── runAsUserStrategyOptions.libsonnet │ │ │ │ │ │ ├── runtimeClassStrategyOptions.libsonnet │ │ │ │ │ │ ├── seLinuxStrategyOptions.libsonnet │ │ │ │ │ │ └── supplementalGroupsStrategyOptions.libsonnet │ │ │ │ ├── rbac │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── aggregationRule.libsonnet │ │ │ │ │ │ ├── clusterRole.libsonnet │ │ │ │ │ │ ├── clusterRoleBinding.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── policyRule.libsonnet │ │ │ │ │ │ ├── role.libsonnet │ │ │ │ │ │ ├── roleBinding.libsonnet │ │ │ │ │ │ ├── roleRef.libsonnet │ │ │ │ │ │ └── subject.libsonnet │ │ │ │ │ ├── v1alpha1 │ │ │ │ │ │ ├── aggregationRule.libsonnet │ │ │ │ │ │ ├── clusterRole.libsonnet │ │ │ │ │ │ ├── clusterRoleBinding.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── policyRule.libsonnet │ │ │ │ │ │ ├── role.libsonnet │ │ │ │ │ │ ├── roleBinding.libsonnet │ │ │ │ │ │ ├── roleRef.libsonnet │ │ │ │ │ │ └── subject.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── aggregationRule.libsonnet │ │ │ │ │ │ ├── clusterRole.libsonnet │ │ │ │ │ │ ├── clusterRoleBinding.libsonnet │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ ├── policyRule.libsonnet │ │ │ │ │ │ ├── role.libsonnet │ │ │ │ │ │ ├── roleBinding.libsonnet │ │ │ │ │ │ ├── roleRef.libsonnet │ │ │ │ │ │ └── subject.libsonnet │ │ │ │ ├── scheduling │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ └── priorityClass.libsonnet │ │ │ │ │ ├── v1alpha1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ └── priorityClass.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ │ └── priorityClass.libsonnet │ │ │ │ └── storage │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── v1 │ │ │ │ │ ├── csiDriver.libsonnet │ │ │ │ │ ├── csiDriverSpec.libsonnet │ │ │ │ │ ├── csiNode.libsonnet │ │ │ │ │ ├── csiNodeDriver.libsonnet │ │ │ │ │ ├── csiNodeSpec.libsonnet │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── storageClass.libsonnet │ │ │ │ │ ├── tokenRequest.libsonnet │ │ │ │ │ ├── volumeAttachment.libsonnet │ │ │ │ │ ├── volumeAttachmentSource.libsonnet │ │ │ │ │ ├── volumeAttachmentSpec.libsonnet │ │ │ │ │ ├── volumeAttachmentStatus.libsonnet │ │ │ │ │ ├── volumeError.libsonnet │ │ │ │ │ └── volumeNodeResources.libsonnet │ │ │ │ │ ├── v1alpha1 │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── volumeAttachment.libsonnet │ │ │ │ │ ├── volumeAttachmentSource.libsonnet │ │ │ │ │ ├── volumeAttachmentSpec.libsonnet │ │ │ │ │ ├── volumeAttachmentStatus.libsonnet │ │ │ │ │ └── volumeError.libsonnet │ │ │ │ │ └── v1beta1 │ │ │ │ │ ├── csiDriver.libsonnet │ │ │ │ │ ├── csiDriverSpec.libsonnet │ │ │ │ │ ├── csiNode.libsonnet │ │ │ │ │ ├── csiNodeDriver.libsonnet │ │ │ │ │ ├── csiNodeSpec.libsonnet │ │ │ │ │ ├── main.libsonnet │ │ │ │ │ ├── storageClass.libsonnet │ │ │ │ │ ├── tokenRequest.libsonnet │ │ │ │ │ ├── volumeAttachment.libsonnet │ │ │ │ │ ├── volumeAttachmentSource.libsonnet │ │ │ │ │ ├── volumeAttachmentSpec.libsonnet │ │ │ │ │ ├── volumeAttachmentStatus.libsonnet │ │ │ │ │ ├── volumeError.libsonnet │ │ │ │ │ └── volumeNodeResources.libsonnet │ │ │ │ ├── gen.libsonnet │ │ │ │ └── main.libsonnet │ │ ├── kubernetes-monitoring │ │ │ └── kubernetes-mixin │ │ │ │ ├── .github │ │ │ │ └── workflows │ │ │ │ │ └── ci.yaml │ │ │ │ ├── .gitignore │ │ │ │ ├── .lint │ │ │ │ ├── LICENSE │ │ │ │ ├── Makefile │ │ │ │ ├── OWNERS │ │ │ │ ├── README.md │ │ │ │ ├── SECURITY_CONTACTS │ │ │ │ ├── alerts │ │ │ │ ├── alerts.libsonnet │ │ │ │ ├── apps_alerts.libsonnet │ │ │ │ ├── kube_apiserver.libsonnet │ │ │ │ ├── kube_controller_manager.libsonnet │ │ │ │ ├── kube_proxy.libsonnet │ │ │ │ ├── kube_scheduler.libsonnet │ │ │ │ ├── kubelet.libsonnet │ │ │ │ ├── resource_alerts.libsonnet │ │ │ │ ├── storage_alerts.libsonnet │ │ │ │ └── system_alerts.libsonnet │ │ │ │ ├── config.libsonnet │ │ │ │ ├── dashboards │ │ │ │ ├── apiserver.libsonnet │ │ │ │ ├── controller-manager.libsonnet │ │ │ │ ├── dashboards.libsonnet │ │ │ │ ├── defaults.libsonnet │ │ │ │ ├── kubelet.libsonnet │ │ │ │ ├── network-usage │ │ │ │ │ ├── cluster-total.libsonnet │ │ │ │ │ ├── namespace-by-pod.libsonnet │ │ │ │ │ ├── namespace-by-workload.libsonnet │ │ │ │ │ ├── pod-total.libsonnet │ │ │ │ │ └── workload-total.libsonnet │ │ │ │ ├── network.libsonnet │ │ │ │ ├── persistentvolumesusage.libsonnet │ │ │ │ ├── proxy.libsonnet │ │ │ │ ├── resources.libsonnet │ │ │ │ ├── resources │ │ │ │ │ ├── cluster.libsonnet │ │ │ │ │ ├── multi-cluster.libsonnet │ │ │ │ │ ├── namespace.libsonnet │ │ │ │ │ ├── node.libsonnet │ │ │ │ │ ├── pod.libsonnet │ │ │ │ │ ├── workload-namespace.libsonnet │ │ │ │ │ └── workload.libsonnet │ │ │ │ ├── scheduler.libsonnet │ │ │ │ └── windows.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ ├── lib │ │ │ │ ├── absent_alert.libsonnet │ │ │ │ ├── add-runbook-links.libsonnet │ │ │ │ ├── alerts.jsonnet │ │ │ │ ├── dashboards.jsonnet │ │ │ │ ├── promgrafonnet │ │ │ │ │ ├── gauge.libsonnet │ │ │ │ │ ├── numbersinglestat.libsonnet │ │ │ │ │ └── promgrafonnet.libsonnet │ │ │ │ ├── rules.jsonnet │ │ │ │ └── utils.libsonnet │ │ │ │ ├── mixin.libsonnet │ │ │ │ ├── rules │ │ │ │ ├── apps.libsonnet │ │ │ │ ├── kube_apiserver.libsonnet │ │ │ │ ├── kube_scheduler.libsonnet │ │ │ │ ├── kubelet.libsonnet │ │ │ │ ├── node.libsonnet │ │ │ │ ├── rules.libsonnet │ │ │ │ └── windows.libsonnet │ │ │ │ ├── runbook.md │ │ │ │ ├── scripts │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ └── tools.go │ │ │ │ └── tests.yaml │ │ ├── prometheus │ │ │ ├── alertmanager │ │ │ │ └── doc │ │ │ │ │ └── alertmanager-mixin │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .lint │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README.md │ │ │ │ │ ├── alerts.jsonnet │ │ │ │ │ ├── alerts.libsonnet │ │ │ │ │ ├── config.libsonnet │ │ │ │ │ ├── dashboards.jsonnet │ │ │ │ │ ├── dashboards.libsonnet │ │ │ │ │ ├── dashboards │ │ │ │ │ └── overview.libsonnet │ │ │ │ │ ├── jsonnetfile.json │ │ │ │ │ ├── jsonnetfile.lock.json │ │ │ │ │ └── mixin.libsonnet │ │ │ ├── node_exporter │ │ │ │ └── docs │ │ │ │ │ └── node-mixin │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README.md │ │ │ │ │ ├── alerts.jsonnet │ │ │ │ │ ├── alerts │ │ │ │ │ └── alerts.libsonnet │ │ │ │ │ ├── config.libsonnet │ │ │ │ │ ├── dashboards.jsonnet │ │ │ │ │ ├── dashboards │ │ │ │ │ ├── dashboards.libsonnet │ │ │ │ │ ├── node.libsonnet │ │ │ │ │ └── use.libsonnet │ │ │ │ │ ├── jsonnetfile.json │ │ │ │ │ ├── lib │ │ │ │ │ └── prom-mixin.libsonnet │ │ │ │ │ ├── mixin.libsonnet │ │ │ │ │ ├── rules.jsonnet │ │ │ │ │ └── rules │ │ │ │ │ └── rules.libsonnet │ │ │ └── prometheus │ │ │ │ └── documentation │ │ │ │ └── prometheus-mixin │ │ │ │ ├── .gitignore │ │ │ │ ├── Makefile │ │ │ │ ├── README.md │ │ │ │ ├── alerts.jsonnet │ │ │ │ ├── alerts.libsonnet │ │ │ │ ├── config.libsonnet │ │ │ │ ├── dashboards.jsonnet │ │ │ │ ├── dashboards.libsonnet │ │ │ │ ├── jsonnetfile.json │ │ │ │ └── mixin.libsonnet │ │ └── rfrail3 │ │ │ └── grafana-dashboards │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── prometheus │ │ │ ├── bind9-full.json │ │ │ ├── haproxy-2-full.json │ │ │ ├── haproxy-full.json │ │ │ ├── nfs-full.json │ │ │ ├── node-exporter-freebsd.json │ │ │ ├── node-exporter-full-old.json │ │ │ └── node-exporter-full.json │ │ ├── grafana │ │ ├── grafana-builder │ │ ├── grafana-dashboards │ │ ├── grafana-mixin │ │ ├── grafonnet │ │ ├── grafonnet-7.0 │ │ ├── ksonnet-util │ │ ├── kube-state-metrics │ │ ├── kubernetes-mixin │ │ ├── mixin-utils │ │ ├── nginx-directory │ │ ├── node-exporter │ │ ├── node-mixin │ │ ├── oauth2-proxy │ │ ├── prometheus │ │ ├── prometheus-ksonnet │ │ └── prometheus-mixin ├── upgrade-alpine-version.sh ├── upgrade-go-version.sh └── yaml-to-json │ └── main.go ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | public/build/** 2 | scripts/** 3 | pkg/api/static/** 4 | **/dist 5 | .eslintrc.js 6 | jest.config.js 7 | cypress/** 8 | cypress.config.ts 9 | testSetupFile.js 10 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for Phlare. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | #### Is your feature request related to a problem? Please describe. 11 | 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | #### Describe the solution you'd like 15 | 16 | A clear and concise description of what you want to happen. 17 | 18 | #### Describe alternatives you've considered 19 | 20 | A clear and concise description of any alternative solutions or features you've considered. 21 | 22 | #### Additional context 23 | 24 | Add any other context or screenshots about the feature request here. 25 | -------------------------------------------------------------------------------- /.github/workflows/helm-ci.yml: -------------------------------------------------------------------------------- 1 | name: helm-ci 2 | 3 | on: pull_request 4 | 5 | jobs: 6 | call-lint: 7 | uses: grafana/helm-charts/.github/workflows/linter.yml@main 8 | with: 9 | filter_regex_include: .*operations/phlare/helm/.* 10 | 11 | call-lint-test: 12 | uses: grafana/helm-charts/.github/workflows/lint-test.yaml@main 13 | with: 14 | ct_configfile: operations/phlare/helm/ct.yaml 15 | ct_check_version_increment: false 16 | helm_version: v3.8.2 17 | -------------------------------------------------------------------------------- /.github/workflows/helm-release.yml: -------------------------------------------------------------------------------- 1 | name: helm-release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - "release-[0-9]+.[0-9]+" 8 | 9 | jobs: 10 | call-update-helm-repo: 11 | uses: grafana/helm-charts/.github/workflows/update-helm-repo.yaml@main 12 | with: 13 | charts_dir: operations/phlare/helm/ 14 | cr_configfile: operations/phlare/helm/cr.yaml 15 | ct_configfile: operations/phlare/helm/ct.yaml 16 | secrets: 17 | helm_repo_token: ${{ secrets.GH_BOT_ACCESS_TOKEN }} 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | bin 3 | /phlare 4 | /profilecli 5 | # Test binary, built with `go test -c` 6 | *.test 7 | # Output of the go coverage tool, specifically when used with LiteIDE 8 | *.out 9 | 10 | /cmd/phlare/data 11 | pyroscope-sync/ 12 | data/ 13 | .DS_Store 14 | **/dist 15 | 16 | # IDE 17 | .idea 18 | .vscode 19 | 20 | # Frontend 21 | public/build 22 | cypress/screenshots 23 | .eslintcache 24 | node_modules 25 | /grafana/flamegraph/coverage/ 26 | # Yarn 27 | **/.yarn/* 28 | !**/.yarn/patches 29 | !**/.yarn/releases 30 | !**/.yarn/plugins 31 | !**/.yarn/sdks 32 | !**/.yarn/versions 33 | .pnp.* 34 | yarn-error.log 35 | 36 | # Contains the docker image id for phlare 37 | /.docker-image-id-phlare 38 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | public/build/** 2 | pkg/api/static/** 3 | vendor/** 4 | tools/** 5 | operations/** 6 | api/** 7 | data/** 8 | **/dist 9 | **/testdata 10 | *.md 11 | *.yaml 12 | *.yml 13 | *.html 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { "singleQuote": true } 2 | -------------------------------------------------------------------------------- /LICENSING.md: -------------------------------------------------------------------------------- 1 | # Licensing 2 | 3 | License names used in this document are as per [SPDX License List](https://spdx.org/licenses/). 4 | 5 | The default license for this project is [AGPL-3.0-only](LICENSE). 6 | 7 | ## Vendored code 8 | 9 | The following directories and their subdirectories are under the original upstream licenses, all of them ship the entire license text they are under. 10 | 11 | ``` 12 | vendor/ 13 | ``` 14 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | The following are the main/default maintainers: 2 | 3 | - Christian Simon — [@simonswine](https://github.com/simonswine) ([Grafana Labs](https://grafana.com/)) 4 | - Cyril Tovena — [@cyriltovena](https://github.com/cyriltovena) ([Grafana Labs](https://grafana.com/)) 5 | 6 | Some parts of the codebase have other maintainers, the package paths also include all sub-packages: 7 | 8 | - `docs`: 9 | - Eve Meelan - [@](https://github.com/) ([Grafana Labs](https://grafana.com/)) 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Grafana Phlare is archived 2 | 3 | On 2023-03-15, [Grafana Labs acquired Pyroscope](https://grafana.com/blog/2023/03/15/pyroscope-grafana-phlare-join-for-oss-continuous-profiling/). 4 | 5 | As a result, Grafana Labs Phlare has been archived. 6 | 7 | All future development will happen in [Grafana Pyroscope](https://github.com/grafana/pyroscope). 8 | -------------------------------------------------------------------------------- /api/buf.lock: -------------------------------------------------------------------------------- 1 | # Generated by buf. DO NOT EDIT. 2 | version: v1 3 | deps: 4 | - remote: buf.build 5 | owner: googleapis 6 | repository: googleapis 7 | commit: 8d7204855ec14631a499bd7393ce1970 8 | - remote: buf.build 9 | owner: grpc-ecosystem 10 | repository: grpc-gateway 11 | commit: bc28b723cd774c32b6fbc77621518765 12 | -------------------------------------------------------------------------------- /api/buf.work.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | directories: 3 | - . 4 | -------------------------------------------------------------------------------- /api/buf.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | lint: 3 | use: 4 | - DEFAULT 5 | breaking: 6 | use: 7 | - FILE 8 | deps: 9 | - buf.build/googleapis/googleapis 10 | - buf.build/grpc-ecosystem/grpc-gateway 11 | -------------------------------------------------------------------------------- /api/storegateway/v1/storegateway.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package storegateway.v1; 4 | 5 | import "google/v1/profile.proto"; 6 | import "ingester/v1/ingester.proto"; 7 | import "push/v1/push.proto"; 8 | import "types/v1/types.proto"; 9 | 10 | service StoreGatewayService { 11 | rpc MergeProfilesStacktraces(stream ingester.v1.MergeProfilesStacktracesRequest) returns (stream ingester.v1.MergeProfilesStacktracesResponse) {} 12 | rpc MergeProfilesLabels(stream ingester.v1.MergeProfilesLabelsRequest) returns (stream ingester.v1.MergeProfilesLabelsResponse) {} 13 | rpc MergeProfilesPprof(stream ingester.v1.MergeProfilesPprofRequest) returns (stream ingester.v1.MergeProfilesPprofResponse) {} 14 | } 15 | -------------------------------------------------------------------------------- /cmd/phlare/.dockerignore: -------------------------------------------------------------------------------- 1 | */grafana/ 2 | */.github/ 3 | **/bin/ 4 | */deploy/ 5 | */.vscode/ 6 | **/data/ 7 | -------------------------------------------------------------------------------- /cmd/phlare/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.17.4 2 | 3 | RUN apk add --no-cache ca-certificates 4 | 5 | COPY cmd/phlare/phlare.yaml /etc/phlare/config.yaml 6 | COPY profilecli /usr/bin/profilecli 7 | COPY phlare /usr/bin/phlare 8 | 9 | RUN addgroup -g 10001 -S phlare && \ 10 | adduser -u 10001 -S phlare -G phlare 11 | RUN mkdir -p /data && \ 12 | chown -R phlare:phlare /data 13 | VOLUME /data 14 | 15 | USER phlare 16 | EXPOSE 4100 17 | ENTRYPOINT [ "/usr/bin/phlare" ] 18 | CMD ["-config.file=/etc/phlare/config.yaml"] 19 | -------------------------------------------------------------------------------- /cmd/phlare/debug.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang as builder 2 | 3 | WORKDIR /app 4 | FROM alpine:3.17.4 5 | 6 | RUN apk add --no-cache ca-certificates 7 | 8 | COPY .tmp/bin/linux_amd64/dlv /usr/bin/dlv 9 | 10 | COPY cmd/phlare/phlare.yaml /etc/phlare/config.yaml 11 | COPY profilecli /usr/bin/profilecli 12 | COPY phlare /usr/bin/phlare 13 | 14 | RUN addgroup -g 10001 -S phlare && \ 15 | adduser -u 10001 -S phlare -G phlare 16 | RUN mkdir -p /data && \ 17 | chown -R phlare:phlare /data 18 | VOLUME /data 19 | 20 | USER phlare 21 | EXPOSE 4100 22 | ENTRYPOINT ["/usr/bin/dlv", "--listen=:40000", "--headless=true", "--log", "--continue", "--accept-multiclient" , "--api-version=2", "exec", "/usr/bin/phlare", "--"] 23 | CMD ["-config.file=/etc/phlare/config.yaml"] 24 | -------------------------------------------------------------------------------- /cmd/phlare/phlare.yaml: -------------------------------------------------------------------------------- 1 | server: 2 | http_listen_port: 4100 3 | 4 | scrape_configs: 5 | - job_name: "default" 6 | scrape_interval: "15s" 7 | static_configs: 8 | - targets: ["127.0.0.1:4100"] 9 | labels: 10 | service_name: "pyroscope" 11 | -------------------------------------------------------------------------------- /cmd/profilecli/my.pprof: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/cmd/profilecli/my.pprof -------------------------------------------------------------------------------- /cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | baseUrl: 'http://localhost:4040', 6 | video: false, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /cypress/ci-base-path.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | baseUrl: 'http://localhost:8080/foobar/ui/', 6 | env: { 7 | apiBasePath: '/foobar', 8 | }, 9 | video: false, 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /cypress/ci.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | baseUrl: 'http://localhost:4100/ui/', 6 | video: false, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /cypress/fixtures/profileTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "memory:alloc_objects:count::", 3 | "memory:alloc_space:bytes::", 4 | "memory:inuse_objects:count::", 5 | "memory:inuse_space:bytes::", 6 | "process_cpu:cpu:nanoseconds:cpu:nanoseconds" 7 | ] 8 | -------------------------------------------------------------------------------- /cypress/support/e2e.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/e2e.ts is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | -------------------------------------------------------------------------------- /cypress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "lib": ["es2015", "dom"], 5 | "types": ["cypress", "@testing-library/cypress"] 6 | }, 7 | "include": ["**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | .DEFAULT_GOAL: help 2 | 3 | # Adapted from https://www.thapaliya.com/en/writings/well-documented-makefiles/ 4 | .PHONY: help 5 | help: ## Display this help. 6 | help: 7 | @awk 'BEGIN {FS = ": ##"; printf "Usage:\n make \n\nTargets:\n"} /^[a-zA-Z0-9_\.\-\/%]+: ##/ { printf " %-45s %s\n", $$1, $$2 }' $(MAKEFILE_LIST) 8 | 9 | include docs.mk 10 | 11 | .PHONY: test 12 | test: 13 | 14 | .PHONY: test 15 | test: 16 | docker run -v $(CURDIR)/sources:/hugo/content/docs/phlare/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'exec make hugo' 17 | 18 | .PHONY: validate 19 | validate: 20 | docker run -v $(CURDIR)/sources:/docs/sources --rm grafana/doc-validator:v1.5.0 /docs/sources 21 | -------------------------------------------------------------------------------- /docs/sources/configure-client/phlare-agent-server-diag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/configure-client/phlare-agent-server-diag.png -------------------------------------------------------------------------------- /docs/sources/configure-server/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: 3 | - /docs/phlare/latest/operators-guide/configuring/ 4 | - /docs/phlare/latest/operators-guide/configure/ 5 | description: This section provides links to Grafana Phlare server configuration topics. 6 | keywords: 7 | - Phlare server configuration 8 | menuTitle: Configure the Server 9 | title: Configure Grafana Phlare Server 10 | weight: 40 11 | --- 12 | 13 | # Configure Grafana Phlare Server 14 | 15 | Grafana Phlare's server is built to be horizontally scalable and to support organizations of all sizes. 16 | 17 | {{< section menuTitle="true" >}} 18 | -------------------------------------------------------------------------------- /docs/sources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/logo.png -------------------------------------------------------------------------------- /docs/sources/reference-http-api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: 3 | - /docs/phlare/latest/operators-guide/reference-http-api/ 4 | title: "Reference: Grafana Phlare HTTP API" 5 | menuTitle: "Reference: HTTP API" 6 | description: "Use the HTTP API to write and query profiles data and operate a Grafana Phlare cluster." 7 | weight: 80 8 | keywords: 9 | - Phlare API 10 | - Phlare endpoints 11 | - Phlare communication 12 | - Phlare querying 13 | --- 14 | 15 | # Reference: Grafana Phlare HTTP API 16 | 17 | Coming soon 18 | -------------------------------------------------------------------------------- /docs/sources/reference-learning-resources/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: 3 | - /docs/phlare/latest/operators-guide/reference-learning-resources/ 4 | title: "Reference: Learning resources" 5 | menuTitle: "Reference: Learning resources" 6 | description: "Blog posts, podcasts, and videos about Grafana Phlare" 7 | weight: 90 8 | keywords: 9 | - Grafana Phlare blog posts, podcasts, and videos 10 | --- 11 | 12 | # Reference: Learning resources 13 | 14 | To learn more about Grafana Phlare, see the following resources: 15 | -------------------------------------------------------------------------------- /docs/sources/reference-phlare-architecture/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Grafana Phlare architecture" 3 | menuTitle: "Reference: Phlare Architecture" 4 | description: "Learn about the Grafana Phlare architecture components and services." 5 | weight: 60 6 | --- 7 | 8 | # Grafana Phlare architecture 9 | 10 | The following topics include overviews of the Grafana Phlare architecture. 11 | 12 | {{< section menuTitle="true" >}} 13 | -------------------------------------------------------------------------------- /docs/sources/reference-phlare-architecture/components/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Grafana Phlare components" 3 | menuTitle: "Components" 4 | description: "Grafana Phlare includes a set of components that interact to form a cluster." 5 | weight: 30 6 | keywords: 7 | - Phlare components 8 | - Phlare compactor 9 | - Phlare distributor 10 | - Phlare ingester 11 | - Phlare querier 12 | - Phlare query-frontend 13 | - Phlare store-gateway 14 | - Phlare overrides-exporter 15 | - Phlare query-scheduler 16 | - Phlare ruler 17 | --- 18 | 19 | # Grafana Phlare components 20 | 21 | Grafana Phlare includes a set of components that interact to form a cluster. 22 | 23 | {{< section menuTitle="true" >}} 24 | -------------------------------------------------------------------------------- /docs/sources/reference-phlare-architecture/components/query-scheduler/query-scheduler-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/reference-phlare-architecture/components/query-scheduler/query-scheduler-architecture.png -------------------------------------------------------------------------------- /docs/sources/reference-phlare-architecture/hash-ring/hash-ring-with-replication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/reference-phlare-architecture/hash-ring/hash-ring-with-replication.png -------------------------------------------------------------------------------- /docs/sources/reference-phlare-architecture/hash-ring/hash-ring-without-replication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/reference-phlare-architecture/hash-ring/hash-ring-without-replication.png -------------------------------------------------------------------------------- /docs/sources/release-notes/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Grafana Phlare release notes" 3 | menuTitle: "Release notes" 4 | description: "Release notes for all versions of Grafana Phlare." 5 | weight: 10 6 | keywords: 7 | - Grafana Phlare release notes 8 | --- 9 | 10 | # Grafana Phlare release notes 11 | 12 | {{< section menuTitle="true" >}} 13 | -------------------------------------------------------------------------------- /docs/sources/release-notes/v0.1/phlare-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/release-notes/v0.1/phlare-logo.png -------------------------------------------------------------------------------- /docs/sources/release-notes/v0.1/phlare-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/release-notes/v0.1/phlare-ui.png -------------------------------------------------------------------------------- /docs/sources/ui.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/docs/sources/ui.webm -------------------------------------------------------------------------------- /ebpf/bpf/Makefile: -------------------------------------------------------------------------------- 1 | LIBBPF_VERSION=0.6.1 2 | LIBBPF_PREFIX="https://raw.githubusercontent.com/libbpf/libbpf/v$(LIBBPF_VERSION)" 3 | 4 | .PHONY: get-headers 5 | get-headers: get-libbpf-headers get-vmlinux-header 6 | 7 | .PHONY: get-libbpf-headers 8 | get-libbpf-headers: 9 | cd libbpf && \ 10 | curl -O $(LIBBPF_PREFIX)/src/bpf_endian.h && \ 11 | curl -O $(LIBBPF_PREFIX)/src/bpf_helper_defs.h && \ 12 | curl -O $(LIBBPF_PREFIX)/src/bpf_helpers.h && \ 13 | curl -O $(LIBBPF_PREFIX)/src/bpf_tracing.h 14 | 15 | .PHONY: get-vmlinux-header 16 | get-vmlinux-header: 17 | cd vmlinux && \ 18 | curl -o vmlinux.h https://raw.githubusercontent.com/iovisor/bcc/v0.27.0/libbpf-tools/x86/vmlinux_518.h 19 | 20 | .PHONY: clean 21 | clean: 22 | rm -rf libbpf/*.h vmlinux/*.h 23 | -------------------------------------------------------------------------------- /ebpf/bpf/libbpf/.dockerignore: -------------------------------------------------------------------------------- 1 | bpf_endian.h 2 | bpf_helper_defs.h 3 | bpf_helpers.h 4 | bpf_tracing.h 5 | -------------------------------------------------------------------------------- /ebpf/bpf/libbpf/.gitignore: -------------------------------------------------------------------------------- 1 | bpf_endian.h 2 | bpf_helper_defs.h 3 | bpf_helpers.h 4 | bpf_tracing.h 5 | -------------------------------------------------------------------------------- /ebpf/bpf/profile.bpf.h: -------------------------------------------------------------------------------- 1 | 2 | #define PERF_MAX_STACK_DEPTH 127 3 | #define PROFILE_MAPS_SIZE 16384 4 | 5 | 6 | struct sample_key { 7 | __u32 pid; 8 | __s64 kern_stack; 9 | __s64 user_stack; 10 | char comm[16]; 11 | }; 12 | 13 | struct bss_arg { 14 | __u32 tgid_filter; // 0 => profile everything 15 | __u8 collect_user; 16 | __u8 collect_kernel; 17 | }; 18 | -------------------------------------------------------------------------------- /ebpf/bpf/vmlinux/.dockerignore: -------------------------------------------------------------------------------- 1 | vmlinux.h 2 | -------------------------------------------------------------------------------- /ebpf/bpf/vmlinux/.gitignore: -------------------------------------------------------------------------------- 1 | vmlinux.h 2 | -------------------------------------------------------------------------------- /ebpf/profile_bpfeb.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/profile_bpfeb.o -------------------------------------------------------------------------------- /ebpf/profile_bpfel.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/profile_bpfel.o -------------------------------------------------------------------------------- /ebpf/sd/k8s.go: -------------------------------------------------------------------------------- 1 | package sd 2 | 3 | import "strings" 4 | 5 | var knownContainerIDPrefixes = []string{"docker://", "containerd://", "cri-o://"} 6 | 7 | // get container id from __meta_kubernetes_pod_container_id label 8 | func getContainerIDFromK8S(k8sContainerID string) containerID { 9 | for _, p := range knownContainerIDPrefixes { 10 | if strings.HasPrefix(k8sContainerID, p) { 11 | return containerID(strings.TrimPrefix(k8sContainerID, p)) 12 | } 13 | } 14 | return "" 15 | } 16 | -------------------------------------------------------------------------------- /ebpf/symtab/elf/symbol_table_test.go: -------------------------------------------------------------------------------- 1 | package elf 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | func TestName(t *testing.T) { 10 | name := NewName(0xef, 1) 11 | require.Equal(t, uint32(0xef), name.NameIndex()) 12 | require.Equal(t, SectionLinkIndex(1), name.LinkIndex()) 13 | } 14 | -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/.gitignore -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/Makefile: -------------------------------------------------------------------------------- 1 | 2 | .PHONY: testdata 3 | testdata: 4 | DOCKER_BUILDKIT=1 docker build . --output=. 5 | 6 | -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | gcc lib.c -o libexample.so -shared 5 | gcc src.c -o elf -lexample -L. -Wl,-rpath=. 6 | gcc src.c -no-pie -o elf.nopie -lexample -L. -Wl,-rpath=. 7 | objcopy --only-keep-debug elf elf.debug 8 | strip elf -o elf.stripped 9 | objcopy --add-gnu-debuglink=elf.debug elf.stripped elf.debuglink 10 | 11 | strip --remove-section .note.gnu.build-id elf.debuglink -o elf.debuglink 12 | objcopy --remove-section .note.gnu.build-id elf elf.nobuildid 13 | 14 | 15 | build_id=$(readelf -n elf | grep 'Build ID' | awk '{print $3}') 16 | dir=${build_id:0:2} 17 | file=${build_id:2} 18 | mkdir -p "/usr/lib/debug/.build-id/$dir" 19 | cp elf.debug "/usr/lib/debug/.build-id/$dir/$file.debug" -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf.debug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf.debug -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf.debuglink: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf.debuglink -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf.nobuildid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf.nobuildid -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf.nopie: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf.nopie -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/elf.stripped: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/elf.stripped -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go12 -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go12-static: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go12-static -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go16: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go16 -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go16-static: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go16-static -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go18 -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go18-static: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go18-static -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go20: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go20 -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/go20-static: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/go20-static -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/elfs/libexample.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/elfs/libexample.so -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/hello.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "fmt" 4 | 5 | func main() { 6 | fmt.Println("hello, world") 7 | } 8 | -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/lib.c: -------------------------------------------------------------------------------- 1 | 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | void lib_iter() { 9 | close(open("file", O_RDWR | O_TRUNC | O_CREAT, 0666)); 10 | } -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/src.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | 7 | void lib_iter(); 8 | 9 | void iter() { 10 | lib_iter(); 11 | } 12 | 13 | int main() { 14 | while (1) { 15 | iter(); 16 | } 17 | return 0; 18 | 19 | } -------------------------------------------------------------------------------- /ebpf/symtab/elf/testdata/usr/lib/debug/.build-id/1f/cfa068c5fdb9f31e6d9f3f89019beacb70182d.debug: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/ebpf/symtab/elf/testdata/usr/lib/debug/.build-id/1f/cfa068c5fdb9f31e6d9f3f89019beacb70182d.debug -------------------------------------------------------------------------------- /ebpf/symtab/elf_test.go: -------------------------------------------------------------------------------- 1 | package symtab 2 | 3 | import ( 4 | "github.com/grafana/phlare/ebpf/util" 5 | "testing" 6 | 7 | "github.com/stretchr/testify/require" 8 | ) 9 | 10 | func TestElf(t *testing.T) { 11 | elfCache, _ := NewElfCache(testCacheOptions, testCacheOptions) 12 | logger := util.TestLogger(t) 13 | tab := NewElfTable(logger, &ProcMap{StartAddr: 0x1000, Offset: 0x1000}, ".", "elf/testdata/elfs/elf", 14 | ElfTableOptions{ 15 | ElfCache: elfCache, 16 | }) 17 | 18 | syms := []struct { 19 | name string 20 | pc uint64 21 | }{ 22 | {"", 0x0}, 23 | {"iter", 0x1149}, 24 | {"main", 0x115e}, 25 | } 26 | for _, sym := range syms { 27 | res := tab.Resolve(sym.pc) 28 | require.Equal(t, res, sym.name) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ebpf/symtab/gosym.go: -------------------------------------------------------------------------------- 1 | package symtab 2 | -------------------------------------------------------------------------------- /ebpf/symtab/gosym_test.go: -------------------------------------------------------------------------------- 1 | package symtab 2 | -------------------------------------------------------------------------------- /ebpf/symtab/stat_darwin.go: -------------------------------------------------------------------------------- 1 | //go:build darwin 2 | 3 | package symtab 4 | 5 | import ( 6 | "os" 7 | "syscall" 8 | ) 9 | 10 | type Stat struct { 11 | Dev uint64 12 | Inode uint64 13 | } 14 | 15 | func statFromFileInfo(file os.FileInfo) Stat { 16 | sys := file.Sys() 17 | sysStat, ok := sys.(*syscall.Stat_t) 18 | if !ok || sysStat == nil { 19 | return Stat{} 20 | } 21 | return Stat{ 22 | Dev: uint64(sysStat.Dev), 23 | Inode: sysStat.Ino, 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ebpf/symtab/stat_linux.go: -------------------------------------------------------------------------------- 1 | //go:build linux 2 | 3 | package symtab 4 | 5 | import ( 6 | "os" 7 | "syscall" 8 | ) 9 | 10 | type Stat struct { 11 | Dev uint64 12 | Inode uint64 13 | } 14 | 15 | func statFromFileInfo(file os.FileInfo) Stat { 16 | sys := file.Sys() 17 | sysStat, ok := sys.(*syscall.Stat_t) 18 | if !ok || sysStat == nil { 19 | return Stat{} 20 | } 21 | return Stat{ 22 | Dev: sysStat.Dev, 23 | Inode: sysStat.Ino, 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ebpf/symtab/stat_placeholder.go: -------------------------------------------------------------------------------- 1 | //go:build !linux && !darwin 2 | 3 | package symtab 4 | 5 | import ( 6 | "os" 7 | ) 8 | 9 | type Stat struct { 10 | Dev uint64 11 | Ino uint64 12 | } 13 | 14 | func statFromFileInfo(file os.FileInfo) Stat { 15 | return Stat{} 16 | } 17 | -------------------------------------------------------------------------------- /ebpf/symtab/test_helper.go: -------------------------------------------------------------------------------- 1 | package symtab 2 | 3 | /* 4 | #include 5 | static size_t get_malloc__(){ 6 | return (size_t)malloc; 7 | } 8 | */ 9 | import "C" 10 | 11 | func testHelperGetMalloc() int { 12 | return int(C.get_malloc__()) 13 | } 14 | -------------------------------------------------------------------------------- /ebpf/util/test_logger.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "os" 5 | "testing" 6 | "time" 7 | 8 | "github.com/go-kit/log" 9 | ) 10 | 11 | // TestLogger generates a logger for a test. 12 | func TestLogger(t *testing.T) log.Logger { 13 | t.Helper() 14 | 15 | l := log.NewSyncLogger(log.NewLogfmtLogger(os.Stderr)) 16 | l = log.WithPrefix(l, 17 | "test", t.Name(), 18 | "ts", log.Valuer(testTimestamp), 19 | ) 20 | 21 | return l 22 | } 23 | 24 | // testTimestamp is a log.Valuer that returns the timestamp 25 | // without the date or timezone, reducing the noise in the test. 26 | func testTimestamp() interface{} { 27 | t := time.Now().UTC() 28 | return t.Format("15:04:05.000") 29 | } 30 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | We've compiled a set of examples using [docker-compose](../tools/docker-compose/) to help you get started with your language of choice. 4 | -------------------------------------------------------------------------------- /go.work: -------------------------------------------------------------------------------- 1 | go 1.19 2 | 3 | use ( 4 | . 5 | ./api 6 | ./ebpf 7 | ) 8 | -------------------------------------------------------------------------------- /images/grafana-profiles.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/images/grafana-profiles.gif -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/images/logo.png -------------------------------------------------------------------------------- /operations/phlare/helm/cr.yaml: -------------------------------------------------------------------------------- 1 | git-repo: helm-charts 2 | owner: grafana 3 | skip-existing: true 4 | -------------------------------------------------------------------------------- /operations/phlare/helm/ct.yaml: -------------------------------------------------------------------------------- 1 | # See https://github.com/helm/chart-testing#configuration 2 | remote: origin 3 | target-branch: main 4 | chart-dirs: 5 | - operations/phlare/helm/ 6 | chart-repos: 7 | - minio=https://charts.min.io/ 8 | - grafana=https://grafana.github.io/helm-charts 9 | helm-extra-args: --timeout 600s 10 | validate-maintainers: false 11 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: minio 3 | repository: https://charts.min.io/ 4 | version: 4.0.12 5 | digest: sha256:2afb1e2bfa6869e8e2acf3e2c092c02d3f48768a06031844f3e361c0826d02b1 6 | generated: "2022-10-25T13:53:35.413095103+01:00" 7 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: phlare 3 | description: 🔥 horizontally-scalable, highly-available, multi-tenant continuous profiling aggregation system 4 | type: application 5 | version: 0.5.4 6 | appVersion: 0.5.1 7 | dependencies: 8 | - name: minio 9 | alias: minio 10 | version: 4.0.12 11 | repository: https://charts.min.io/ 12 | condition: minio.enabled 13 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/charts/minio-4.0.12.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/operations/phlare/helm/phlare/charts/minio-4.0.12.tgz -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/ci/single-binary-values.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/clusterrole.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ .Release.Namespace }}-{{ include "phlare.fullname" . }} 6 | labels: 7 | {{- include "phlare.labels" . | nindent 4 }} 8 | rules: 9 | - apiGroups: 10 | - "" 11 | resources: 12 | - pods 13 | verbs: 14 | - list 15 | - watch 16 | - apiGroups: 17 | - "" 18 | resources: 19 | - nodes 20 | verbs: 21 | - get 22 | 23 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRoleBinding 4 | metadata: 5 | name: {{ .Release.Namespace }}-{{ include "phlare.fullname" . }} 6 | labels: 7 | {{- include "phlare.labels" . | nindent 4 }} 8 | roleRef: 9 | apiGroup: rbac.authorization.k8s.io 10 | kind: ClusterRole 11 | name: {{ .Release.Namespace }}-{{ include "phlare.fullname" . }} 12 | subjects: 13 | - kind: ServiceAccount 14 | name: {{ include "phlare.serviceAccountName" . }} 15 | namespace: {{ .Release.Namespace }} 16 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/configmap-overrides.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ include "phlare.fullname" . }}-overrides-config 5 | labels: 6 | {{- include "phlare.labels" . | nindent 4 }} 7 | data: 8 | overrides.yaml: | 9 | overrides: 10 | {{- toYaml .Values.phlare.tenantOverrides | nindent 6 }} 11 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ include "phlare.fullname" . }}-config 5 | labels: 6 | {{- include "phlare.labels" . | nindent 4 }} 7 | data: 8 | config.yaml: | 9 | {{- tpl (mergeOverwrite (tpl .Values.phlare.config . | fromYaml) .Values.phlare.structuredConfig | toYaml) . | nindent 4 }} 10 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/memberlist-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "phlare.fullname" . }}-memberlist 5 | labels: 6 | {{- include "phlare.labels" . | nindent 4 }} 7 | spec: 8 | type: ClusterIP 9 | clusterIP: None 10 | ports: 11 | - name: {{ .Values.phlare.memberlist.port_name }} 12 | port: {{ .Values.phlare.memberlist.port }} 13 | protocol: TCP 14 | targetPort: {{ .Values.phlare.memberlist.port }} 15 | publishNotReadyAddresses: true 16 | selector: 17 | {{- include "phlare.selectorLabels" . | nindent 4 }} 18 | # TODO: Ensure only services that offer memberlist register 19 | # phlare.grafana.com/memberlist: "true" 20 | -------------------------------------------------------------------------------- /operations/phlare/helm/phlare/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.phlare.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "phlare.serviceAccountName" . }} 6 | labels: 7 | {{- include "phlare.labels" . | nindent 4 }} 8 | {{- with .Values.phlare.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/README.md: -------------------------------------------------------------------------------- 1 | # Jsonnet for Grafana Phlare on Kubernetes 2 | 3 | This folder contains the Jsonnet for deploying Grafana Phlare in Kubernetes. 4 | The documentation for the Phlare Jsonnet is published at [https://grafana.com/docs/phlare/next/operators-guide/deploy-grafana-phlare/jsonnet/](https://grafana.com/docs/phlare/next/operators-guide/deploy-grafana-phlare/jsonnet/). 5 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/phlare-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/phlare-mixin/config.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | // Tags for dashboards. 4 | tags: ['phlare'], 5 | 6 | // The label used to differentiate between different application instances (i.e. 'pod' in a kubernetes install). 7 | per_instance_label: 'pod', 8 | 9 | // The label used to differentiate between different nodes (i.e. servers). 10 | per_node_label: 'instance', 11 | 12 | // The label used to differentiate between different clusters. 13 | per_cluster_label: 'cluster', 14 | // Add the mixin with support for multiple cluster 15 | multi_cluster: true, 16 | 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/phlare-mixin/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'config.libsonnet') + 2 | (import 'dashboards/phlare-writes.libsonnet') + 3 | (import 'dashboards/phlare-reads.libsonnet') 4 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/phlare-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'recording_rules.libsonnet') + 2 | (import 'dashboards.libsonnet') + { 3 | grafanaDashboardFolder: 'Phlare', 4 | } 5 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * Creates a [Loki target](https://grafana.com/docs/grafana/latest/datasources/loki/) 4 | * 5 | * @name loki.target 6 | * 7 | * @param expr 8 | * @param hide (optional) Disable query on graph. 9 | * @param legendFormat (optional) Defines the legend. Defaults to ''. 10 | */ 11 | target( 12 | expr, 13 | hide=null, 14 | legendFormat='', 15 | instant=null, 16 | ):: { 17 | [if hide != null then 'hide']: hide, 18 | expr: expr, 19 | legendFormat: legendFormat, 20 | [if instant != null then 'instant']: instant, 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * Creates an SQL target. 4 | * 5 | * @name sql.target 6 | * 7 | * @param rawSql The SQL query 8 | * @param datasource (optional) 9 | * @param format (default `'time_series'`) 10 | * @param alias (optional) 11 | */ 12 | target( 13 | rawSql, 14 | datasource=null, 15 | format='time_series', 16 | alias=null, 17 | ):: { 18 | [if datasource != null then 'datasource']: datasource, 19 | format: format, 20 | [if alias != null then 'alias']: alias, 21 | rawSql: rawSql, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * @name transformation.new 4 | */ 5 | new( 6 | id='', 7 | options={} 8 | ):: { 9 | id: id, 10 | options: options, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/grafana-builder: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/grafana-builder -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/grafonnet: -------------------------------------------------------------------------------- 1 | github.com/grafana/grafonnet-lib/grafonnet -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare-mixin/vendor/mixin-utils: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/mixin-utils -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "tanka-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare/jsonnetfile.lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "tanka-util" 9 | } 10 | }, 11 | "version": "9e9d5cddd4f02a25b9dec09a5910878a8ba8e045", 12 | "sum": "AGgjH6IJe/1qwNtxFIiG8V1uyOJZascEydQsNrfPQ4c=" 13 | }, 14 | { 15 | "source": { 16 | "git": { 17 | "remote": "https://github.com/jsonnet-libs/docsonnet.git", 18 | "subdir": "doc-util" 19 | } 20 | }, 21 | "version": "fedfb4920fae931a27190df0aeec5ef858daf3b5", 22 | "sum": "fzESn29CRKzLap9jTpcUNSNBy7MzvzOxZo1LYWyIrGs=" 23 | } 24 | ], 25 | "legacyImports": false 26 | } 27 | -------------------------------------------------------------------------------- /operations/phlare/jsonnet/phlare/phlare.libsonnet: -------------------------------------------------------------------------------- 1 | local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'; 2 | local helm = tanka.helm.new(std.thisFile); 3 | 4 | local defaults = { 5 | namespace: 'monitoring', 6 | phlare: { 7 | values: { 8 | persistence: { enabled: true }, 9 | }, 10 | }, 11 | }; 12 | 13 | { 14 | new(name='phlare', overrides={}):: 15 | helm.template(name, '../../helm/phlare', defaults + overrides), 16 | } 17 | -------------------------------------------------------------------------------- /pkg/agent/config_test.go: -------------------------------------------------------------------------------- 1 | package agent 2 | 3 | import ( 4 | "strings" 5 | "testing" 6 | 7 | parcaconfig "github.com/parca-dev/parca/pkg/config" 8 | "github.com/stretchr/testify/require" 9 | ) 10 | 11 | func TestValidate(t *testing.T) { 12 | cfg := &ScrapeConfig{ 13 | JobName: "foo", 14 | ProfilingConfig: &parcaconfig.ProfilingConfig{ 15 | PprofPrefix: "/prefix", 16 | }, 17 | } 18 | 19 | require.NoError(t, cfg.Validate()) 20 | 21 | require.Equal(t, len(parcaconfig.DefaultScrapeConfig().ProfilingConfig.PprofConfig), len(cfg.ProfilingConfig.PprofConfig)) 22 | for _, p := range cfg.ProfilingConfig.PprofConfig { 23 | require.True(t, strings.HasPrefix(p.Path, "/prefix")) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pkg/api/static/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/api/static/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /pkg/api/static/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/api/static/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /pkg/api/static/phlare-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/api/static/phlare-logo.png -------------------------------------------------------------------------------- /pkg/buf.gen.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | managed: 3 | enabled: true 4 | go_package_prefix: 5 | default: github.com/grafana/phlare/pkg/ 6 | except: 7 | - buf.build/googleapis/googleapis 8 | 9 | plugins: 10 | - name: go 11 | out: . 12 | opt: paths=source_relative 13 | 14 | - name: go-vtproto 15 | out: . 16 | opt: 17 | - paths=source_relative 18 | - features=marshal+unmarshal+size+pool+grpc+pool 19 | 20 | - name: connect-go 21 | out: . 22 | opt: paths=source_relative 23 | 24 | - name: connect-go-mux 25 | out: . 26 | opt: paths=source_relative 27 | -------------------------------------------------------------------------------- /pkg/buf.work.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | directories: 3 | - . 4 | -------------------------------------------------------------------------------- /pkg/buf.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | lint: 3 | use: 4 | - DEFAULT 5 | breaking: 6 | use: 7 | - FILE 8 | -------------------------------------------------------------------------------- /pkg/cfg/files_test.go: -------------------------------------------------------------------------------- 1 | package cfg 2 | 3 | import ( 4 | "flag" 5 | "testing" 6 | 7 | "github.com/grafana/dskit/flagext" 8 | "github.com/stretchr/testify/require" 9 | ) 10 | 11 | type testCfg struct { 12 | v int 13 | } 14 | 15 | func (cfg *testCfg) RegisterFlags(f *flag.FlagSet) { 16 | cfg.v++ 17 | } 18 | 19 | func (cfg *testCfg) Clone() flagext.Registerer { 20 | return func(cfg testCfg) flagext.Registerer { 21 | return &cfg 22 | }(*cfg) 23 | } 24 | 25 | func TestYAMLFlagDoesNotMutate(t *testing.T) { 26 | cfg := &testCfg{} 27 | err := YAMLFlag(nil, "something")(cfg) 28 | require.Nil(t, err) 29 | require.Equal(t, 0, cfg.v) 30 | 31 | cfg.RegisterFlags(nil) 32 | require.Equal(t, 1, cfg.v) 33 | } 34 | -------------------------------------------------------------------------------- /pkg/frontend/frontend_diff.go: -------------------------------------------------------------------------------- 1 | package frontend 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/bufbuild/connect-go" 7 | 8 | querierv1 "github.com/grafana/phlare/api/gen/proto/go/querier/v1" 9 | "github.com/grafana/phlare/pkg/util/connectgrpc" 10 | ) 11 | 12 | func (f *Frontend) Diff(ctx context.Context, c *connect.Request[querierv1.DiffRequest]) (*connect.Response[querierv1.DiffResponse], error) { 13 | return connectgrpc.RoundTripUnary[querierv1.DiffRequest, querierv1.DiffResponse](ctx, f, c) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/frontend/frontend_label_names.go: -------------------------------------------------------------------------------- 1 | package frontend 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/bufbuild/connect-go" 7 | 8 | typesv1 "github.com/grafana/phlare/api/gen/proto/go/types/v1" 9 | "github.com/grafana/phlare/pkg/util/connectgrpc" 10 | ) 11 | 12 | func (f *Frontend) LabelNames(ctx context.Context, c *connect.Request[typesv1.LabelNamesRequest]) (*connect.Response[typesv1.LabelNamesResponse], error) { 13 | return connectgrpc.RoundTripUnary[typesv1.LabelNamesRequest, typesv1.LabelNamesResponse](ctx, f, c) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/frontend/frontend_label_values.go: -------------------------------------------------------------------------------- 1 | package frontend 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/bufbuild/connect-go" 7 | 8 | typesv1 "github.com/grafana/phlare/api/gen/proto/go/types/v1" 9 | "github.com/grafana/phlare/pkg/util/connectgrpc" 10 | ) 11 | 12 | func (f *Frontend) LabelValues(ctx context.Context, c *connect.Request[typesv1.LabelValuesRequest]) (*connect.Response[typesv1.LabelValuesResponse], error) { 13 | return connectgrpc.RoundTripUnary[typesv1.LabelValuesRequest, typesv1.LabelValuesResponse](ctx, f, c) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/frontend/frontend_profile_types.go: -------------------------------------------------------------------------------- 1 | package frontend 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/bufbuild/connect-go" 7 | 8 | querierv1 "github.com/grafana/phlare/api/gen/proto/go/querier/v1" 9 | "github.com/grafana/phlare/pkg/util/connectgrpc" 10 | ) 11 | 12 | func (f *Frontend) ProfileTypes(ctx context.Context, c *connect.Request[querierv1.ProfileTypesRequest]) (*connect.Response[querierv1.ProfileTypesResponse], error) { 13 | return connectgrpc.RoundTripUnary[querierv1.ProfileTypesRequest, querierv1.ProfileTypesResponse](ctx, f, c) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/frontend/frontend_series.go: -------------------------------------------------------------------------------- 1 | package frontend 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/bufbuild/connect-go" 7 | 8 | querierv1 "github.com/grafana/phlare/api/gen/proto/go/querier/v1" 9 | "github.com/grafana/phlare/pkg/util/connectgrpc" 10 | ) 11 | 12 | func (f *Frontend) Series(ctx context.Context, c *connect.Request[querierv1.SeriesRequest]) (*connect.Response[querierv1.SeriesResponse], error) { 13 | return connectgrpc.RoundTripUnary[querierv1.SeriesRequest, querierv1.SeriesResponse](ctx, f, c) 14 | } 15 | -------------------------------------------------------------------------------- /pkg/iter/tree.go: -------------------------------------------------------------------------------- 1 | package iter 2 | 3 | import ( 4 | "github.com/grafana/phlare/pkg/util/loser" 5 | ) 6 | 7 | var _ Iterator[interface{}] = &TreeIterator[interface{}]{} 8 | 9 | type TreeIterator[T any] struct { 10 | *loser.Tree[T, Iterator[T]] 11 | } 12 | 13 | // NewTreeIterator returns an Iterator that iterates over the given loser tree iterator. 14 | func NewTreeIterator[T any](tree *loser.Tree[T, Iterator[T]]) *TreeIterator[T] { 15 | return &TreeIterator[T]{ 16 | Tree: tree, 17 | } 18 | } 19 | 20 | func (it TreeIterator[T]) At() T { 21 | return it.Tree.Winner().At() 22 | } 23 | 24 | func (it *TreeIterator[T]) Err() error { 25 | return it.Tree.Winner().Err() 26 | } 27 | 28 | func (it *TreeIterator[T]) Close() error { 29 | it.Tree.Close() 30 | return nil 31 | } 32 | -------------------------------------------------------------------------------- /pkg/model/testdata/stacktraces/1.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/model/testdata/stacktraces/1.pb -------------------------------------------------------------------------------- /pkg/model/testdata/stacktraces/2.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/model/testdata/stacktraces/2.pb -------------------------------------------------------------------------------- /pkg/model/testdata/stacktraces/3.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/model/testdata/stacktraces/3.pb -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/functions.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/functions.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/index.tsdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/index.tsdb -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/locations.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/locations.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/mappings.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/mappings.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/profiles.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/profiles.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/stacktraces.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/stacktraces.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/strings.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01GR3QABQB6J30Q04K4E6MAKRE/strings.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/functions.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/functions.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/index.tsdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/index.tsdb -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/locations.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/locations.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/mappings.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/mappings.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/profiles.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/profiles.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/strings.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/strings.parquet -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/symbols/index.symdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/symbols/index.symdb -------------------------------------------------------------------------------- /pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/symbols/stacktraces.symdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/block/testdata/01H3YE0W63FNXM69N2WVTRBYYK/symbols/stacktraces.symdb -------------------------------------------------------------------------------- /pkg/phlaredb/query/util.go: -------------------------------------------------------------------------------- 1 | package query 2 | 3 | import ( 4 | "strings" 5 | 6 | pq "github.com/segmentio/parquet-go" 7 | ) 8 | 9 | func GetColumnIndexByPath(pf *pq.File, s string) (index, depth int) { 10 | colSelector := strings.Split(s, ".") 11 | n := pf.Root() 12 | for len(colSelector) > 0 { 13 | n = n.Column(colSelector[0]) 14 | if n == nil { 15 | return -1, -1 16 | } 17 | 18 | colSelector = colSelector[1:] 19 | depth++ 20 | } 21 | 22 | return n.Index(), depth 23 | } 24 | 25 | func HasColumn(pf *pq.File, s string) bool { 26 | index, _ := GetColumnIndexByPath(pf, s) 27 | return index >= 0 28 | } 29 | -------------------------------------------------------------------------------- /pkg/phlaredb/symdb/stacktrace_tree_bench_test.go: -------------------------------------------------------------------------------- 1 | package symdb 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | 8 | "github.com/grafana/phlare/pkg/pprof" 9 | ) 10 | 11 | func Benchmark_stacktrace_tree_insert(b *testing.B) { 12 | p, err := pprof.OpenFile("testdata/profile.pb.gz") 13 | require.NoError(b, err) 14 | 15 | b.ResetTimer() 16 | b.ReportAllocs() 17 | 18 | for i := 0; i < b.N; i++ { 19 | x := newStacktraceTree(0) 20 | for j := range p.Sample { 21 | x.insert(p.Sample[j].LocationId) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pkg/phlaredb/symdb/testdata/profile.pb.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/symdb/testdata/profile.pb.gz -------------------------------------------------------------------------------- /pkg/phlaredb/testdata/heap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/testdata/heap -------------------------------------------------------------------------------- /pkg/phlaredb/testdata/profile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/testdata/profile -------------------------------------------------------------------------------- /pkg/phlaredb/testdata/profile_java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/testdata/profile_java -------------------------------------------------------------------------------- /pkg/phlaredb/testdata/profile_python: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/testdata/profile_python -------------------------------------------------------------------------------- /pkg/phlaredb/testdata/profile_uncompressed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/phlaredb/testdata/profile_uncompressed -------------------------------------------------------------------------------- /pkg/phlaredb/tsdb/index/pool.go: -------------------------------------------------------------------------------- 1 | package index 2 | 3 | import "sync" 4 | 5 | var ChunkMetasPool PoolChunkMetas 6 | 7 | type PoolChunkMetas struct { 8 | pool sync.Pool 9 | } 10 | 11 | func (p *PoolChunkMetas) Get() []ChunkMeta { 12 | if xs := p.pool.Get(); xs != nil { 13 | return xs.([]ChunkMeta) 14 | } 15 | return make([]ChunkMeta, 0, 1<<10) 16 | } 17 | 18 | func (p *PoolChunkMetas) Put(xs []ChunkMeta) { 19 | xs = xs[:0] 20 | //nolint:staticcheck 21 | p.pool.Put(xs) 22 | } 23 | -------------------------------------------------------------------------------- /pkg/phlaredb/tsdb/index/test_utils.go: -------------------------------------------------------------------------------- 1 | package index 2 | 3 | import ( 4 | phlaremodel "github.com/grafana/phlare/pkg/model" 5 | ) 6 | 7 | type indexWriterSeries struct { 8 | labels phlaremodel.Labels 9 | chunks []ChunkMeta // series file offset of chunks 10 | } 11 | 12 | type indexWriterSeriesSlice []*indexWriterSeries 13 | 14 | func (s indexWriterSeriesSlice) Len() int { return len(s) } 15 | func (s indexWriterSeriesSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } 16 | 17 | func (s indexWriterSeriesSlice) Less(i, j int) bool { 18 | return phlaremodel.CompareLabelPairs(s[i].labels, s[j].labels) < 0 19 | } 20 | -------------------------------------------------------------------------------- /pkg/pprof/testdata/heap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/pprof/testdata/heap -------------------------------------------------------------------------------- /pkg/pprof/testdata/profile_java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/pkg/pprof/testdata/profile_java -------------------------------------------------------------------------------- /pkg/querier/grpc_handler.go: -------------------------------------------------------------------------------- 1 | package querier 2 | 3 | import ( 4 | "github.com/grafana/phlare/api/gen/proto/go/querier/v1/querierv1connect" 5 | "github.com/grafana/phlare/pkg/util/connectgrpc" 6 | ) 7 | 8 | func NewGRPCHandler(svc querierv1connect.QuerierServiceHandler) connectgrpc.GRPCHandler { 9 | _, h := querierv1connect.NewQuerierServiceHandler(svc) 10 | return connectgrpc.NewHandler(h) 11 | } 12 | -------------------------------------------------------------------------------- /pkg/querier/grpc_roundtripper.go: -------------------------------------------------------------------------------- 1 | package querier 2 | 3 | import ( 4 | "github.com/bufbuild/connect-go" 5 | 6 | "github.com/grafana/phlare/api/gen/proto/go/querier/v1/querierv1connect" 7 | "github.com/grafana/phlare/pkg/util/connectgrpc" 8 | ) 9 | 10 | func NewGRPCRoundTripper(transport connectgrpc.GRPCRoundTripper) querierv1connect.QuerierServiceHandler { 11 | return querierv1connect.NewQuerierServiceClient( 12 | connectgrpc.NewClient(transport), 13 | "http://httpgrpc", 14 | connect.WithGRPCWeb(), 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /pkg/scheduler/schedulerpb/custom.go: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: AGPL-3.0-only 2 | 3 | package schedulerpb 4 | 5 | import "github.com/pkg/errors" 6 | 7 | var ( 8 | ErrSchedulerIsNotRunning = errors.New("scheduler is not running") 9 | ) 10 | -------------------------------------------------------------------------------- /pkg/slices/slices.go: -------------------------------------------------------------------------------- 1 | package slices 2 | 3 | // RemoveInPlace removes all elements from a slice that match the given predicate. 4 | // Does not allocate a new slice. 5 | func RemoveInPlace[T any](collection []T, predicate func(T, int) bool) []T { 6 | i := 0 7 | for j, x := range collection { 8 | if !predicate(x, j) { 9 | collection[i] = x 10 | i++ 11 | } 12 | } 13 | return collection[:i] 14 | } 15 | -------------------------------------------------------------------------------- /pkg/storegateway/ring_status.gohtml: -------------------------------------------------------------------------------- 1 | {{- /*gotype: github.com/grafana/mimir/pkg/storegateway.ringStatusPageContents*/ -}} 2 | 3 | 4 | 5 | 6 | Store Gateway Ring 7 | 8 | 9 |

Store Gateway Ring

10 |

{{ .Message }}

11 | 12 | 13 | -------------------------------------------------------------------------------- /pkg/storegateway/tenants.gohtml: -------------------------------------------------------------------------------- 1 | {{- /*gotype: github.com/grafana/mimir/pkg/storegateway.tenantsPageContents*/ -}} 2 | 3 | 4 | 5 | 6 | Store-gateway: bucket tenants 7 | 8 | 9 |

Store-gateway: bucket tenants

10 |

Current time: {{ .Now }}

11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {{ range .Tenants }} 19 | 20 | 21 | 22 | {{ end }} 23 | 24 |
Tenant
{{ . }}
25 | 26 | -------------------------------------------------------------------------------- /pkg/tenant/tenant.go: -------------------------------------------------------------------------------- 1 | package tenant 2 | 3 | import ( 4 | "context" 5 | 6 | "github.com/weaveworks/common/user" 7 | ) 8 | 9 | const ErrNoTenantID = user.ErrNoOrgID 10 | 11 | func InjectTenantID(ctx context.Context, tenantID string) context.Context { 12 | return user.InjectOrgID(ctx, tenantID) 13 | } 14 | -------------------------------------------------------------------------------- /pkg/testhelper/pool.go: -------------------------------------------------------------------------------- 1 | package testhelper 2 | 3 | import ( 4 | "context" 5 | "errors" 6 | 7 | "google.golang.org/grpc" 8 | "google.golang.org/grpc/health/grpc_health_v1" 9 | ) 10 | 11 | type FakePoolClient struct{} 12 | 13 | func (f FakePoolClient) Close() error { 14 | return nil 15 | } 16 | 17 | func (f FakePoolClient) Check(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { 18 | return &grpc_health_v1.HealthCheckResponse{ 19 | Status: grpc_health_v1.HealthCheckResponse_SERVING, 20 | }, nil 21 | } 22 | 23 | func (f FakePoolClient) Watch(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (grpc_health_v1.Health_WatchClient, error) { 24 | return nil, errors.New("not implemented") 25 | } 26 | -------------------------------------------------------------------------------- /pkg/tracing/config.go: -------------------------------------------------------------------------------- 1 | package tracing 2 | 3 | import ( 4 | "flag" 5 | ) 6 | 7 | type Config struct { 8 | Enabled bool `yaml:"enabled"` 9 | } 10 | 11 | func (cfg *Config) RegisterFlags(f *flag.FlagSet) { 12 | f.BoolVar(&cfg.Enabled, "tracing.enabled", true, "Set to false to disable tracing.") 13 | } 14 | -------------------------------------------------------------------------------- /pkg/util/disk/disk_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | package diskutil 4 | 5 | type volumeChecker struct { 6 | minFreeDisk uint64 7 | minDiskAvailablePercentage float64 8 | } 9 | 10 | func NewVolumeChecker(minFreeDisk uint64, minDiskAvailablePercentage float64) VolumeChecker { 11 | return &volumeChecker{ 12 | minFreeDisk: minFreeDisk, 13 | minDiskAvailablePercentage: minDiskAvailablePercentage, 14 | } 15 | } 16 | 17 | func (v *volumeChecker) HasHighDiskUtilization(path string) (*VolumeStats, error) { 18 | panic("not implemented") 19 | } 20 | -------------------------------------------------------------------------------- /pkg/util/disk/interface.go: -------------------------------------------------------------------------------- 1 | package diskutil 2 | 3 | type VolumeChecker interface { 4 | HasHighDiskUtilization(path string) (*VolumeStats, error) 5 | } 6 | 7 | type VolumeStats struct { 8 | BytesAvailable uint64 9 | BytesTotal uint64 10 | 11 | HighDiskUtilization bool 12 | } 13 | -------------------------------------------------------------------------------- /pkg/util/gziphandler/doc.go: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: AGPL-3.0-only 2 | 3 | // Package gziphandler mirrors the package github.com/nytimes/gziphandler 4 | // until https://github.com/nytimes/gziphandler/pull/112 is merged. 5 | // Once it's merged, we can delete it from here and switch back to using that one. 6 | package gziphandler 7 | -------------------------------------------------------------------------------- /pkg/util/httpgrpc/httpgrpc.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package httpgrpc; 4 | 5 | option go_package = "github.com/phlare/pkg/util/httpgrpc"; 6 | 7 | service HTTP { 8 | rpc Handle(HTTPRequest) returns (HTTPResponse) {} 9 | } 10 | 11 | message HTTPRequest { 12 | string method = 1; 13 | string url = 2; 14 | repeated Header headers = 3; 15 | bytes body = 4; 16 | } 17 | 18 | message HTTPResponse { 19 | int32 Code = 1; 20 | repeated Header headers = 2; 21 | bytes body = 3; 22 | } 23 | 24 | message Header { 25 | string key = 1; 26 | repeated string values = 2; 27 | } 28 | -------------------------------------------------------------------------------- /pkg/util/math/math.go: -------------------------------------------------------------------------------- 1 | package math 2 | 3 | import ( 4 | "golang.org/x/exp/constraints" 5 | ) 6 | 7 | func Min[T constraints.Ordered](a, b T) T { 8 | if a < b { 9 | return a 10 | } 11 | return b 12 | } 13 | 14 | func Max[T constraints.Ordered](a, b T) T { 15 | if a > b { 16 | return a 17 | } 18 | return b 19 | } 20 | -------------------------------------------------------------------------------- /pkg/util/prometheus.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "github.com/prometheus/client_golang/prometheus" 5 | ) 6 | 7 | // RegisterOrGet registers the collector c with the provided registerer. 8 | // If the registerer is nil, the collector is returned without registration. 9 | // If the collector is already registered, the existing collector is returned. 10 | func RegisterOrGet[T prometheus.Collector](reg prometheus.Registerer, c T) T { 11 | if reg == nil { 12 | return c 13 | } 14 | err := reg.Register(c) 15 | if err != nil { 16 | already, ok := err.(prometheus.AlreadyRegisteredError) 17 | if ok { 18 | return already.ExistingCollector.(T) 19 | } 20 | panic(err) 21 | } 22 | return c 23 | } 24 | -------------------------------------------------------------------------------- /pkg/util/unsafe.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "reflect" 5 | "unsafe" 6 | ) 7 | 8 | func UnsafeGetBytes(s string) []byte { 9 | var buf []byte 10 | p := unsafe.Pointer(&buf) 11 | *(*string)(p) = s 12 | (*reflect.SliceHeader)(p).Cap = len(s) 13 | return buf 14 | } 15 | 16 | func UnsafeGetString(buf []byte) string { 17 | return *((*string)(unsafe.Pointer(&buf))) 18 | } 19 | -------------------------------------------------------------------------------- /pkg/util/yolo.go: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: AGPL-3.0-only 2 | // Provenance-includes-location: https://github.com/cortexproject/cortex/blob/master/pkg/util/yolo.go 3 | // Provenance-includes-license: Apache-2.0 4 | // Provenance-includes-copyright: The Cortex Authors. 5 | 6 | package util 7 | 8 | import "unsafe" 9 | 10 | func YoloBuf(s string) []byte { 11 | return *((*[]byte)(unsafe.Pointer(&s))) 12 | } 13 | -------------------------------------------------------------------------------- /public/app/components/AppSelector/AppSelector.module.css: -------------------------------------------------------------------------------- 1 | .appSelectorModal { 2 | /* upstream code is positioned based on a label */ 3 | left: initial !important; 4 | max-width: calc(100vw - 290px); 5 | } 6 | 7 | .noData { 8 | width: 600px; 9 | height: 300px; 10 | display: flex; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | -------------------------------------------------------------------------------- /public/app/components/Sidebar.module.css: -------------------------------------------------------------------------------- 1 | .logoImg { 2 | width: 36px; 3 | height: 36px; 4 | margin-right: 8px; 5 | } 6 | .logo { 7 | display: flex; 8 | align-items: center; 9 | padding: 11px 0 9.2px 9.2px; 10 | margin: 0; 11 | } 12 | 13 | .logoText { 14 | color: var(--ps-neutral-2); 15 | font-weight: 600; 16 | height: 30px; 17 | line-height: 30px; 18 | font-size: 20px; 19 | margin-left: 0; 20 | } 21 | 22 | .logoTextCollapsed { 23 | display: none; 24 | } 25 | 26 | .collapseIcon svg { 27 | animation: swing ease-in-out 0.5s 1 alternate; 28 | transition: transform 0.3s; 29 | } 30 | 31 | .collapsedIconCollapsed svg { 32 | transform: rotate(-180deg); 33 | } 34 | -------------------------------------------------------------------------------- /public/app/components/SidebarTenant.module.css: -------------------------------------------------------------------------------- 1 | .menuDivider { 2 | border-top: 1px solid rgba(255, 255, 255, 0.2); 3 | } 4 | 5 | .accountDropdown { 6 | border: none; 7 | padding: 0; 8 | width: 100%; 9 | text-align: left; 10 | } 11 | 12 | .dropdown { 13 | border: 1px solid rgba(255, 255, 255, 0.2) !important; 14 | box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.4) !important; 15 | 16 | /* needs to be bigger than the sidebar, since it will be shown on top of it */ 17 | z-index: 9999 !important; 18 | } 19 | 20 | .orgID { 21 | margin-right: 15px; 22 | } 23 | -------------------------------------------------------------------------------- /public/app/example.test.tsx: -------------------------------------------------------------------------------- 1 | describe('noop', () => { 2 | it('works', () => { 3 | expect(true).toBe(true); 4 | }); 5 | }); 6 | -------------------------------------------------------------------------------- /public/app/hooks/useAppNames.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import { useAppDispatch } from '@webapp/redux/hooks'; 3 | import { setQuery, reloadAppNames } from '@webapp/redux/reducers/continuous'; 4 | import { appToQuery } from '@webapp/models/app'; 5 | 6 | /** 7 | * loads and select the first app/type (if available) 8 | */ 9 | export function useSelectFirstApp() { 10 | const dispatch = useAppDispatch(); 11 | 12 | useEffect(() => { 13 | async function run() { 14 | const apps = await dispatch(reloadAppNames()).unwrap(); 15 | 16 | if (apps.length > 0) { 17 | // Select first app automatically 18 | dispatch(setQuery(appToQuery(apps[0]))); 19 | } 20 | } 21 | 22 | run(); 23 | }, [dispatch]); 24 | } 25 | -------------------------------------------------------------------------------- /public/app/jquery-import.ts: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | interface WindowWithJquery { 3 | $: unknown; 4 | jQuery: unknown; 5 | } 6 | (window as unknown as WindowWithJquery).$ = $; 7 | (window as unknown as WindowWithJquery).jQuery = $; 8 | -------------------------------------------------------------------------------- /public/app/overrides/components/AppSelector/Label.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export function Label() { 4 | return <>Profile Type: ; 5 | } 6 | 7 | export const LabelString = 'Select Profile Type'; 8 | -------------------------------------------------------------------------------- /public/app/overrides/components/TimelineChart/ContextMenu.plugin.ts: -------------------------------------------------------------------------------- 1 | export interface ContextMenuProps { 2 | click: { 3 | /** The X position in the window where the click originated */ 4 | pageX: number; 5 | /** The Y position in the window where the click originated */ 6 | pageY: number; 7 | }; 8 | timestamp: number; 9 | containerEl: HTMLElement; 10 | } 11 | -------------------------------------------------------------------------------- /public/app/overrides/components/TimelineChart/Tooltip.plugin.ts: -------------------------------------------------------------------------------- 1 | // TooltipCallbackProps refers to the data available for the tooltip body construction 2 | export interface TooltipCallbackProps { 3 | timeLabel: string; 4 | values: Array<{ 5 | closest: number[]; 6 | color: number[]; 7 | // TODO: remove this 8 | tagName: string; 9 | }>; 10 | coordsToCanvasPos?: any; 11 | canvasX?: number; 12 | } 13 | -------------------------------------------------------------------------------- /public/app/overrides/util/baseurl.ts: -------------------------------------------------------------------------------- 1 | /** 2 | basename checks the "href" value of the tag if available 3 | and returns the pathname part 4 | otherwise it return undefined 5 | */ 6 | export function baseurl() { 7 | const base = document.querySelector('base') as HTMLBaseElement; 8 | if (!base) { 9 | return undefined; 10 | } 11 | 12 | const url = new URL(base.href, window.location.href); 13 | return url.pathname; 14 | } 15 | 16 | export function baseurlForAPI() { 17 | // When serving production, api path is one level above /ui 18 | // TODO(eh-am): remove when pages are moved to root 19 | return baseurl()?.replace('/ui', ''); 20 | } 21 | 22 | export default baseurlForAPI; 23 | -------------------------------------------------------------------------------- /public/app/pages/ComparisonView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ContinuousComparisonView from '@webapp/pages/ContinuousComparisonView'; 3 | 4 | export function ComparisonView() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /public/app/pages/DiffView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import ContinuousDiffView from '@webapp/pages/ContinuousDiffView'; 4 | 5 | export function DiffView() { 6 | return ; 7 | } 8 | -------------------------------------------------------------------------------- /public/app/pages/ExploreView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import TagExplorerView from '@webapp/pages/TagExplorerView'; 4 | 5 | export function ExploreView() { 6 | return ; 7 | } 8 | -------------------------------------------------------------------------------- /public/app/pages/SingleView.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ContinuousSingleView from '@webapp/pages/ContinuousSingleView'; 3 | 4 | export function SingleView() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /public/app/pages/routes.ts: -------------------------------------------------------------------------------- 1 | export enum ROUTES { 2 | SINGLE_VIEW = '/', 3 | EXPLORE_VIEW = '/explore', 4 | COMPARISON_VIEW = '/comparison', 5 | COMPARISON_DIFF_VIEW = '/comparison-diff', 6 | } 7 | 8 | // isRouteActive detects whether a route is active 9 | // Notice that it does exact matches, so subpaths may not work correctly 10 | export function isRouteActive(pathname: string, route: ROUTES) { 11 | return pathname === route; 12 | } 13 | -------------------------------------------------------------------------------- /public/app/redux/hooks.ts: -------------------------------------------------------------------------------- 1 | import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'; 2 | import type { RootState, AppDispatch } from '@webapp/redux/store'; 3 | 4 | // Use throughout your app instead of plain `useDispatch` and `useSelector` 5 | export const useAppDispatch = () => useDispatch(); 6 | export const useAppSelector: TypedUseSelectorHook = useSelector; 7 | -------------------------------------------------------------------------------- /public/app/types.ts: -------------------------------------------------------------------------------- 1 | declare module 'redux-query-sync' { 2 | function ReduxQuerySync(args: unknown): void; 3 | 4 | export default ReduxQuerySync; 5 | } 6 | -------------------------------------------------------------------------------- /public/app/util/history.ts: -------------------------------------------------------------------------------- 1 | import { createBrowserHistory } from 'history'; 2 | import { baseurl } from '@webapp/util/baseurl'; 3 | 4 | // We share the same instance since react-query-sync expects the same 5 | // 'history' instance to be shared 6 | // https://github.com/Treora/redux-query-sync/blob/2a2d08e92b2bf931196f97fdbffb0c5ccfb9b6c9/Readme.md?plain=1#L126 7 | export const history = createBrowserHistory({ 8 | basename: baseurl(), 9 | }); 10 | -------------------------------------------------------------------------------- /public/assets.go: -------------------------------------------------------------------------------- 1 | //go:build !embedassets 2 | // +build !embedassets 3 | 4 | package public 5 | 6 | import ( 7 | "net/http" 8 | ) 9 | 10 | var AssetsEmbedded = false 11 | 12 | func Assets() (http.FileSystem, error) { 13 | return http.Dir("./public/build"), nil 14 | } 15 | 16 | func NewIndexHandler(_ string) (http.HandlerFunc, error) { 17 | return func(w http.ResponseWriter, r *http.Request) { 18 | _, err := w.Write([]byte("This route is not available in dev mode.")) 19 | if err != nil { 20 | http.Error(w, err.Error(), http.StatusInternalServerError) 21 | } 22 | }, nil 23 | } 24 | -------------------------------------------------------------------------------- /public/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Grafana Pyroscope 10 | 11 | 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /public/testdata/baseurl.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /scripts/base-url/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | nginx: 4 | image: nginx 5 | ports: 6 | - '8080:8080' 7 | volumes: 8 | - ./nginx.conf:/etc/nginx/nginx.conf 9 | docker-host: 10 | image: "qoomon/docker-host" 11 | cap_add: 12 | - "NET_ADMIN" 13 | - "NET_RAW" 14 | -------------------------------------------------------------------------------- /scripts/base-url/nginx.conf: -------------------------------------------------------------------------------- 1 | events {} 2 | http { 3 | server { 4 | listen 8080; 5 | 6 | location /foobar/ { 7 | rewrite /foobar(.*) $1 break; 8 | proxy_pass http://docker-host:4100; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /testSetupFile.js: -------------------------------------------------------------------------------- 1 | import '@testing-library/jest-dom/extend-expect'; 2 | -------------------------------------------------------------------------------- /tools/docker-compose/.gitignore: -------------------------------------------------------------------------------- 1 | data/ 2 | .gradle 3 | build 4 | bin 5 | .vscode 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /tools/docker-compose/README.md: -------------------------------------------------------------------------------- 1 | # docker-compose 2 | 3 | This directory contains a `docker-compose.yml` file that can be used to start a local Grafana Phlare instance 4 | with a Grafana instance. The `docker-compose.yml` file is configured to use the latest version of Grafana Phlare and Grafana. 5 | 6 | To start Grafana Phlare and Grafana, run the following command: 7 | 8 | ```bash 9 | docker-compose up -d 10 | ``` 11 | 12 | Grafana should be available at http://localhost:3000 and Grafana Phlare should be available at http://localhost:4100. 13 | 14 | By default the Grafana Phlare datasource is already configured in Grafana. 15 | 16 | The data will be persisted in the `data` directory. 17 | 18 | To bring down the whole deployment, run the following command: 19 | 20 | ```bash 21 | docker-compose down 22 | ``` 23 | -------------------------------------------------------------------------------- /tools/docker-compose/datasource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | datasources: 3 | - access: proxy 4 | basicAuth: false 5 | editable: true 6 | isDefault: true 7 | name: phlare 8 | type: phlare 9 | uid: phlare 10 | url: http://phlare:4100 11 | version: 1 12 | -------------------------------------------------------------------------------- /tools/docker-compose/golang/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang as builder 2 | 3 | WORKDIR /app 4 | 5 | # Copy the source-code and Compile the code. 6 | COPY main.go . 7 | COPY go.mod . 8 | RUN CGO_ENABLED=0 GOOS=linux go build 9 | 10 | FROM alpine:3.17.4 11 | 12 | # Copy over the directory containing the compiled binary for the profiling. 13 | COPY --from=builder /app/golang /golang 14 | RUN ls -al 15 | 16 | EXPOSE 6060 17 | # Run the application when the docker image is run, using either CMD (as is done 18 | # here) or ENTRYPOINT. 19 | CMD ./golang 20 | -------------------------------------------------------------------------------- /tools/docker-compose/golang/go.mod: -------------------------------------------------------------------------------- 1 | module golang 2 | 3 | go 1.19 4 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:11-slim-bullseye 2 | 3 | RUN apt-get update && apt install -y openjdk-11-dbg 4 | 5 | WORKDIR /app 6 | 7 | COPY . . 8 | 9 | RUN ./gradlew clean build 10 | 11 | EXPOSE 8080 12 | 13 | CMD ["./gradlew", "run"] 14 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/README.md: -------------------------------------------------------------------------------- 1 | # Demo Java app 2 | 3 | Run with: 4 | 5 | ```bash 6 | ./gradlew run 7 | ``` 8 | 9 | Get a CPU profile with: 10 | 11 | ```bash 12 | go tool pprof -http :6060 "http://localhost:8080/debug/pprof/profile?seconds=10" 13 | ``` 14 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "application" 3 | } 4 | apply plugin : "java" 5 | 6 | ext { 7 | javaMainClass = "com.example.Main" 8 | } 9 | 10 | application { 11 | mainClassName = javaMainClass 12 | } 13 | 14 | repositories { 15 | mavenCentral() 16 | } 17 | 18 | group = "com.example" 19 | version = "0.1.0" 20 | 21 | dependencies { 22 | implementation 'com.grafana:jpprof:0.1.6' 23 | } 24 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/tools/docker-compose/java/simple/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Oct 09 17:52:05 CEST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'jpprof-example' 2 | -------------------------------------------------------------------------------- /tools/docker-compose/java/simple/src/main/java/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import java.net.InetSocketAddress; 4 | import com.sun.net.httpserver.HttpServer; 5 | import jpprof.PprofHttpHandler; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) throws Exception { 10 | // run some background worload 11 | var t = new Thread(new Something()); 12 | t.start(); 13 | 14 | var server = HttpServer.create(new InetSocketAddress(8080), 0); 15 | server.createContext("/", new PprofHttpHandler()); 16 | server.start(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:11-slim-bullseye 2 | 3 | RUN apt-get update && apt install -y openjdk-11-dbg 4 | 5 | WORKDIR /app 6 | 7 | COPY . . 8 | 9 | RUN ./gradlew clean build 10 | 11 | EXPOSE 8080 12 | 13 | CMD ["./gradlew", "bootRun"] 14 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/README.md: -------------------------------------------------------------------------------- 1 | # Spring Boot Demo 2 | 3 | Run with: 4 | 5 | ```bash 6 | ./gradlew bootRun 7 | ``` 8 | 9 | Get a CPU profile with: 10 | 11 | ```bash 12 | go tool pprof -http :6060 "http://localhost:8080/debug/pprof/profile?seconds=10" 13 | ``` 14 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.springframework.boot' version '2.7.1' 3 | id 'io.spring.dependency-management' version '1.0.11.RELEASE' 4 | id 'java' 5 | } 6 | 7 | group = 'com.example' 8 | version = '0.0.1-SNAPSHOT' 9 | sourceCompatibility = '1.8' 10 | 11 | repositories { 12 | mavenCentral() 13 | } 14 | 15 | dependencies { 16 | implementation 'com.grafana:jpprof:0.1.6' 17 | implementation 'org.springframework.boot:spring-boot-starter-web' 18 | testImplementation 'org.springframework.boot:spring-boot-starter-test' 19 | } 20 | 21 | test { 22 | useJUnitPlatform() 23 | } 24 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grafana/phlare/83cd75d30035f41934de372b532fef4407a978d6/tools/docker-compose/java/springboot/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-boot' 2 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/src/main/java/com/example/springboot/Application.java: -------------------------------------------------------------------------------- 1 | package com.example.springboot; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.context.ApplicationContext; 6 | 7 | @SpringBootApplication 8 | public class Application { 9 | 10 | public static void main(String[] args) { 11 | // run some background worload 12 | Thread t = new Thread(new Something()); 13 | t.start(); 14 | 15 | ApplicationContext ctx = SpringApplication.run(Application.class, args); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /tools/docker-compose/java/springboot/src/main/java/com/example/springboot/HelloController.java: -------------------------------------------------------------------------------- 1 | package com.example.springboot; 2 | 3 | import org.springframework.web.bind.annotation.GetMapping; 4 | import org.springframework.web.bind.annotation.RestController; 5 | 6 | @RestController 7 | public class HelloController { 8 | 9 | @GetMapping("/") 10 | public String index() { 11 | return "Greetings from Spring Boot!"; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /tools/docker-compose/python/README.md: -------------------------------------------------------------------------------- 1 | # Continuous Profiling for Python 2 | 3 | The use of [zprofile] requires to build the wheel for the particular libraries shipped, locally refer to the [Dockerfile] how to achieve this. 4 | 5 | ## Run backend 6 | 7 | ```shell 8 | $ docker build -t cp-python . 9 | $ docker run -p 8081:8081 cp-python 10 | ``` 11 | 12 | ## Collect profiles 13 | 14 | ```shell 15 | $ pprof -http :6060 "http://localhost:8080/debug/pprof/profile?seconds=1" 16 | ``` 17 | -------------------------------------------------------------------------------- /tools/docker-compose/python/requirements.txt: -------------------------------------------------------------------------------- 1 | mprofile==0.0.14 2 | protobuf==3.20.3 3 | git+https://github.com/simonswine/pypprof.git@a5b539b839f9eb91be9277ae22c1698eac9e5ce8#egg=pypprof 4 | six==1.16.0 5 | git+https://github.com/simonswine/zprofile.git@100934da015661b3baf7c7c45f68293546ba77f5#egg=zprofile 6 | -------------------------------------------------------------------------------- /tools/docker-compose/rust/.dockerignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.git/ 3 | -------------------------------------------------------------------------------- /tools/docker-compose/rust/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /tools/docker-compose/rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [[bin]] 2 | name = "cp-rust" 3 | path = "src/main.rs" 4 | 5 | [package] 6 | name = "cp-rust" 7 | version = "0.1.0" 8 | edition = "2021" 9 | 10 | [dependencies] 11 | pprof = { version = "0.12", features = ["protobuf-codec"] } 12 | hyper-routing = "0.6.1" 13 | hyper = { version = "0.14", features = ["full"] } 14 | tokio = { version = "1", features = ["full"] } 15 | futures-util = "0.3" 16 | pretty_env_logger = "0.5" 17 | log = "0.4" 18 | form_urlencoded = "*" 19 | libflate = "1.2.0" 20 | -------------------------------------------------------------------------------- /tools/docker-compose/rust/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:1.70.0-bullseye as build 2 | 3 | WORKDIR /usr/src/cp-rust 4 | RUN cargo init 5 | COPY Cargo.toml Cargo.lock ./ 6 | 7 | RUN \ 8 | cargo build && \ 9 | rm -rf ./src 10 | 11 | COPY src ./src/ 12 | 13 | RUN cargo install --debug --path . 14 | 15 | FROM debian:bullseye-slim 16 | 17 | COPY --from=build /usr/src/cp-rust/target/debug/cp-rust /usr/bin/cp-rust 18 | 19 | ENV RUST_LOG=debug 20 | ENV RUST_BACKTRACE=full 21 | 22 | EXPOSE 8080 23 | 24 | CMD ["cp-rust"] 25 | -------------------------------------------------------------------------------- /tools/docker-compose/rust/README.md: -------------------------------------------------------------------------------- 1 | # Continuous Profiling for Rust 2 | 3 | ## Run backend 4 | 5 | ```shell 6 | $ RUST_LOG=debug cargo run 7 | ``` 8 | 9 | ## Collect profile 10 | 11 | ```shell 12 | $ pprof -http :6060 "http://localhost:8080/debug/pprof/profile?seconds=1" 13 | ``` 14 | -------------------------------------------------------------------------------- /tools/image-tag: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # SPDX-License-Identifier: AGPL-3.0-only 3 | # Provenance-includes-location: https://github.com/cortexproject/cortex/blob/master/tools/image-tag 4 | # Provenance-includes-license: Apache-2.0 5 | # Provenance-includes-copyright: The Cortex Authors. 6 | 7 | set -o errexit 8 | set -o nounset 9 | set -o pipefail 10 | 11 | WORKING_SUFFIX=$(if git status --porcelain | grep -qE '^(?:[^?][^ ]|[^ ][^?])\s'; then echo "-WIP"; else echo ""; fi) 12 | BRANCH_PREFIX=$(git rev-parse --abbrev-ref HEAD) 13 | echo "${BRANCH_PREFIX//\//-}-$(git rev-parse --short HEAD)$WORKING_SUFFIX" 14 | -------------------------------------------------------------------------------- /tools/kubernetes/java-simple-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: java-simple-deployment 5 | labels: 6 | app: java-simple 7 | spec: 8 | replicas: 3 9 | selector: 10 | matchLabels: 11 | app: java-simple 12 | template: 13 | metadata: 14 | labels: 15 | app: java-simple 16 | spec: 17 | containers: 18 | - name: java-simple 19 | imagePullPolicy: Never 20 | securityContext: 21 | capabilities: 22 | add: 23 | - CAP_PERFMON 24 | image: cp-java-simple:0.1.0 25 | ports: 26 | - containerPort: 8080 27 | -------------------------------------------------------------------------------- /tools/monitoring/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | lib/ 3 | environments/default/spec.json 4 | -------------------------------------------------------------------------------- /tools/monitoring/README.md: -------------------------------------------------------------------------------- 1 | # Monitoring 2 | 3 | This folder contains a deployment example of the phlare-mixin. 4 | This is useful for testing new changes to the mixin. 5 | 6 | First use `make deploy-micro-services` to deploy locally using kind. 7 | 8 | Then use `make deploy-monitoring` to deploy the mixin in the monitoring namespace. 9 | 10 | By default it install: 11 | 12 | - Prometheus and Alertmanager with alerts and rules. 13 | - Grafana with plugin, datasources and dashboards. 14 | - An nginx proxy to access all applications. 15 | 16 | To access the proxy you just need to port forward using `kubectl port-forward deployments.apps/nginx -n monitoring 3100:80`. 17 | 18 | > You can replace 3100 with the local port of your choice 19 | -------------------------------------------------------------------------------- /tools/monitoring/environments/default/main.jsonnet: -------------------------------------------------------------------------------- 1 | import 'monitoring.libsonnet' 2 | -------------------------------------------------------------------------------- /tools/monitoring/lib/k.libsonnet: -------------------------------------------------------------------------------- 1 | import 'github.com/jsonnet-libs/k8s-libsonnet/1.20/main.libsonnet' 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/1.20: -------------------------------------------------------------------------------- 1 | github.com/jsonnet-libs/k8s-libsonnet/1.20 -------------------------------------------------------------------------------- /tools/monitoring/vendor/alertmanager: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/alertmanager -------------------------------------------------------------------------------- /tools/monitoring/vendor/alertmanager-mixin: -------------------------------------------------------------------------------- 1 | github.com/prometheus/alertmanager/doc/alertmanager-mixin -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | /alerts.yaml 2 | /rules.yaml 3 | dashboards_out 4 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/Makefile: -------------------------------------------------------------------------------- 1 | all: fmt lint build clean 2 | 3 | fmt: 4 | ./scripts/format.sh 5 | 6 | lint: 7 | ./scripts/lint.sh 8 | 9 | build: 10 | ./scripts/build.sh 11 | 12 | clean: 13 | rm -rf dashboards_out alerts.yaml rules.yaml 14 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/dashboards/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | grafanaDashboards+:: { 3 | 'grafana-overview.json': (import 'grafana-overview.json'), 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'alerts/alerts.libsonnet') + 2 | (import 'dashboards/dashboards.libsonnet') + 3 | (import 'rules/rules.libsonnet') 4 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/rules/rules.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | prometheusRules+:: { 3 | groups+: [ 4 | { 5 | name: 'grafana_rules', 6 | rules: [ 7 | { 8 | record: 'namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m', 9 | expr: ||| 10 | sum by (namespace, job, handler, status_code) (rate(grafana_http_request_duration_seconds_count[5m])) 11 | |||, 12 | }, 13 | ], 14 | }, 15 | ], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | cd "$(dirname "$0")"/.. 5 | 6 | mixtool generate all mixin.libsonnet 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/scripts/common.sh: -------------------------------------------------------------------------------- 1 | JSONNET_FMT="jsonnetfmt -n 2 --max-blank-lines 2 --string-style s --comment-style s" 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/scripts/format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | cd "$(dirname "$0")"/.. 5 | 6 | . scripts/common.sh 7 | 8 | find . -name 'vendor' -prune -o -name '*.libsonnet' -print -o -name '*.jsonnet' -print | \ 9 | xargs -n 1 -- ${JSONNET_FMT} -i 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafana/grafana-mixin/scripts/lint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | cd "$(dirname "$0")"/.. 5 | 6 | . scripts/common.sh 7 | 8 | find . -name 'vendor' -prune -o -name '*.libsonnet' -print -o -name '*.jsonnet' -print | \ 9 | while read f; do \ 10 | ${JSONNET_FMT} "$f" | diff -u "$f" -; \ 11 | done 12 | 13 | #mixtool lint mixin.libsonnet 14 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet-7.0/grafana.libsonnet: -------------------------------------------------------------------------------- 1 | // This file was generated by https://github.com/grafana/dashboard-spec 2 | 3 | { 4 | dashboard:: import 'dashboard.libsonnet', 5 | panel:: { 6 | gauge:: import 'panel/gauge.libsonnet', 7 | graph:: import 'panel/graph.libsonnet', 8 | row:: import 'panel/row.libsonnet', 9 | stat:: import 'panel/stat.libsonnet', 10 | table:: import 'panel/table.libsonnet', 11 | text:: import 'panel/text.libsonnet', 12 | }, 13 | target:: { 14 | prometheus:: import 'target/prometheus.libsonnet', 15 | }, 16 | template:: { 17 | custom:: import 'template/custom.libsonnet', 18 | datasource:: import 'template/datasource.libsonnet', 19 | query:: import 'template/query.libsonnet', 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet-7.0/target/prometheus.libsonnet: -------------------------------------------------------------------------------- 1 | // This file was generated by https://github.com/grafana/dashboard-spec 2 | 3 | { 4 | new( 5 | datasource='default', 6 | expr=null, 7 | format='time_series', 8 | instant=null, 9 | interval=null, 10 | intervalFactor=null, 11 | legendFormat=null, 12 | ):: { 13 | [if datasource != null then 'datasource']: datasource, 14 | [if expr != null then 'expr']: expr, 15 | [if format != null then 'format']: format, 16 | [if instant != null then 'instant']: instant, 17 | [if interval != null then 'interval']: interval, 18 | [if intervalFactor != null then 'intervalFactor']: intervalFactor, 19 | [if legendFormat != null then 'legendFormat']: legendFormat, 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * Creates a [Loki target](https://grafana.com/docs/grafana/latest/datasources/loki/) 4 | * 5 | * @name loki.target 6 | * 7 | * @param expr 8 | * @param hide (optional) Disable query on graph. 9 | * @param legendFormat (optional) Defines the legend. Defaults to ''. 10 | */ 11 | target( 12 | expr, 13 | hide=null, 14 | legendFormat='', 15 | instant=null, 16 | ):: { 17 | [if hide != null then 'hide']: hide, 18 | expr: expr, 19 | legendFormat: legendFormat, 20 | [if instant != null then 'instant']: instant, 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * Returns a new pluginlist panel that can be added in a row. 4 | * It requires the pluginlist panel plugin in grafana, which is built-in. 5 | * 6 | * @name pluginlist.new 7 | * 8 | * @param title The title of the pluginlist panel. 9 | * @param description (optional) Description of the panel 10 | * @param limit (optional) Set maximum items in a list 11 | * @return A json that represents a pluginlist panel 12 | */ 13 | new( 14 | title, 15 | description=null, 16 | limit=null, 17 | ):: { 18 | type: 'pluginlist', 19 | title: title, 20 | [if limit != null then 'limit']: limit, 21 | [if description != null then 'description']: description, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * Creates an SQL target. 4 | * 5 | * @name sql.target 6 | * 7 | * @param rawSql The SQL query 8 | * @param datasource (optional) 9 | * @param format (default `'time_series'`) 10 | * @param alias (optional) 11 | */ 12 | target( 13 | rawSql, 14 | datasource=null, 15 | format='time_series', 16 | alias=null, 17 | ):: { 18 | [if datasource != null then 'datasource']: datasource, 19 | format: format, 20 | [if alias != null then 'alias']: alias, 21 | rawSql: rawSql, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | * @name transformation.new 4 | */ 5 | new( 6 | id='', 7 | options={} 8 | ):: { 9 | id: id, 10 | options: options, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/alertmanager/config.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | // Cluster and environment specific overrides. 4 | cluster_dns_suffix: 'cluster.' + self.cluster_dns_tld, 5 | cluster_dns_tld: 'local.', 6 | namespace: error 'must specify namespace', 7 | 8 | // Alertmanager config options. 9 | alertmanager_external_hostname: 'http://alertmanager.%(namespace)s.svc.%(cluster_dns_suffix)s' % self, 10 | alertmanager_path: '/alertmanager/', 11 | alertmanager_port: 9093, 12 | alertmanager_replicas: 1, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/alertmanager/images.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _images+:: { 3 | alertmanager: 'prom/alertmanager:v0.22.2', 4 | watch: 'weaveworks/watch:master-5fc29a9', 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/alertmanager/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/alertmanager/receivers.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | pagerduty: (import './receivers/pagerduty.libsonnet'), 3 | slack: (import './receivers/slack.libsonnet'), 4 | } 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/alertmanager/slack.libsonnet: -------------------------------------------------------------------------------- 1 | // This file is for backwards compat, please use alertmanager/receivers.libsonnet instead. 2 | local slack = import './receivers/slack.libsonnet'; 3 | 4 | { 5 | local this = self, 6 | 7 | _config+:: { 8 | slack_url: 'http://slack', 9 | slack_channel: 'general', 10 | }, 11 | 12 | build_slack_receiver(name, slack_channel):: 13 | slack.new(name, slack_channel) 14 | + slack.withAPIUrl(this._config.slack_url), 15 | 16 | alertmanager_config+:: { 17 | route+: { 18 | group_by: ['alertname'], 19 | receiver: 'slack', 20 | }, 21 | 22 | receivers+: [ 23 | this.build_slack_receiver('slack', this._config.slack_channel), 24 | ], 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/simple/main.jsonnet: -------------------------------------------------------------------------------- 1 | local grafana = import '../../grafana.libsonnet'; 2 | local k = import 'k.libsonnet'; 3 | { 4 | config+:: { 5 | prometheus_url: 'http://prometheus', 6 | }, 7 | 8 | namespace: k.core.v1.namespace.new('grafana'), 9 | 10 | prometheus_datasource:: grafana.datasource.new('prometheus', $.config.prometheus_url, type='prometheus', default=true), 11 | 12 | grafana: grafana 13 | + grafana.withAnonymous() 14 | + grafana.addFolder('Example') 15 | + grafana.addDashboard('simple', (import 'dashboard-simple.libsonnet'), folder='Example') 16 | + grafana.addDatasource('prometheus', $.prometheus_datasource), 17 | } 18 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/tanka/environments/default/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | local nyc = import 'dashboards/nyc.json'; 2 | local node_exporter = import 'prometheus/node-exporter-full.json'; 3 | 4 | { 5 | nyc: nyc, 6 | node_exporter: node_exporter, 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/tanka/environments/default/datasources.libsonnet: -------------------------------------------------------------------------------- 1 | local grafana = import 'grafana/grafana.libsonnet'; 2 | 3 | { 4 | prometheus: 5 | grafana.datasource.new( 6 | 'Prometheus', 7 | 'http://prometheus-server.prometheus', 8 | 'prometheus', 9 | true, 10 | ) + 11 | grafana.datasource.withHttpMethod('POST'), 12 | sun_and_moon: 13 | grafana.datasource.new( 14 | 'NYC', 15 | null, 16 | 'fetzerch-sunandmoon-datasource', 17 | ) + 18 | grafana.datasource.withJsonData({ 19 | latitude: 40.7128, 20 | longitude: -74.0060, 21 | }), 22 | } 23 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/tanka/environments/default/mixins.libsonnet: -------------------------------------------------------------------------------- 1 | local node_exporter = import 'node-mixin/mixin.libsonnet'; 2 | 3 | { 4 | node_exporter: 5 | node_exporter { 6 | _config+:: { 7 | nodeExporterSelector: 'job="kubernetes-service-endpoints"', 8 | }, 9 | grafanaDashboardFolder: 'Node Exporter Mixin', 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/tanka/environments/default/spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "tanka.dev/v1alpha1", 3 | "kind": "Environment", 4 | "metadata": { 5 | "name": "environments/default" 6 | }, 7 | "spec": { 8 | "apiServer": "https://kubernetes.docker.internal:6443", 9 | "namespace": "default", 10 | "resourceDefaults": {}, 11 | "expectVersions": {} 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/example/tanka/lib/k.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'github.com/jsonnet-libs/k8s-libsonnet/1.18/main.libsonnet') 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/grafana/notifications.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | new( 3 | name, 4 | type, 5 | uid, 6 | org_id, 7 | settings, 8 | is_default=false, 9 | send_reminders=true, 10 | frequency='1h', 11 | disable_resolve_message=false 12 | ):: { 13 | name: name, 14 | type: type, 15 | uid: uid, 16 | org_id: org_id, 17 | is_default: is_default, 18 | send_reminders: send_reminders, 19 | frequency: frequency, 20 | disable_resolve_message: disable_resolve_message, 21 | settings: settings, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/kube-state-metrics/README.md: -------------------------------------------------------------------------------- 1 | # kube-state-metrics jsonnet library 2 | 3 | Jsonnet library for [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics). 4 | 5 | ## Usage 6 | 7 | Install it with jsonnet-bundler: 8 | 9 | ```console 10 | jb install github.com/grafana/jsonnet-libs/kube-state-metrics 11 | ``` 12 | 13 | Import into your jsonnet: 14 | 15 | ```jsonnet 16 | // environments/default/main.jsonnet 17 | local ksm = import 'github.com/grafana/jsonnet-libs/kube-state-metrics/main.libsonnet'; 18 | 19 | { 20 | local namespace = 'default', 21 | ksm: ksm.new(namespace), 22 | 23 | prometheus_config+: { 24 | scrape_configs+: [ 25 | ksm.scrape_config(namespace), 26 | ], 27 | }, 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/kube-state-metrics/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/nginx-directory/files/index.html: -------------------------------------------------------------------------------- 1 | 2 | %(title)s 3 | 4 |

%(title)s

5 |
    6 | %(links)s 7 |
8 | 9 | 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/nginx-directory/files/link.html: -------------------------------------------------------------------------------- 1 |
  • %(title)s
  • 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/nginx-directory/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | }, 13 | { 14 | "source": { 15 | "git": { 16 | "remote": "https://github.com/grafana/jsonnet-libs.git", 17 | "subdir": "oauth2-proxy" 18 | } 19 | }, 20 | "version": "master" 21 | } 22 | ], 23 | "legacyImports": true 24 | } 25 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/nginx-directory/link_data.libsonnet: -------------------------------------------------------------------------------- 1 | function(services, sorted=false) { 2 | link_stanzas: [ 3 | (importstr 'files/link.html') % (service) 4 | for service in (if sorted then std.sort(services, function(s) s.title) else services) 5 | // adding a "hidden" field set to true will cause the link to not be rendered in HTML 6 | if !(std.objectHas(service, 'hidden') && service.hidden == true) 7 | ], 8 | links: std.join('\n', self.link_stanzas), 9 | } 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/node-exporter/README.md: -------------------------------------------------------------------------------- 1 | # node-exporter jsonnet library 2 | 3 | Jsonnet library for [node-exporter](https://github.com/kubernetes/node-exporter). 4 | 5 | ## Usage 6 | 7 | Install it with jsonnet-bundler: 8 | 9 | ```console 10 | jb install github.com/grafana/jsonnet-libs/node-exporter 11 | ``` 12 | 13 | Import into your jsonnet: 14 | 15 | ```jsonnet 16 | // environments/default/main.jsonnet 17 | local node_exporter = import 'github.com/grafana/jsonnet-libs/node-exporter/main.libsonnet'; 18 | 19 | { 20 | node_exporter: 21 | node_exporter.new() 22 | + node_exporter.mountRoot(), 23 | 24 | prometheus_config+: { 25 | scape_configs+: [ 26 | node_exporter.scrape_config(namespace), 27 | ], 28 | }, 29 | } 30 | ``` 31 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/node-exporter/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/oauth2-proxy/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | { 4 | "name": "ksonnet-util", 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/grafana/admin-services.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | admin_services+:: [ 4 | { 5 | title: 'Grafana (Light)', 6 | path: 'grafana', 7 | params: '/?search=open&theme=light', 8 | url: 'http://grafana.%(grafana_namespace)s.svc.%(cluster_dns_suffix)s/' % $._config, 9 | allowWebsockets: true, 10 | }, 11 | { 12 | title: 'Grafana (Dark)', 13 | path: 'grafana', 14 | params: '/?search=open&theme=dark', 15 | url: 'http://grafana.%(grafana_namespace)s.svc.%(cluster_dns_suffix)s/' % $._config, 16 | allowWebsockets: true, 17 | }, 18 | ], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/grafana/deployment.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | // Mixins can now specify extra plugins.. 3 | grafana_plugins+:: std.foldr( 4 | function(mixinName, acc) 5 | local mixin = $.mixins[mixinName]; 6 | if std.objectHas(mixin, 'grafanaPlugins') 7 | then mixin.grafanaPlugins + acc 8 | else acc, 9 | std.objectFields($.mixins), 10 | [], 11 | ), 12 | 13 | // support legacy extension point (grafana_plugins) 14 | grafanaPlugins+:: self.grafana_plugins, 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/grafana/grafana.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'grafana/grafana.libsonnet') + 2 | (import 'config.libsonnet') + 3 | (import 'admin-services.libsonnet') + 4 | (import 'dashboards.libsonnet') + 5 | (import 'datasources.libsonnet') + 6 | (import 'deployment.libsonnet') + 7 | (import 'notifications.libsonnet') 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/images.libsonnet: -------------------------------------------------------------------------------- 1 | local alertmanager_images = import 'alertmanager/images.libsonnet'; 2 | local prometheus_images = import 'prometheus/images.libsonnet'; 3 | 4 | { 5 | _images+:: 6 | prometheus_images + 7 | alertmanager_images + 8 | { 9 | watch: 'weaveworks/watch:master-5fc29a9', 10 | kubeStateMetrics: 'k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.0', 11 | nodeExporter: 'prom/node-exporter:v1.3.1', 12 | nginx: 'nginx:1.15.1-alpine', 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/lib/datasources.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | grafanaDatasources+:: { 3 | 'prometheus.yml': $.grafana_datasource('prometheus', 4 | 'http://prometheus.%(prometheus_namespace)s.svc.%(cluster_dns_suffix)s%(prometheus_web_route_prefix)s' % $._config, 5 | default=true), 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/lib/node-exporter.libsonnet: -------------------------------------------------------------------------------- 1 | local node_exporter = import 'github.com/grafana/jsonnet-libs/node-exporter/main.libsonnet'; 2 | local k = import 'ksonnet-util/kausal.libsonnet'; 3 | 4 | { 5 | local exporter = 6 | node_exporter.new($._images.nodeExporter) 7 | + (if $._config.node_exporter_mount_root 8 | then node_exporter.mountRoot() 9 | else {}), 10 | 11 | node_exporter_container:: exporter.container, 12 | 13 | node_exporter_daemonset: 14 | (exporter { container:: $.node_exporter_container }).daemonset 15 | + k.util.podPriority('critical'), 16 | 17 | prometheus_config+:: { 18 | scrape_configs+: [ 19 | node_exporter.scrape_config($._config.node_exporter_namespace), 20 | ], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/lib/prometheus-ha-mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'prometheus/ha-mixin.libsonnet')(replicas=2) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus-ksonnet/prometheus-ksonnet.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'images.libsonnet') + 2 | (import 'grafana/grafana.libsonnet') + 3 | (import 'lib/datasources.libsonnet') + 4 | (import 'lib/alertmanager.libsonnet') + 5 | (import 'nginx-directory/directory.libsonnet') + 6 | (import 'lib/prometheus.libsonnet') + 7 | (import 'lib/prometheus-config.libsonnet') + 8 | (import 'lib/kube-state-metrics.libsonnet') + 9 | (import 'lib/node-exporter.libsonnet') + 10 | (import 'lib/config.libsonnet') + 11 | (import 'mixins.libsonnet') 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus/images.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _images+:: { 3 | prometheus: 'prom/prometheus:v2.31.1', 4 | watch: 'weaveworks/watch:master-5fc29a9', 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/grafana/jsonnet-libs/prometheus/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/jsonnet-libs.git", 8 | "subdir": "ksonnet-util" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": true 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_custom/batch.libsonnet: -------------------------------------------------------------------------------- 1 | local d = import 'doc-util/main.libsonnet'; 2 | 3 | local patch = { 4 | cronJob+: { 5 | '#new'+: d.func.withArgs([ 6 | d.arg('name', d.T.string), 7 | d.arg('schedule', d.T.string), 8 | d.arg('containers', d.T.array), 9 | ]), 10 | new( 11 | name, 12 | schedule='', 13 | containers=[] 14 | ):: 15 | super.new(name) 16 | + super.spec.withSchedule(schedule) 17 | + super.spec.jobTemplate.spec.template.spec.withContainers(containers) 18 | + super.spec.jobTemplate.spec.template.metadata.withLabels({ name: name }), 19 | }, 20 | }; 21 | 22 | { 23 | batch+: { 24 | v1+: patch, 25 | v1beta1+: patch, 26 | v2alpha1+: patch, 27 | }, 28 | } 29 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/admissionregistration/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='admissionregistration', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/admissionregistration/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | mutatingWebhook: (import 'mutatingWebhook.libsonnet'), 5 | mutatingWebhookConfiguration: (import 'mutatingWebhookConfiguration.libsonnet'), 6 | ruleWithOperations: (import 'ruleWithOperations.libsonnet'), 7 | serviceReference: (import 'serviceReference.libsonnet'), 8 | validatingWebhook: (import 'validatingWebhook.libsonnet'), 9 | validatingWebhookConfiguration: (import 'validatingWebhookConfiguration.libsonnet'), 10 | webhookClientConfig: (import 'webhookClientConfig.libsonnet'), 11 | } 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/admissionregistration/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | mutatingWebhook: (import 'mutatingWebhook.libsonnet'), 5 | mutatingWebhookConfiguration: (import 'mutatingWebhookConfiguration.libsonnet'), 6 | ruleWithOperations: (import 'ruleWithOperations.libsonnet'), 7 | serviceReference: (import 'serviceReference.libsonnet'), 8 | validatingWebhook: (import 'validatingWebhook.libsonnet'), 9 | validatingWebhookConfiguration: (import 'validatingWebhookConfiguration.libsonnet'), 10 | webhookClientConfig: (import 'webhookClientConfig.libsonnet'), 11 | } 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiregistration/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='apiregistration', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiregistration/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | apiService: (import 'apiService.libsonnet'), 5 | apiServiceCondition: (import 'apiServiceCondition.libsonnet'), 6 | apiServiceSpec: (import 'apiServiceSpec.libsonnet'), 7 | apiServiceStatus: (import 'apiServiceStatus.libsonnet'), 8 | serviceReference: (import 'serviceReference.libsonnet'), 9 | } 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiregistration/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | apiService: (import 'apiService.libsonnet'), 5 | apiServiceCondition: (import 'apiServiceCondition.libsonnet'), 6 | apiServiceSpec: (import 'apiServiceSpec.libsonnet'), 7 | apiServiceStatus: (import 'apiServiceStatus.libsonnet'), 8 | serviceReference: (import 'serviceReference.libsonnet'), 9 | } 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiserverinternal/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='apiserverinternal', url='', help=''), 4 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiserverinternal/v1alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1alpha1', url='', help=''), 4 | serverStorageVersion: (import 'serverStorageVersion.libsonnet'), 5 | storageVersion: (import 'storageVersion.libsonnet'), 6 | storageVersionCondition: (import 'storageVersionCondition.libsonnet'), 7 | storageVersionSpec: (import 'storageVersionSpec.libsonnet'), 8 | storageVersionStatus: (import 'storageVersionStatus.libsonnet'), 9 | } 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apiserverinternal/v1alpha1/storageVersionSpec.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='storageVersionSpec', url='', help='"StorageVersionSpec is an empty spec."'), 4 | '#mixin': 'ignore', 5 | mixin: self, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apps/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='apps', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apps/v1/rollingUpdateDaemonSet.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='rollingUpdateDaemonSet', url='', help='"Spec to control the desired behavior of daemon set rolling update."'), 4 | '#withMaxUnavailable':: d.fn(help='"IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number."', args=[d.arg(name='maxUnavailable', type=d.T.string)]), 5 | withMaxUnavailable(maxUnavailable): { maxUnavailable: maxUnavailable }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/apps/v1/rollingUpdateStatefulSetStrategy.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='rollingUpdateStatefulSetStrategy', url='', help='"RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType."'), 4 | '#withPartition':: d.fn(help='"Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0."', args=[d.arg(name='partition', type=d.T.integer)]), 5 | withPartition(partition): { partition: partition }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authentication/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='authentication', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authentication/v1/boundObjectReference.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='boundObjectReference', url='', help='"BoundObjectReference is a reference to an object that a token is bound to."'), 4 | '#withKind':: d.fn(help="\"Kind of the referent. Valid kinds are 'Pod' and 'Secret'.\"", args=[d.arg(name='kind', type=d.T.string)]), 5 | withKind(kind): { kind: kind }, 6 | '#withName':: d.fn(help='"Name of the referent."', args=[d.arg(name='name', type=d.T.string)]), 7 | withName(name): { name: name }, 8 | '#withUid':: d.fn(help='"UID of the referent."', args=[d.arg(name='uid', type=d.T.string)]), 9 | withUid(uid): { uid: uid }, 10 | '#mixin': 'ignore', 11 | mixin: self, 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authentication/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | boundObjectReference: (import 'boundObjectReference.libsonnet'), 5 | tokenRequest: (import 'tokenRequest.libsonnet'), 6 | tokenRequestSpec: (import 'tokenRequestSpec.libsonnet'), 7 | tokenRequestStatus: (import 'tokenRequestStatus.libsonnet'), 8 | tokenReview: (import 'tokenReview.libsonnet'), 9 | tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), 10 | tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), 11 | userInfo: (import 'userInfo.libsonnet'), 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authentication/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | tokenReview: (import 'tokenReview.libsonnet'), 5 | tokenReviewSpec: (import 'tokenReviewSpec.libsonnet'), 6 | tokenReviewStatus: (import 'tokenReviewStatus.libsonnet'), 7 | userInfo: (import 'userInfo.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authorization/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='authorization', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authorization/v1/nonResourceAttributes.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='nonResourceAttributes', url='', help='"NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface"'), 4 | '#withPath':: d.fn(help='"Path is the URL path of the request"', args=[d.arg(name='path', type=d.T.string)]), 5 | withPath(path): { path: path }, 6 | '#withVerb':: d.fn(help='"Verb is the standard HTTP verb"', args=[d.arg(name='verb', type=d.T.string)]), 7 | withVerb(verb): { verb: verb }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authorization/v1/selfSubjectRulesReviewSpec.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), 4 | '#withNamespace':: d.fn(help='"Namespace to evaluate rules for. Required."', args=[d.arg(name='namespace', type=d.T.string)]), 5 | withNamespace(namespace): { namespace: namespace }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authorization/v1beta1/nonResourceAttributes.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='nonResourceAttributes', url='', help='"NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface"'), 4 | '#withPath':: d.fn(help='"Path is the URL path of the request"', args=[d.arg(name='path', type=d.T.string)]), 5 | withPath(path): { path: path }, 6 | '#withVerb':: d.fn(help='"Verb is the standard HTTP verb"', args=[d.arg(name='verb', type=d.T.string)]), 7 | withVerb(verb): { verb: verb }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/authorization/v1beta1/selfSubjectRulesReviewSpec.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='selfSubjectRulesReviewSpec', url='', help=''), 4 | '#withNamespace':: d.fn(help='"Namespace to evaluate rules for. Required."', args=[d.arg(name='namespace', type=d.T.string)]), 5 | withNamespace(namespace): { namespace: namespace }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/autoscaling/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='autoscaling', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v2beta1: (import 'v2beta1/main.libsonnet'), 6 | v2beta2: (import 'v2beta2/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/autoscaling/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | crossVersionObjectReference: (import 'crossVersionObjectReference.libsonnet'), 5 | horizontalPodAutoscaler: (import 'horizontalPodAutoscaler.libsonnet'), 6 | horizontalPodAutoscalerSpec: (import 'horizontalPodAutoscalerSpec.libsonnet'), 7 | horizontalPodAutoscalerStatus: (import 'horizontalPodAutoscalerStatus.libsonnet'), 8 | scale: (import 'scale.libsonnet'), 9 | scaleSpec: (import 'scaleSpec.libsonnet'), 10 | scaleStatus: (import 'scaleStatus.libsonnet'), 11 | } 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/autoscaling/v1/scaleSpec.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='scaleSpec', url='', help='"ScaleSpec describes the attributes of a scale subresource."'), 4 | '#withReplicas':: d.fn(help='"desired number of instances for the scaled object."', args=[d.arg(name='replicas', type=d.T.integer)]), 5 | withReplicas(replicas): { replicas: replicas }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/batch/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='batch', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | v2alpha1: (import 'v2alpha1/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/batch/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | job: (import 'job.libsonnet'), 5 | jobCondition: (import 'jobCondition.libsonnet'), 6 | jobSpec: (import 'jobSpec.libsonnet'), 7 | jobStatus: (import 'jobStatus.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/batch/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | cronJob: (import 'cronJob.libsonnet'), 5 | cronJobSpec: (import 'cronJobSpec.libsonnet'), 6 | cronJobStatus: (import 'cronJobStatus.libsonnet'), 7 | jobTemplateSpec: (import 'jobTemplateSpec.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/batch/v2alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v2alpha1', url='', help=''), 4 | cronJob: (import 'cronJob.libsonnet'), 5 | cronJobSpec: (import 'cronJobSpec.libsonnet'), 6 | cronJobStatus: (import 'cronJobStatus.libsonnet'), 7 | jobTemplateSpec: (import 'jobTemplateSpec.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/certificates/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='certificates', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/certificates/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | certificateSigningRequest: (import 'certificateSigningRequest.libsonnet'), 5 | certificateSigningRequestCondition: (import 'certificateSigningRequestCondition.libsonnet'), 6 | certificateSigningRequestSpec: (import 'certificateSigningRequestSpec.libsonnet'), 7 | certificateSigningRequestStatus: (import 'certificateSigningRequestStatus.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/certificates/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | certificateSigningRequest: (import 'certificateSigningRequest.libsonnet'), 5 | certificateSigningRequestCondition: (import 'certificateSigningRequestCondition.libsonnet'), 6 | certificateSigningRequestSpec: (import 'certificateSigningRequestSpec.libsonnet'), 7 | certificateSigningRequestStatus: (import 'certificateSigningRequestStatus.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/coordination/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='coordination', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/coordination/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | lease: (import 'lease.libsonnet'), 5 | leaseSpec: (import 'leaseSpec.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/coordination/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | lease: (import 'lease.libsonnet'), 5 | leaseSpec: (import 'leaseSpec.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='core', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/attachedVolume.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='attachedVolume', url='', help='"AttachedVolume describes a volume attached to a node"'), 4 | '#withDevicePath':: d.fn(help='"DevicePath represents the device path where the volume should be available"', args=[d.arg(name='devicePath', type=d.T.string)]), 5 | withDevicePath(devicePath): { devicePath: devicePath }, 6 | '#withName':: d.fn(help='"Name of the attached volume"', args=[d.arg(name='name', type=d.T.string)]), 7 | withName(name): { name: name }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/clientIPConfig.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='clientIPConfig', url='', help='"ClientIPConfig represents the configurations of Client IP based session affinity."'), 4 | '#withTimeoutSeconds':: d.fn(help='"timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \\"ClientIP\\". Default value is 10800(for 3 hours)."', args=[d.arg(name='timeoutSeconds', type=d.T.integer)]), 5 | withTimeoutSeconds(timeoutSeconds): { timeoutSeconds: timeoutSeconds }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/containerStateRunning.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='containerStateRunning', url='', help='"ContainerStateRunning is a running state of a container."'), 4 | '#withStartedAt':: d.fn(help='"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers."', args=[d.arg(name='startedAt', type=d.T.string)]), 5 | withStartedAt(startedAt): { startedAt: startedAt }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/containerStateWaiting.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='containerStateWaiting', url='', help='"ContainerStateWaiting is a waiting state of a container."'), 4 | '#withMessage':: d.fn(help='"Message regarding why the container is not yet running."', args=[d.arg(name='message', type=d.T.string)]), 5 | withMessage(message): { message: message }, 6 | '#withReason':: d.fn(help='"(brief) reason the container is not yet running."', args=[d.arg(name='reason', type=d.T.string)]), 7 | withReason(reason): { reason: reason }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/daemonEndpoint.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='daemonEndpoint', url='', help='"DaemonEndpoint contains information about a single Daemon endpoint."'), 4 | '#withPort':: d.fn(help='"Port number of the given endpoint."', args=[d.arg(name='port', type=d.T.integer)]), 5 | withPort(port): { port: port }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/eventSeries.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='eventSeries', url='', help='"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time."'), 4 | '#withCount':: d.fn(help='"Number of occurrences in this series up to the last heartbeat time"', args=[d.arg(name='count', type=d.T.integer)]), 5 | withCount(count): { count: count }, 6 | '#withLastObservedTime':: d.fn(help='"MicroTime is version of Time with microsecond level precision."', args=[d.arg(name='lastObservedTime', type=d.T.string)]), 7 | withLastObservedTime(lastObservedTime): { lastObservedTime: lastObservedTime }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/eventSource.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='eventSource', url='', help='"EventSource contains information for an event."'), 4 | '#withComponent':: d.fn(help='"Component from which the event is generated."', args=[d.arg(name='component', type=d.T.string)]), 5 | withComponent(component): { component: component }, 6 | '#withHost':: d.fn(help='"Node name on which the event is generated."', args=[d.arg(name='host', type=d.T.string)]), 7 | withHost(host): { host: host }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/httpHeader.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='httpHeader', url='', help='"HTTPHeader describes a custom header to be used in HTTP probes"'), 4 | '#withName':: d.fn(help='"The header field name"', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withValue':: d.fn(help='"The header field value"', args=[d.arg(name='value', type=d.T.string)]), 7 | withValue(value): { value: value }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/localObjectReference.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='localObjectReference', url='', help='"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace."'), 4 | '#withName':: d.fn(help='"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/nodeAddress.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='nodeAddress', url='', help="\"NodeAddress contains information for the node's address.\""), 4 | '#withAddress':: d.fn(help='"The node address."', args=[d.arg(name='address', type=d.T.string)]), 5 | withAddress(address): { address: address }, 6 | '#withType':: d.fn(help='"Node address type, one of Hostname, ExternalIP or InternalIP."', args=[d.arg(name='type', type=d.T.string)]), 7 | withType(type): { type: type }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/nodeDaemonEndpoints.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='nodeDaemonEndpoints', url='', help='"NodeDaemonEndpoints lists ports opened by daemons running on the Node."'), 4 | '#kubeletEndpoint':: d.obj(help='"DaemonEndpoint contains information about a single Daemon endpoint."'), 5 | kubeletEndpoint: { 6 | '#withPort':: d.fn(help='"Port number of the given endpoint."', args=[d.arg(name='port', type=d.T.integer)]), 7 | withPort(port): { kubeletEndpoint+: { port: port } }, 8 | }, 9 | '#mixin': 'ignore', 10 | mixin: self, 11 | } 12 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/objectFieldSelector.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='objectFieldSelector', url='', help='"ObjectFieldSelector selects an APIVersioned field of an object."'), 4 | '#withFieldPath':: d.fn(help='"Path of the field to select in the specified API version."', args=[d.arg(name='fieldPath', type=d.T.string)]), 5 | withFieldPath(fieldPath): { fieldPath: fieldPath }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/podDNSConfigOption.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='podDNSConfigOption', url='', help='"PodDNSConfigOption defines DNS resolver options of a pod."'), 4 | '#withName':: d.fn(help='"Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withValue':: d.fn(help='', args=[d.arg(name='value', type=d.T.string)]), 7 | withValue(value): { value: value }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/podIP.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='podIP', url='', help='"IP address information for entries in the (plural) PodIPs field. Each entry includes:\\n IP: An IP address allocated to the pod. Routable at least within the cluster."'), 4 | '#withIp':: d.fn(help='"ip is an IP address (IPv4 or IPv6) assigned to the pod"', args=[d.arg(name='ip', type=d.T.string)]), 5 | withIp(ip): { ip: ip }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/podReadinessGate.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='podReadinessGate', url='', help='"PodReadinessGate contains the reference to a pod condition"'), 4 | '#withConditionType':: d.fn(help="\"ConditionType refers to a condition in the pod's condition list with matching type.\"", args=[d.arg(name='conditionType', type=d.T.string)]), 5 | withConditionType(conditionType): { conditionType: conditionType }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/secretReference.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='secretReference', url='', help='"SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace"'), 4 | '#withName':: d.fn(help='"Name is unique within a namespace to reference a secret resource."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withNamespace':: d.fn(help='"Namespace defines the space within which the secret name must be unique."', args=[d.arg(name='namespace', type=d.T.string)]), 7 | withNamespace(namespace): { namespace: namespace }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/sysctl.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='sysctl', url='', help='"Sysctl defines a kernel parameter to be set"'), 4 | '#withName':: d.fn(help='"Name of a property to set"', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withValue':: d.fn(help='"Value of a property to set"', args=[d.arg(name='value', type=d.T.string)]), 7 | withValue(value): { value: value }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/core/v1/volumeDevice.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='volumeDevice', url='', help='"volumeDevice describes a mapping of a raw block device within a container."'), 4 | '#withDevicePath':: d.fn(help='"devicePath is the path inside of the container that the device will be mapped to."', args=[d.arg(name='devicePath', type=d.T.string)]), 5 | withDevicePath(devicePath): { devicePath: devicePath }, 6 | '#withName':: d.fn(help='"name must match the name of a persistentVolumeClaim in the pod"', args=[d.arg(name='name', type=d.T.string)]), 7 | withName(name): { name: name }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/discovery/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='discovery', url='', help=''), 4 | v1beta1: (import 'v1beta1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/discovery/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | endpoint: (import 'endpoint.libsonnet'), 5 | endpointConditions: (import 'endpointConditions.libsonnet'), 6 | endpointPort: (import 'endpointPort.libsonnet'), 7 | endpointSlice: (import 'endpointSlice.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/events/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='events', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/events/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | event: (import 'event.libsonnet'), 5 | eventSeries: (import 'eventSeries.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/events/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | event: (import 'event.libsonnet'), 5 | eventSeries: (import 'eventSeries.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/extensions/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='extensions', url='', help=''), 4 | v1beta1: (import 'v1beta1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/extensions/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | httpIngressPath: (import 'httpIngressPath.libsonnet'), 5 | httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), 6 | ingress: (import 'ingress.libsonnet'), 7 | ingressBackend: (import 'ingressBackend.libsonnet'), 8 | ingressRule: (import 'ingressRule.libsonnet'), 9 | ingressSpec: (import 'ingressSpec.libsonnet'), 10 | ingressStatus: (import 'ingressStatus.libsonnet'), 11 | ingressTLS: (import 'ingressTLS.libsonnet'), 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='flowcontrol', url='', help=''), 4 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1alpha1/flowDistinguisherMethod.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='flowDistinguisherMethod', url='', help='"FlowDistinguisherMethod specifies the method of a flow distinguisher."'), 4 | '#withType':: d.fn(help='"`type` is the type of flow distinguisher method The supported types are \\"ByUser\\" and \\"ByNamespace\\". Required."', args=[d.arg(name='type', type=d.T.string)]), 5 | withType(type): { type: type }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1alpha1/groupSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='groupSubject', url='', help='"GroupSubject holds detailed information for group-kind subject."'), 4 | '#withName':: d.fn(help='"name is the user group that matches, or \\"*\\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1alpha1/priorityLevelConfigurationReference.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='priorityLevelConfigurationReference', url='', help='"PriorityLevelConfigurationReference contains information that points to the \\"request-priority\\" being used."'), 4 | '#withName':: d.fn(help='"`name` is the name of the priority level configuration being referenced Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1alpha1/serviceAccountSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='serviceAccountSubject', url='', help='"ServiceAccountSubject holds detailed information for service-account-kind subject."'), 4 | '#withName':: d.fn(help='"`name` is the name of matching ServiceAccount objects, or \\"*\\" to match regardless of name. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withNamespace':: d.fn(help='"`namespace` is the namespace of matching ServiceAccount objects. Required."', args=[d.arg(name='namespace', type=d.T.string)]), 7 | withNamespace(namespace): { namespace: namespace }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1alpha1/userSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='userSubject', url='', help='"UserSubject holds detailed information for user-kind subject."'), 4 | '#withName':: d.fn(help='"`name` is the username that matches, or \\"*\\" to match all usernames. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1beta1/flowDistinguisherMethod.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='flowDistinguisherMethod', url='', help='"FlowDistinguisherMethod specifies the method of a flow distinguisher."'), 4 | '#withType':: d.fn(help='"`type` is the type of flow distinguisher method The supported types are \\"ByUser\\" and \\"ByNamespace\\". Required."', args=[d.arg(name='type', type=d.T.string)]), 5 | withType(type): { type: type }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1beta1/groupSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='groupSubject', url='', help='"GroupSubject holds detailed information for group-kind subject."'), 4 | '#withName':: d.fn(help='"name is the user group that matches, or \\"*\\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1beta1/priorityLevelConfigurationReference.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='priorityLevelConfigurationReference', url='', help='"PriorityLevelConfigurationReference contains information that points to the \\"request-priority\\" being used."'), 4 | '#withName':: d.fn(help='"`name` is the name of the priority level configuration being referenced Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1beta1/serviceAccountSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='serviceAccountSubject', url='', help='"ServiceAccountSubject holds detailed information for service-account-kind subject."'), 4 | '#withName':: d.fn(help='"`name` is the name of matching ServiceAccount objects, or \\"*\\" to match regardless of name. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withNamespace':: d.fn(help='"`namespace` is the namespace of matching ServiceAccount objects. Required."', args=[d.arg(name='namespace', type=d.T.string)]), 7 | withNamespace(namespace): { namespace: namespace }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/flowcontrol/v1beta1/userSubject.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='userSubject', url='', help='"UserSubject holds detailed information for user-kind subject."'), 4 | '#withName':: d.fn(help='"`name` is the username that matches, or \\"*\\" to match all usernames. Required."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/meta/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='meta', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/meta/v1/microTime.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='microTime', url='', help='"MicroTime is version of Time with microsecond level precision."'), 4 | '#mixin': 'ignore', 5 | mixin: self, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/meta/v1/patch.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='patch', url='', help='"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body."'), 4 | '#mixin': 'ignore', 5 | mixin: self, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/meta/v1/preconditions.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='preconditions', url='', help='"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out."'), 4 | '#withResourceVersion':: d.fn(help='"Specifies the target ResourceVersion"', args=[d.arg(name='resourceVersion', type=d.T.string)]), 5 | withResourceVersion(resourceVersion): { resourceVersion: resourceVersion }, 6 | '#withUid':: d.fn(help='"Specifies the target UID."', args=[d.arg(name='uid', type=d.T.string)]), 7 | withUid(uid): { uid: uid }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/meta/v1/time.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='time', url='', help='"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers."'), 4 | '#mixin': 'ignore', 5 | mixin: self, 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/networking/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='networking', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1beta1: (import 'v1beta1/main.libsonnet'), 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/networking/v1/serviceBackendPort.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='serviceBackendPort', url='', help='"ServiceBackendPort is the service port being referenced."'), 4 | '#withName':: d.fn(help='"Name is the name of the port on the Service. This is a mutually exclusive setting with \\"Number\\"."', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#withNumber':: d.fn(help='"Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \\"Name\\"."', args=[d.arg(name='number', type=d.T.integer)]), 7 | withNumber(number): { number: number }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/networking/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | httpIngressPath: (import 'httpIngressPath.libsonnet'), 5 | httpIngressRuleValue: (import 'httpIngressRuleValue.libsonnet'), 6 | ingress: (import 'ingress.libsonnet'), 7 | ingressBackend: (import 'ingressBackend.libsonnet'), 8 | ingressClass: (import 'ingressClass.libsonnet'), 9 | ingressClassSpec: (import 'ingressClassSpec.libsonnet'), 10 | ingressRule: (import 'ingressRule.libsonnet'), 11 | ingressSpec: (import 'ingressSpec.libsonnet'), 12 | ingressStatus: (import 'ingressStatus.libsonnet'), 13 | ingressTLS: (import 'ingressTLS.libsonnet'), 14 | } 15 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/node/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='node', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 6 | v1beta1: (import 'v1beta1/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/node/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | overhead: (import 'overhead.libsonnet'), 5 | runtimeClass: (import 'runtimeClass.libsonnet'), 6 | scheduling: (import 'scheduling.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/node/v1alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1alpha1', url='', help=''), 4 | overhead: (import 'overhead.libsonnet'), 5 | runtimeClass: (import 'runtimeClass.libsonnet'), 6 | runtimeClassSpec: (import 'runtimeClassSpec.libsonnet'), 7 | scheduling: (import 'scheduling.libsonnet'), 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/node/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | overhead: (import 'overhead.libsonnet'), 5 | runtimeClass: (import 'runtimeClass.libsonnet'), 6 | scheduling: (import 'scheduling.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/policy/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='policy', url='', help=''), 4 | v1beta1: (import 'v1beta1/main.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/policy/v1beta1/allowedCSIDriver.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='allowedCSIDriver', url='', help='"AllowedCSIDriver represents a single inline CSI Driver that is allowed to be used."'), 4 | '#withName':: d.fn(help='"Name is the registered name of the CSI driver"', args=[d.arg(name='name', type=d.T.string)]), 5 | withName(name): { name: name }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/policy/v1beta1/allowedFlexVolume.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='allowedFlexVolume', url='', help='"AllowedFlexVolume represents a single Flexvolume that is allowed to be used."'), 4 | '#withDriver':: d.fn(help='"driver is the name of the Flexvolume driver."', args=[d.arg(name='driver', type=d.T.string)]), 5 | withDriver(driver): { driver: driver }, 6 | '#mixin': 'ignore', 7 | mixin: self, 8 | } 9 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/policy/v1beta1/hostPortRange.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='hostPortRange', url='', help='"HostPortRange defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined."'), 4 | '#withMax':: d.fn(help='"max is the end of the range, inclusive."', args=[d.arg(name='max', type=d.T.integer)]), 5 | withMax(max): { max: max }, 6 | '#withMin':: d.fn(help='"min is the start of the range, inclusive."', args=[d.arg(name='min', type=d.T.integer)]), 7 | withMin(min): { min: min }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/policy/v1beta1/idRange.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='idRange', url='', help='"IDRange provides a min/max of an allowed range of IDs."'), 4 | '#withMax':: d.fn(help='"max is the end of the range, inclusive."', args=[d.arg(name='max', type=d.T.integer)]), 5 | withMax(max): { max: max }, 6 | '#withMin':: d.fn(help='"min is the start of the range, inclusive."', args=[d.arg(name='min', type=d.T.integer)]), 7 | withMin(min): { min: min }, 8 | '#mixin': 'ignore', 9 | mixin: self, 10 | } 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/rbac/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='rbac', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 6 | v1beta1: (import 'v1beta1/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/rbac/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | aggregationRule: (import 'aggregationRule.libsonnet'), 5 | clusterRole: (import 'clusterRole.libsonnet'), 6 | clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), 7 | policyRule: (import 'policyRule.libsonnet'), 8 | role: (import 'role.libsonnet'), 9 | roleBinding: (import 'roleBinding.libsonnet'), 10 | roleRef: (import 'roleRef.libsonnet'), 11 | subject: (import 'subject.libsonnet'), 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/rbac/v1alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1alpha1', url='', help=''), 4 | aggregationRule: (import 'aggregationRule.libsonnet'), 5 | clusterRole: (import 'clusterRole.libsonnet'), 6 | clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), 7 | policyRule: (import 'policyRule.libsonnet'), 8 | role: (import 'role.libsonnet'), 9 | roleBinding: (import 'roleBinding.libsonnet'), 10 | roleRef: (import 'roleRef.libsonnet'), 11 | subject: (import 'subject.libsonnet'), 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/rbac/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | aggregationRule: (import 'aggregationRule.libsonnet'), 5 | clusterRole: (import 'clusterRole.libsonnet'), 6 | clusterRoleBinding: (import 'clusterRoleBinding.libsonnet'), 7 | policyRule: (import 'policyRule.libsonnet'), 8 | role: (import 'role.libsonnet'), 9 | roleBinding: (import 'roleBinding.libsonnet'), 10 | roleRef: (import 'roleRef.libsonnet'), 11 | subject: (import 'subject.libsonnet'), 12 | } 13 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/scheduling/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='scheduling', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 6 | v1beta1: (import 'v1beta1/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/scheduling/v1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1', url='', help=''), 4 | priorityClass: (import 'priorityClass.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/scheduling/v1alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1alpha1', url='', help=''), 4 | priorityClass: (import 'priorityClass.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/scheduling/v1beta1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1beta1', url='', help=''), 4 | priorityClass: (import 'priorityClass.libsonnet'), 5 | } 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/storage/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='storage', url='', help=''), 4 | v1: (import 'v1/main.libsonnet'), 5 | v1alpha1: (import 'v1alpha1/main.libsonnet'), 6 | v1beta1: (import 'v1beta1/main.libsonnet'), 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/_gen/storage/v1alpha1/main.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local d = (import 'doc-util/main.libsonnet'), 3 | '#':: d.pkg(name='v1alpha1', url='', help=''), 4 | volumeAttachment: (import 'volumeAttachment.libsonnet'), 5 | volumeAttachmentSource: (import 'volumeAttachmentSource.libsonnet'), 6 | volumeAttachmentSpec: (import 'volumeAttachmentSpec.libsonnet'), 7 | volumeAttachmentStatus: (import 'volumeAttachmentStatus.libsonnet'), 8 | volumeError: (import 'volumeError.libsonnet'), 9 | } 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/jsonnet-libs/k8s-libsonnet/1.20/main.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'gen.libsonnet') + (import '_custom/apps.libsonnet') + (import '_custom/autoscaling.libsonnet') + (import '_custom/batch.libsonnet') + (import '_custom/core.libsonnet') + (import '_custom/list.libsonnet') + (import '_custom/mapContainers.libsonnet') + (import '_custom/rbac.libsonnet') + (import '_custom/volumeMounts.libsonnet') 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | prometheus_alerts.yaml 2 | prometheus_rules.yaml 3 | dashboards_out 4 | vendor 5 | jsonnetfile.lock.json 6 | tmp 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/.lint: -------------------------------------------------------------------------------- 1 | exclusions: 2 | template-job-rule: 3 | panel-job-instance-rule: 4 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md 2 | 3 | approvers: 4 | - brancz 5 | - csmarchbanks 6 | - metalmatze 7 | - tomwilkie 8 | - s-urbaniak 9 | - povilasv 10 | - paulfantom 11 | 12 | reviewers: 13 | - brancz 14 | - csmarchbanks 15 | - metalmatze 16 | - tomwilkie 17 | - s-urbaniak 18 | - povilasv 19 | - paulfantom 20 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/SECURITY_CONTACTS: -------------------------------------------------------------------------------- 1 | # Defined below are the security contacts for this repo. 2 | # 3 | # They are the contact point for the Product Security Committee to reach out 4 | # to for triaging and handling of incoming issues. 5 | # 6 | # The below names agree to abide by the 7 | # [Embargo Policy](https://git.k8s.io/security/private-distributors-list.md#embargo-policy) 8 | # and will be removed and replaced if they violate that agreement. 9 | # 10 | # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE 11 | # INSTRUCTIONS AT https://kubernetes.io/security/ 12 | 13 | brancz 14 | csmarchbanks 15 | metalmatze 16 | tomwilkie 17 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/alerts/alerts.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'apps_alerts.libsonnet') + 2 | (import 'resource_alerts.libsonnet') + 3 | (import 'storage_alerts.libsonnet') + 4 | (import 'system_alerts.libsonnet') + 5 | (import 'kube_apiserver.libsonnet') + 6 | (import 'kubelet.libsonnet') + 7 | (import 'kube_scheduler.libsonnet') + 8 | (import 'kube_controller_manager.libsonnet') + 9 | (import 'kube_proxy.libsonnet') + 10 | (import '../lib/add-runbook-links.libsonnet') 11 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/alerts/kube_controller_manager.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | kubeControllerManagerSelector: error 'must provide selector for kube-controller-manager', 4 | }, 5 | 6 | prometheusAlerts+:: { 7 | groups+: [ 8 | { 9 | name: 'kubernetes-system-controller-manager', 10 | rules: [ 11 | (import '../lib/absent_alert.libsonnet') { 12 | componentName:: 'KubeControllerManager', 13 | selector:: $._config.kubeControllerManagerSelector, 14 | }, 15 | ], 16 | }, 17 | ], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/alerts/kube_proxy.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | kubeProxySelector: error 'must provide selector for kube-proxy', 4 | }, 5 | 6 | prometheusAlerts+:: { 7 | groups+: [ 8 | { 9 | name: 'kubernetes-system-kube-proxy', 10 | rules: [ 11 | (import '../lib/absent_alert.libsonnet') { 12 | componentName:: 'KubeProxy', 13 | selector:: $._config.kubeProxySelector, 14 | }, 15 | ], 16 | }, 17 | ], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/alerts/kube_scheduler.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | _config+:: { 3 | kubeSchedulerSelector: 'job="kube-scheduler"', 4 | }, 5 | 6 | prometheusAlerts+:: { 7 | groups+: [ 8 | { 9 | name: 'kubernetes-system-scheduler', 10 | rules: [ 11 | (import '../lib/absent_alert.libsonnet') { 12 | componentName:: 'KubeScheduler', 13 | selector:: $._config.kubeSchedulerSelector, 14 | }, 15 | ], 16 | }, 17 | ], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'network.libsonnet') + 2 | (import 'persistentvolumesusage.libsonnet') + 3 | (import 'resources.libsonnet') + 4 | (import 'apiserver.libsonnet') + 5 | (import 'controller-manager.libsonnet') + 6 | (import 'scheduler.libsonnet') + 7 | (import 'proxy.libsonnet') + 8 | (import 'kubelet.libsonnet') + 9 | (import 'defaults.libsonnet') 10 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/network.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'network-usage/cluster-total.libsonnet') + 2 | (import 'network-usage/namespace-by-workload.libsonnet') + 3 | (import 'network-usage/namespace-by-pod.libsonnet') + 4 | (import 'network-usage/pod-total.libsonnet') + 5 | (import 'network-usage/workload-total.libsonnet') 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/resources.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'resources/cluster.libsonnet') + 2 | (import 'resources/multi-cluster.libsonnet') + 3 | (import 'resources/namespace.libsonnet') + 4 | (import 'resources/node.libsonnet') + 5 | (import 'resources/pod.libsonnet') + 6 | (import 'resources/workload-namespace.libsonnet') + 7 | (import 'resources/workload.libsonnet') 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/grafonnet-lib.git", 8 | "subdir": "grafonnet" 9 | } 10 | }, 11 | "version": "master" 12 | }, 13 | { 14 | "source": { 15 | "git": { 16 | "remote": "https://github.com/grafana/jsonnet-libs.git", 17 | "subdir": "grafana-builder" 18 | } 19 | }, 20 | "version": "master" 21 | } 22 | ], 23 | "legacyImports": false 24 | } 25 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/absent_alert.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local absentAlert = self, 3 | componentName:: error 'must provide component name', 4 | selector:: error 'must provide selector for component', 5 | 6 | alert: '%sDown' % absentAlert.componentName, 7 | expr: ||| 8 | absent(up{%s} == 1) 9 | ||| % absentAlert.selector, 10 | 'for': '15m', 11 | labels: { 12 | severity: 'critical', 13 | }, 14 | annotations: { 15 | description: '%s has disappeared from Prometheus target discovery.' % absentAlert.componentName, 16 | summary: 'Target disappeared from Prometheus target discovery.', 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/alerts.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import '../mixin.libsonnet').prometheusAlerts) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/dashboards.jsonnet: -------------------------------------------------------------------------------- 1 | local dashboards = (import '../mixin.libsonnet').grafanaDashboards; 2 | 3 | { 4 | [name]: dashboards[name] 5 | for name in std.objectFields(dashboards) 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/promgrafonnet/promgrafonnet.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | numbersinglestat:: import 'numbersinglestat.libsonnet', 3 | gauge:: import 'gauge.libsonnet', 4 | } 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/rules.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import '../mixin.libsonnet').prometheusRules) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/lib/utils.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | mapRuleGroups(f): { 3 | groups: [ 4 | group { 5 | rules: [ 6 | f(rule) 7 | for rule in super.rules 8 | ], 9 | } 10 | for group in super.groups 11 | ], 12 | }, 13 | 14 | humanizeSeconds(s):: 15 | if s > 60 * 60 * 24 16 | then '%.1f days' % (s / 60 / 60 / 24) 17 | else '%.1f hours' % (s / 60 / 60), 18 | } 19 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'alerts/alerts.libsonnet') + 2 | (import 'dashboards/dashboards.libsonnet') + 3 | (import 'rules/rules.libsonnet') + 4 | (import 'config.libsonnet') 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/rules/rules.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'kube_apiserver.libsonnet') + 2 | (import 'apps.libsonnet') + 3 | (import 'kube_scheduler.libsonnet') + 4 | (import 'node.libsonnet') + 5 | (import 'kubelet.libsonnet') 6 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/scripts/tools.go: -------------------------------------------------------------------------------- 1 | //go:build tools 2 | // +build tools 3 | 4 | // Package tools tracks dependencies for tools that used in the build process. 5 | // See https://github.com/golang/go/issues/25922 6 | package tools 7 | 8 | import ( 9 | _ "github.com/google/go-jsonnet/cmd/jsonnet" 10 | _ "github.com/google/go-jsonnet/cmd/jsonnet-lint" 11 | _ "github.com/google/go-jsonnet/cmd/jsonnetfmt" 12 | _ "github.com/grafana/dashboard-linter" 13 | _ "github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb" 14 | _ "github.com/prometheus/prometheus/cmd/promtool" 15 | ) 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | dashboards_out 3 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/.lint: -------------------------------------------------------------------------------- 1 | exclusions: 2 | target-instance-rule: 3 | reason: no need to have every query contains two matchers within every selector - `{job=~"$job", instance=~"$instance"}` 4 | template-job-rule: 5 | entries: 6 | - dashboard: Alertmanager / Overview 7 | reason: multi-select is not always required 8 | template-instance-rule: 9 | entries: 10 | - dashboard: Alertmanager / Overview 11 | reason: multi-select is not always required 12 | panel-units-rule: 13 | entries: 14 | - dashboard: Alertmanager / Overview 15 | reason: Dashboard does not benefit from specific unit specification. -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/alerts.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import 'mixin.libsonnet').prometheusAlerts) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/dashboards.jsonnet: -------------------------------------------------------------------------------- 1 | local dashboards = (import 'mixin.libsonnet').grafanaDashboards; 2 | 3 | { 4 | [name]: dashboards[name] 5 | for name in std.objectFields(dashboards) 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | (import './dashboards/overview.libsonnet') 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/grafonnet-lib.git", 8 | "subdir": "grafonnet" 9 | } 10 | }, 11 | "version": "master" 12 | } 13 | ], 14 | "legacyImports": false 15 | } 16 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/jsonnetfile.lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/grafonnet-lib.git", 8 | "subdir": "grafonnet" 9 | } 10 | }, 11 | "version": "55cf4ee53ced2b6d3ce96ecce9fb813b4465be98", 12 | "sum": "4/sUV0Kk+o8I+wlYxL9R6EPhL/NiLfYHk+NXlU64RUk=" 13 | } 14 | ], 15 | "legacyImports": false 16 | } 17 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'config.libsonnet') + 2 | (import 'alerts.libsonnet') + 3 | (import 'dashboards.libsonnet') 4 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | jsonnetfile.lock.json 2 | vendor 3 | *.yaml 4 | dashboards_out 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/alerts.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import 'mixin.libsonnet').prometheusAlerts) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/dashboards.jsonnet: -------------------------------------------------------------------------------- 1 | local dashboards = (import 'mixin.libsonnet').grafanaDashboards; 2 | 3 | { 4 | [name]: dashboards[name] 5 | for name in std.objectFields(dashboards) 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/dashboards/dashboards.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'node.libsonnet') + 2 | (import 'use.libsonnet') 3 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/dashboards/node.libsonnet: -------------------------------------------------------------------------------- 1 | { 2 | local nodemixin = import '../lib/prom-mixin.libsonnet', 3 | grafanaDashboards+:: { 4 | 'nodes.json': nodemixin.new(config=$._config, platform='Linux').dashboard, 5 | 'nodes-darwin.json': nodemixin.new(config=$._config, platform='Darwin').dashboard, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/grafonnet-lib.git", 8 | "subdir": "grafonnet" 9 | } 10 | }, 11 | "version": "master" 12 | }, 13 | { 14 | "source": { 15 | "git": { 16 | "remote": "https://github.com/grafana/grafonnet-lib.git", 17 | "subdir": "grafonnet-7.0" 18 | } 19 | }, 20 | "version": "master" 21 | } 22 | ], 23 | "legacyImports": false 24 | } 25 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'config.libsonnet') + 2 | (import 'alerts/alerts.libsonnet') + 3 | (import 'dashboards/dashboards.libsonnet') + 4 | (import 'rules/rules.libsonnet') 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/node_exporter/docs/node-mixin/rules.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import 'mixin.libsonnet').prometheusRules) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/prometheus/documentation/prometheus-mixin/.gitignore: -------------------------------------------------------------------------------- 1 | *.yaml 2 | dashboards_out 3 | vendor 4 | jsonnetfile.lock.json 5 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/prometheus/documentation/prometheus-mixin/alerts.jsonnet: -------------------------------------------------------------------------------- 1 | std.manifestYamlDoc((import 'mixin.libsonnet').prometheusAlerts) 2 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/prometheus/documentation/prometheus-mixin/dashboards.jsonnet: -------------------------------------------------------------------------------- 1 | local dashboards = (import 'mixin.libsonnet').grafanaDashboards; 2 | 3 | { 4 | [name]: dashboards[name] 5 | for name in std.objectFields(dashboards) 6 | } 7 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/prometheus/documentation/prometheus-mixin/jsonnetfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dependencies": [ 4 | { 5 | "source": { 6 | "git": { 7 | "remote": "https://github.com/grafana/grafonnet-lib.git", 8 | "subdir": "grafonnet" 9 | } 10 | }, 11 | "version": "master" 12 | }, 13 | { 14 | "source": { 15 | "git": { 16 | "remote": "https://github.com/grafana/jsonnet-libs.git", 17 | "subdir": "grafana-builder" 18 | } 19 | }, 20 | "version": "master" 21 | } 22 | ], 23 | "legacyImports": false 24 | } 25 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet: -------------------------------------------------------------------------------- 1 | (import 'config.libsonnet') + 2 | (import 'dashboards.libsonnet') + 3 | (import 'alerts.libsonnet') 4 | -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafana: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/grafana -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafana-builder: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/grafana-builder -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafana-dashboards: -------------------------------------------------------------------------------- 1 | github.com/rfrail3/grafana-dashboards -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafana-mixin: -------------------------------------------------------------------------------- 1 | github.com/grafana/grafana/grafana-mixin -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafonnet: -------------------------------------------------------------------------------- 1 | github.com/grafana/grafonnet-lib/grafonnet -------------------------------------------------------------------------------- /tools/monitoring/vendor/grafonnet-7.0: -------------------------------------------------------------------------------- 1 | github.com/grafana/grafonnet-lib/grafonnet-7.0 -------------------------------------------------------------------------------- /tools/monitoring/vendor/ksonnet-util: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/ksonnet-util -------------------------------------------------------------------------------- /tools/monitoring/vendor/kube-state-metrics: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/kube-state-metrics -------------------------------------------------------------------------------- /tools/monitoring/vendor/kubernetes-mixin: -------------------------------------------------------------------------------- 1 | github.com/kubernetes-monitoring/kubernetes-mixin -------------------------------------------------------------------------------- /tools/monitoring/vendor/mixin-utils: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/mixin-utils -------------------------------------------------------------------------------- /tools/monitoring/vendor/nginx-directory: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/nginx-directory -------------------------------------------------------------------------------- /tools/monitoring/vendor/node-exporter: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/node-exporter -------------------------------------------------------------------------------- /tools/monitoring/vendor/node-mixin: -------------------------------------------------------------------------------- 1 | github.com/prometheus/node_exporter/docs/node-mixin -------------------------------------------------------------------------------- /tools/monitoring/vendor/oauth2-proxy: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/oauth2-proxy -------------------------------------------------------------------------------- /tools/monitoring/vendor/prometheus: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/prometheus -------------------------------------------------------------------------------- /tools/monitoring/vendor/prometheus-ksonnet: -------------------------------------------------------------------------------- 1 | github.com/grafana/jsonnet-libs/prometheus-ksonnet -------------------------------------------------------------------------------- /tools/monitoring/vendor/prometheus-mixin: -------------------------------------------------------------------------------- 1 | github.com/prometheus/prometheus/documentation/prometheus-mixin -------------------------------------------------------------------------------- /tools/upgrade-alpine-version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if [ $# -ne 1 ]; then 6 | echo "Usage: $0 " 7 | exit 1 8 | fi 9 | 10 | # search replace all dockefiles 11 | TARGET="*/*Dockerfile*" 12 | git ls-files "$TARGET" | xargs sed -i 's/alpine:[0-9\.]\+/alpine:'$1'/g' 13 | 14 | # add changes 15 | git add -u "$TARGET" 16 | git commit -m "Update alpine version to $1" 17 | -------------------------------------------------------------------------------- /tools/upgrade-go-version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if [ $# -ne 1 ]; then 6 | echo "Usage: $0 " 7 | exit 1 8 | fi 9 | 10 | # update ci/cd versions 11 | git ls-files .github/workflows | xargs sed -i 's/go-version:\([ \["]\+\)\([0-9\.\=<>]\+\)/go-version:\1'$1'/g' 12 | 13 | # update goreleaser check 14 | sed -i 's/go version go[0-9\.]\+/go version go'$1'/g' .goreleaser.yaml 15 | 16 | # add changes 17 | git add -u .github/workflows .goreleaser.yaml 18 | git commit -m "Update golang version to $1" 19 | -------------------------------------------------------------------------------- /tools/yaml-to-json/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "io" 6 | "log" 7 | "os" 8 | 9 | "sigs.k8s.io/yaml" 10 | ) 11 | 12 | func main() { 13 | if err := run(); err != nil { 14 | log.Fatal(err) 15 | } 16 | } 17 | 18 | func run() error { 19 | yamlBody, err := io.ReadAll(os.Stdin) 20 | if err != nil { 21 | return err 22 | } 23 | 24 | jsonBody, err := yaml.YAMLToJSON(yamlBody) 25 | if err != nil { 26 | return err 27 | } 28 | 29 | var jsonStruct interface{} 30 | if err := json.Unmarshal(jsonBody, &jsonStruct); err != nil { 31 | return err 32 | } 33 | jsonBody, err = json.MarshalIndent(&jsonStruct, "", " ") 34 | if err != nil { 35 | return err 36 | } 37 | 38 | _, err = os.Stdout.Write(jsonBody) 39 | return err 40 | } 41 | --------------------------------------------------------------------------------