Commit Graph

71 Commits

Author SHA1 Message Date
Galen Kistler
96e9e80739 Prometheus: Browser resource caching (#60711)
Add cache control headers and range snapping to Prometheus resource API calls.
2023-04-03 09:07:17 -05:00
Brendan O'Handley
9b6e531549 Prometheus: Metric encyclopedia (#63423)
* add metric encyclopedia feature toggle and component

* remove unused button

* move file, add test file

* add tests

* add pagination and tests

* test with 10,000,000 metrics

* remove unused import

* add filter by type

* search alphabetically and add switch to exclude metrics with no metadata

* add suggested functions and filter for functions

* allow user to select variables in encyclopedia

* fix style and tests

* add fuzzy search by either metric name or all metadata

* if missing metadata, remove metadata fuzzy search option, exclude metadata, and filter by type

* add encyclopedia feature tracking

* indicate that metrics are filtered by labels

* handle metric singular or plural

* add tooltips and fix language

* add filtering tests

* change 'search' to 'browse'

* remove functions filter and tests as not part of work flow

* add m.e. button and selected metric is a tag

* fix hanging search and update styles, padding, labels, and groupings

* small performance improvements

* fix tests

* add backend metrics query option

* add loading spinner for start load and backend search

* autofocus search input

* Update docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* run prettier

* run prettier

* fix text for feature toggle

* for license check since https://cla-assistant.io/check/grafana/grafana?pullRequest=<PR#> is not working

* fixing tests

* fix feature toggle docs

* fix feature toggle

* fix feature toggle

* add owner to feature toggle

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-03-07 13:41:05 -05:00
Galen Kistler
4ed0cc7d18 Prometheus: Code editor - upgrade /series API endpoints to use label/values and /labels for supported prometheus clients (#59576)
* Allow prometheus code editor API to use new prometheus API calls for supported data source clients.
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-01-03 12:38:11 -06:00
Galen Kistler
9281746914 Prometheus: remove /series endpoint calls in query builder label names and values for supported clients (#58087)
* add other filter variables to match param for label values query against filter values, in order to resolve bug in which filter value options would display that aren't relevant in the current query editor context, i.e. options would display that upon select would display no data

* expanding current unit test coverage to cover calls to new API

* interpolate the label name string instead of the match promql expression
2022-11-08 08:37:11 -06:00
Brendan O'Handley
c9a3b2d420 use metadata endpoint (#53980) 2022-08-25 10:59:49 -04:00
Alex Ratner
fecf4c41ad Dashboard: Spelling corrections in end-user visible dialogs (#53340) 2022-08-09 10:19:30 +02:00
Brendan O'Handley
7aeb8b4cdf Prometheus: Remove metadata endpoint (#53428)
* remove prom metadata endpoint until we have a fix for detecting versions and implementations

* fix linting issue
2022-08-08 18:37:12 -04:00
Darren Janeczek
565430f297 Prometheus: Don't show errors from unsuccessful API checks like rules or exemplar checks (#52193)
The query inspector was experiencing some error pop-ups due
to errors encountered on metrics datasources configured with multiple
tenants.

e.g., team-a|team-b

This fix suppresses those errors so as to not mislead the user.
2022-07-21 15:45:02 +02:00
Josh Hunt
3c6e0e8ef8 Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00
Andrej Ocenas
b3f8079f4f Prometheus: Add title to metrics in the metric select with metric help text (#46406)
* Add title to metrics in the select

* Add some comments

* Fix tests
2022-03-10 16:58:25 +01:00
renovate[bot]
f6780d8861 Update dependency lru-cache to v7 (#45074)
* Update dependency lru-cache to v7

* Make latest lru cache work

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2022-02-18 10:23:06 +01:00
Ivana Huckova
c23bc1e7b7 Prometheus: Show variable options in query builder (#44784)
* Prometheus: Show variable options

* Remove lint error

* Fix test for CodeQL

* Update public/app/plugins/datasource/prometheus/datasource.ts

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update public/app/plugins/datasource/loki/datasource.ts

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2022-02-03 11:40:19 +01:00
renovate[bot]
d87cd6f26c Update dependency prettier to v2.5.1 (#43473)
* Update dependency prettier to v2.5.1

* prettier fixes

* chore(toolkit): bump prettier to 2.5.1

* style(eslint): bump grafana config to 2.5.2 in core and toolkit

* style(mssql-datasource): fix no-inferrable-types eslint errors

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-02-02 12:02:32 +00:00
Piotr Jamróz
19374fce39 Explore: Generic query import/export (#40987)
* Add basic implementation

* Split import/export query interface

* Rename abstract query type

* Rename abstract query type

* Split loki/prom parsing

* Update docs

* Test importing abstract queries to Elastic

* Test exporting abstract queries from Graphite

* Test Prom and Loki query import/export

* Give better control to import/export all queries to data sources

* Fix unit test

* Fix unit test

* Filter out non-existing labels when importing queries to Loki

* Fix relative imports, names and docs

* Fix import type

* Move toPromLike query to Prometheus code

* Dedup label operator mappings

* importAbstractQueries -> importFromAbstractQueries

* Fix unit tests
2021-12-14 14:36:47 +01:00
Ivana Huckova
19ad08e6b8 Prometheus: Run exemplars explore queries through backend (#39531)
* Prometheus: Run Explore both queries trough backend

* Refactor, simplify

* Set default values for query type selector

* Run multiple queries as one query trough backend

* Remove trailing newlines

* Pass utcOffset

* Remove trailing comma

* WIP: Implementatioon of exemplars

* add sampling for exemplars

* Refactor to use response as custom metadata

* Simplify processing of exemplars

* Update, clean up

* Refactor the way how we get available exemplars

* Simplify exemplars disabling and running on frontend

* Add tests

* Update toggle

* Remove console log

* Fix go linting

* Fix e2e test

* Trigger Build

* Compare lengts, small fix

* Remove duplicated time check

* Address feedback

* Remove redundant ! as not needed

* Update
2021-10-12 13:16:09 +02:00
Gábor Farkas
346a53145c prometheus: metadata: simplify the metrics-metadata format (#39411)
* prometheus: metadata: simplify the metrics-metadata format

* fixed unit test

* fixed tests
2021-09-21 15:19:52 +02:00
Ivana Huckova
46f922fe1a Prometheus: Remove autocomplete limit for metrics (#39363)
* Remove limit on metrics

* Remove unused variable
2021-09-20 14:58:01 +02:00
Ashley Harrison
52d7358d83 Chore: More TypeScript strict fixes (#39300)
* Chore: More TypeScript strict fixes

* Chore: Use filter instead of reduce to fix TypeScript error

* Chore: Retype AzureResultFormat as string

* Chore: Account for getBlocks() poor typings of reduce

* Chore: Need to explicitly check for undefined here since '' is falsey
2021-09-17 09:47:23 +01:00
Giordano Ricci
f79173c99d Explore: Reuse Dashboard's QueryRows component (#38942)
* WIP

* Functional without custom wrapper component, needs highlight

* Remove latency from explore

* Sync eventbus

* Some cleanup & removal of unused code

* Avoid clearing queries when running all empty queries

* Run remaining queries when removing one

* Update snapshots

* fix failing tests

* type cleanup

* Refactor QueryRows

* update snapshot

* Remove highlighter expressions

* minor fixes in queryrows

* remove unwanted change

* fix failing e2e test

* Persist refId in explore url state

* make traces test slightly more robust

* add test for query duplication
2021-09-15 16:26:23 +01:00
Ivana Huckova
19d4213df6 Prometheus: Fix validate selector in metrics browser (#38921)
* Fix match[] param in loki and prometheus

* Update loki series match param
2021-09-07 15:44:45 +02:00
Ashley Harrison
3004a650b5 Chore: Fix more TypeScript strict errors (#37066)
* Chore: Fix more TypeScript strict errors

* whoops
2021-07-22 08:09:55 +01:00
Ivana Huckova
add1b827ae Prometheus: Add info that using Loki as Prometheus data source is no longer supported and might stop working (#34650)
* Add information that Loki as Prometheus data source is not supported

* Fix ugly error when loki as prometheus used

* Refactor, add test

* Fix type error

* Fix test by passing missing method

* Update public/app/plugins/datasource/prometheus/query_hints.ts

* Remove optionality in prop
2021-05-28 17:10:10 +02:00
David
4b0b69292e Prometheus: Metrics browser (#33847)
* [WIP] Metrics browser

* Removed unused import

* Metrics selection logic

* Remove redundant tests

All data is fetched now regardless to the current range so test for checking reloading the data on the range change are no longer relevant.

* Remove commented out code blocks

* Add issue number to todos

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2021-05-12 11:49:20 +02:00
Ivana Huckova
084066c712 Prometheus: Support POST in template variables (#33321)
* If POST, pass params as data not in url string

* Fix metricNameAndLabelsQuery

* Improve test for new functionality

* Add multiple parameters in test scenarios

* Change urlParams to object
2021-04-27 16:16:48 +02:00
kay delaney
bad048b7ba Performance: Standardize lodash imports to use destructured members (#33040)
* Performance: Standardize lodash imports to use destructured members
Changes lodash imports of the form `import x from 'lodash/x'` to
`import { x } from 'lodash'` to reduce bundle size.

* Remove unnecessary _ import from Graph component

* Enforce lodash import style

* Fix remaining lodash imports
2021-04-21 09:38:00 +02:00
Piotr Jamróz
dd095642e2 Prometheus: Use fuzzy string matching to autocomplete metric names and label (#32207)
* Fuzzy search prototype

* Aggregate filter and sorting functions for auto-complete suggestions

* Add a test for fuzzy search

* Simplify setting fuzzy search information

* Rename SimpleHighlighter

* Test PartialHighlighter

* Add PartialHighlighter snapshot

* Simplify PartialHighlighter

* Revert env change

* Clean up the code

* Add fuzzy search for labels

* Bring back backwards compatiblity

* Expose search function type only

* Update docs

* Covert snapshot test to assertions

* Fix docs

* Fix language provider test

* Add a test for autocomplete logic

* Clean up

* Mock Editor functions

* Add fuzzy search to Prometheus labels

* Add docs about backwards compatibility

* Simplify main fuzzy search loop
2021-04-16 17:06:33 +02:00
Torkel Ödegaard
1d689888b0 Prettier: Upgrade to 2 (#30387)
* Updated package json but not updated source files

* Update eslint plugin

* updated files
2021-01-20 07:59:48 +01:00
Ivana Huckova
a05596848d Prometheus: Improve autocomplete performance and remove disabling of dynamic label lookup (#30199)
* processLabels: Use Sets instead of Array

* Add and update comment

* Limit autocomplete items to 10000

* Remove lookup treshold, limit display of items

* Update tests

* Add test

* Update public/app/plugins/datasource/prometheus/language_provider.ts
2021-01-14 15:45:45 +01:00
Ivana Huckova
8ad79a2635 Prometheus: Remove running of duplicated metrics query (#30108)
* Remove metrics rerenders

* Refactor

* Update public/app/plugins/datasource/prometheus/components/PromQueryField.tsx

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>

* Update public/app/plugins/datasource/prometheus/language_utils.ts

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>

* Add test

* Update public/app/plugins/datasource/prometheus/components/PromQueryField.test.tsx

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-01-08 19:19:00 +01:00
Ivana Huckova
ae1d2fb505 Prometheus: Fix autocomplete does not work on incomplete input (#29854)
* WIP, works but need to do more testing

* Update solution

* Fix autocomplete with metrics

* Update public/app/plugins/datasource/prometheus/language_provider.ts

* Update public/app/plugins/datasource/prometheus/language_provider.ts

* Change test for new functionality
2021-01-08 18:31:21 +01:00
Kemal Akkoyun
0c70308870 Prometheus: Add time range parameters to labels API (#27548)
* Add time range parameters to labels API

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Fix minor issues

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Add range to explore component

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Add range to query component

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Cache metric names for time range

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Update public/app/plugins/datasource/prometheus/components/PromQueryField.tsx

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Remove unused method

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Only compare the ranges

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

* Update public/app/plugins/datasource/prometheus/components/PromQueryField.tsx

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2020-09-29 11:05:57 +02:00
Hugo Häggmark
a73e6f728d Prometheus: Use fetch instead of deprecated datasourceRequest (#27090)
* Prometheus: replaces dataSourcRequest with fetch

* Tests: fixes typings

* Refactor: removes unnecessary from operator

* Refactor: removes weird json() function calls

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2020-08-21 06:03:59 +02:00
Torkel Ödegaard
7e8bd0c1b7 Chore: Fix typescript strict null errors from 674 -> 565 (#26057)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot
2020-07-06 21:16:27 +02:00
David
9208c8efd7 Prometheus: Add metadata for summary metrics (#24201)
* Prometheus: Add metadata for summary metrics

- summary metrics don't have metadata available from the metadata API,
so Grafana can help and just add it
- given a summary metric `foo`, we add metadata info for `foo_sum` and
`foo_count`
- with tests

* Update public/app/plugins/datasource/prometheus/language_utils.ts

Co-authored-by: gotjosh <josue@grafana.com>

Co-authored-by: gotjosh <josue@grafana.com>
2020-05-07 12:02:45 +02:00
Andreas Opferkuch
de0e1b2c58 Prometheus: Add off switch for metric/label name lookup (#24034)
* Prometheus: Add off switch for metric/label name lookup

This will help users with amounts of metric name
data that is too much for a browser to handle.

Autocomplete will be disabled and metrics chooser hidden,
since obviously both rely on this data.

Fixes #22702

* Use onUpdateDatasourceJsonDataOptionChecked

... from `@grafana/data`. Refactor naming to faciliate its
use and stick with prop names as passed down from
`ConfigEditor`.

PLUS:
- Rephrase switch label, add a tooltip and reduce the
size of the to what "Custom query parameters" originally
was.
- Change `languageProvider` type in `PromQueryField`.

* Put language provider back in

Functions and history still work, even when metrics
lookup gets disabled.
Also: Rewording of setting.

* Display a message when lookup got disabled manually

* Call property for setting disableMetricsLookup

* Show disabled metrics chooser instead of warning
2020-05-05 18:02:55 +02:00
BhartiAgrawalNvidia
ce8df91cc9 Fixing issue 16090 where Grafana uses illegal characters in requests … (#21447)
* Fixing issue 16090 where Grafana uses illegal characters in requests to Prometheus

* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090

# Conflicts:
#	public/app/plugins/datasource/prometheus/language_provider.ts

* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090

# Conflicts:
#	public/app/plugins/datasource/prometheus/language_provider.ts

* Use querystring to escape the url

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-24 17:02:50 +01:00
David
d63ad9ac93 Prometheus: Disable suggestions at beginning of value (#21302)
* Prometheus: Disable suggestions at beginning of value

- fixed comparison operator regex
- no longer suggest anything at beginning of label value

* Detect cursor in front of label values
2020-01-03 12:16:27 +01:00
David
3667781e6f Loki: fix filter expression suggestions (#21290)
* Loki: fix filter expression suggestions

- dont suggest term completion items in filter expression
- allow at least one character before suggesting term items
- keep logql expression when switching between Metrics/Logs mode
- show only history by default in completion items

* Clear results when changing mode
2019-12-31 09:53:30 +01:00
David
334b89f3ee Prometheus: Fix label value suggestion (#21294)
* Prometheus: Fix label value suggestion

- remove quotes from typeahead input to suggest correct label values
- fix acceptance of partial label values

* Disable mid-word suggestions

* Fix test
2019-12-31 08:56:57 +01:00
David
649fa6789e Prometheus: Fix term completion that contain keywords (#21295)
- `unless`, `or` and `and` are binary operators
- if they appear in a query the query was broken up so the suggestor
only works on the current term
- this change fixes the splitter logic to make sure those keywords are
not inside a word
2019-12-30 18:03:35 +01:00
David
34c1433ba4 Prometheus: Fix typehead after binary operators (#21152)
- no longer do right-trim to prevent suggestions after space
- rely on splitting on syntax elements to identify relevant prefix
- added tests
2019-12-18 13:35:31 +01:00
David
13073fa6ba Prometheus: Display HELP and TYPE of metrics if available (#21124)
* Prometheus: Display HELP and TYPE of metrics if available

- Prometheus recently added a metadata API around HELP and TYPE of
metrics
- request metadata when datasource instance is created
- use metadata to show help and type in typeahead suggestions and in
metrics selector as tooltip

* Fix types
2019-12-17 11:06:43 +01:00
David
75923c43d1 Promtheus: Improve tab completion (#20938)
Change in behavior:

- no longer suggest everything in empty field, only history
- term suggestions need at least one character
2019-12-10 16:11:31 +01:00
David
1a2dad9d0c Prometheus: disable dynamic label lookup on big datasources (#20936)
* Prometheus: disable dynamic label lookup on big datasources

- when a prometheus datasource has more than 10000 metrics, label lookup
for the query field is disabled
- installations of that size have slow typehead lookup times and make
the editor sluggish

* Raise dynamic lookup threshold to 10000 metrics

* Run start tasks again
2019-12-09 17:02:17 +01:00
Andrej Ocenas
a7f4e4c56a Prometheus: Refactor labels caching (#20898) 2019-12-09 09:46:52 +01:00
Andrej Ocenas
f2574f4944 Prometheus: Fix caching for default labels request (#20718) 2019-11-28 16:55:38 +01:00
Dominik Prokop
9b7748ec13 Chore: Reorg packages (#20111)
Primarily- moving majority of the types and utils from @grafana/ui to @grafana/data

* Move types from grafana-ui to grafana-data

* Move valueFormats to grafana-data

* Move utils from grafana-ui to grafana-data

* Update imports in grafana-ui

* revert data's tsconfig change

* Update imports in grafana-runtime

* Fix import paths in grafana-ui

* Move rxjs to devDeps

* Core import updates batch 1

* Import updates batch 2

* Imports fix batch 3

* Imports fixes batch i don't know

* Fix imorts in grafana-toolkit

* Fix imports after master merge
2019-10-31 10:48:05 +01:00
kay delaney
3e8c00dad1 Chore: Moves QueryField to @grafana/ui (#19678)
Closes #19626
2019-10-31 08:27:01 +00:00
kay delaney
68d6da77da Chore: Update Slate to 0.47.8 (#19197)
* Chore: Update Slate to 0.47.8
Closes #17430
2019-09-23 12:26:05 +01:00
Dominik Prokop
503dccb771 Revert "Chore: Update Slate to 0.47.8 (#18412)" (#19167)
This reverts commit 601853fc84.
2019-09-17 13:21:50 +02:00