* Build out barebones Traces editor
- Add Traces query type and operation ID prop to query type
- Add necessary header types
- Update resource picker to appropriately work with traces query type
- Build out TracesQueryEditor component
- Include logic to retrieve operationId's for AI Workspaces
- Add backend route mapping
- Update macro to use timestamp as default time field for traces
* AzureMonitor: Traces - Response parsing (#65442)
* Update FormatAsField component
- Add trace ResultFormat type
- Generalise FormatAsField component
- Add component to TracesQueryEditor
- Remove duplicate code in setQueryValue
* Add custom filter function to improve performance
* Add basic conversion for logs to trace
- Add serviceTags converter
- Pass through required parameters (queryType and resultFormat)
- Appropriately set visualisation
* Update parsing to also fill trace tags
- Add constant values for each table schema (include legacy mapping for now if needed)
- Add constant for list of table tags
- Set the foundation for dynamic query building
- Update query to build tags value
- Appropriately set operationName
- Update tagsConverter to filter empty values
* Fix lint and test issues
* AzureMonitor: Traces - Data links (#65566)
* Add portal link for traces
- Pull out necessary values (itemId and itemType)
- Appropriately construct
- Fix ordering
* Set default format as value
- Also set default visualisation
* Fix event schema
* Set default formatAsField value
* Include logs link on traces results
- Adapt config links to allow custom title to be set
* Correctly set operationId for query
* Update backend types
- Include OperationID in query
- Pass forward datasource name and UID
* Ensure setTime doesn't consistently get called if operationID is defined
* Add explore link
- Update util functions to allow setting custom datalinks
* Fix tests
* AzureMonitor: Traces - Query and Editor updates (#66076)
* Add initial query
- Will query the resource as soon as a resource has been selected
- Updates the data links for the query without operationId
- Remove initial operationId query and timeRange dependency
- Update query building
* Add entirely separate traces query property
- Update shared types (also including future types for Azure traces)
- Update backend log analytics datasource to accept both azureLogAnalytics and azureTraces queries
- Update backend specific types
- Update frontend datasource for new properties
- Update mock query
* Update FormatAsField to be entirely generic
* Update query building to be done in backend
- Add required mappings in backend
- Update frontend querying
* Fix query and explore data link
* Add trace type selection
* Better method for setting explore link
* Fix operationId updating
* Run go mod tidy
* Unnecessary changes
* Fix tests
* AzureMonitor: Traces - Add correlation API support (#65855)
Add correlation API support
- Add necessary types
- Add correlation API request when conditions are met
- Update query
* Fix property from merge
* AzureMonitor: Traces - Filtering (#66303)
* Add initial query
- Will query the resource as soon as a resource has been selected
- Updates the data links for the query without operationId
- Remove initial operationId query and timeRange dependency
- Update query building
* Add entirely separate traces query property
- Update shared types (also including future types for Azure traces)
- Update backend log analytics datasource to accept both azureLogAnalytics and azureTraces queries
- Update backend specific types
- Update frontend datasource for new properties
- Update mock query
* Update FormatAsField to be entirely generic
* Update query building to be done in backend
- Add required mappings in backend
- Update frontend querying
* Fix query and explore data link
* Add trace type selection
* Better method for setting explore link
* Fix operationId updating
* Run go mod tidy
* Unnecessary changes
* Fix tests
* Start building out Filters component
- Configure component to query for Filter property values when a filter property is set
- Add setFilters function
- Add typing to tablesSchema
- Use component in TracesQueryEditor
* Update Filters
- Asynchronously pull property options
- Setup list of Filter components
* Update filters component
- Remove unused imports
- Have local filters state and query filters
- Correctly set filters values
- Don't update query every time a filter property changes (not performant)
* Update properties query
- Use current timeRange
- Get count to provide informative labels
* Reset map when time changes
* Add operation selection
* Reset filters when property changes
* Appropriate label name for empty values
* Add filtering to query
* Update filter components
- Fix rendering issue
- Correctly compare and update timeRange
- Split out files for simplicity
* Add checkbox option to multiselect
- Add custom option component
- Correctly call onChange
- Add variableOptionGroup for template variable selection
* Fix adding template vars
* Improve labels and refresh labels on query prop changes
* AzureMonitor: Traces - Testing (#66474)
* Select ds for template variable interpolation
* Update az logs ds tests
- Add templateVariables test
- Add filter test
- Update mock
- Remove anys
* Update QueryEditor test
- Update mocks with timeSrv for log analytics datasource
- Fix query mock
- Use appropriate and consistent selectors
* Add TracesQueryEditor test
- Update resourcePickerRows mock to include app insights resources
- Remove comments and extra new line
* Add FormatAsField test
- Remove unneeded condition
* Update resourcePicker utils test
* Don't hide selected options in filters
* Fix multi-selection on filters
* Add TraceTypeField test
- Add test file
- Update selectors (remove copy/paste mistake)
- Update placeholder text for select and add label
* Add basic filters test
* Begin filters test
* Update filters test
* Add final tests and simplify/generalise addFilter helper
* Minor update to datasource test
* Update macros test
* Update selectors in tests
* Add response-table-frame tests
* Add datasource tests
- Use sorting where JSON models are inconsistent
- Update filters clause
- Dedupe tags
- Correct operationId conditions
* Don't set a default value for blurInputOnSelect
* Simplify datasource test
* Update to use CheckGoldenJSON utils
- Update with generated frame files
- Remove redundant expected frame code
- Update all usages
* Fix lint
* AzureMonitor: Traces feedback (#67292)
* Filter traces if the visualisation is set to trace
- Update build query logic
- Added additional test cases
- Return an error if the traces type is set by itself with the trace visualisation
- Add descriptions to event types
- Update tests
* Fix bug for error displaying traces
* Update mappings and add error field
- Update tests
- Remove unnecessary comments
* Switch location of Operation ID field
* Re-order fields
* Update link title
* Update label for event type selection
* Update correct link title
* Update logs datalink to link to Azure Logs in explore
* Fix lint
* Draft: Feature: Trusted Types support
* remove trusted-types package
* Create policy before jQuery and Angular is loaded and add feature flag
* Add trustedTypePolicies
* Sanitize scriptURL
* Add TT meta tag for test env
* Move trusted types into core
* Add DOMParser support for TrustedHTML
* Seperate RSS sanitization and add better TrustedHTML support
* Get test CSP header from config
* Remove dompurify dep from core
* Add documentation for trusted types
* Apply suggestions from code review
Co-authored-by: Kristian Bremberg <114284895+KristianGrafana@users.noreply.github.com>
* Add comment about Github discussion thread and things breaking
* Remove changes from News panel
* Remove TT feature toggle
* Expose TT and CSPReportOnly to frontend
* Log errors in console when CSP report only is enabled
* Log error for reporting and remove test mode
* Only insert CSP header in HTML for dev env
* Update docs
---------
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
* Add a method for getting descendant folders
* Include dashboard count for descendant folders
* Return subfolder count
* Replace references to children with descendants
* Update openapi specs
* Add test for descendant counts
* Add logging to GetDescendantCounts
* Fix files with two dots in the name not being returned by LocalFS.Files()
* Renamed variable for consistency
* Add test
* Fix typo
* Fix wrong upperLevelPrefix value
* Removed unnecessary check in LocalFS.Files()
* organize layout, make design uniform, add doc link
* fix e2e test
* move overhauled config parts into prometheus code
* update tooltips with doc links
* clean component styles for section padding, top and bottom 32px
* make additional settings subsection headers h6
* use secondary gray for section descriptions
* fix merge issues
* change inlineswitch to switch only in prom settings because the other components are shared
* remove legacy formfield and input, replace with inlinefield and input from grafana-ui
* find more formfield and UI design fixes like changing inlineformlabel to inlinefield
* remove unused inline form label
* replace legacy duration validations with <FieldValidationMessage>
* fix styles secondary gray from theme
* change language, headings and datasource -> data source
* update alert setting styles with new component
* update prom url heading and tooltip
* update default editor tooltip and set builder as default editor
* update interval tooltip
* update prom type tooltip
* update custom query params tooltip
* update exemplar internal link tooltip
* fix inline form styling inconsistency
* allow for using the DataSourceHTTPSettings component without the connection string
* remove overhaul component, re-use dshtttps comp, and use connection input in config editor
* make tooltips interactive to click links
* consistent label width across the elements we can control for now, fix exemplar switch
* make connection url a component
* refactor onBlur validation
* remove unused component
* add tests for config validations
* add more meaningful health check
* fix e2e test
* fix e2e test
* fix e2e test
* add error handling for more url errors
* remove unnecessary conversion
* health check tests
* Clean up the health check
* health check unit tests
* health check unit tests improved
* make pretty for drone
* lint check go
* lint check go
* add required attr to connection component
* Update public/app/plugins/datasource/prometheus/configuration/Connection.tsx
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* fix read only issue for provisioned datasources
* validate multiple durations for incremental query setting
* use sentence case for headers
* use className consistently for styles
* add tests for url regex
* remove console logs
* only use query as healthcheck as the healthy api is not supported by Mimir
* fix exemplar e2e test
* remove overhaul prop from custom headers setting component
* remove connection section and use DatasourceHttpSettings connection with custom label and interactive tooltip
* add spaces back
* spaces
---------
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* remove opentracing and use otel instead
* add various samplers for jaeger
* remove useless test that is covered in otel now
* we do not need a struct there
* remove old tests
* restore tests that parse various configurations
* check errors in tests
* Update pkg/infra/tracing/tracing_test.go
fix typo
Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
* add test for both legacy and new config formats
* use named constants
---------
Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
* use tokens or urls in image annotations
* improve tests, fix some comments
* fix empty tokens
* code review changes, check for url before checking for token (support old token formats)
* update to alerting 20230418161049-5f374e58cb32
* rename renamed structs in https://github.com/grafana/alerting/pull/73
* update ValidateContactPoint to use BuildReceiverConfiguration
* update logger factory according to changes
* rewrite integration builder
Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
* Alerting: Allow hooking into request handler functions.
Adds a facility to AlertNG for hooking into API handlers, allowing the
replacement of request handlers for specific paths. One of goals of this
approach was to allow hooking as late as possible in the request, e.g.
after all middleware has been applied, to simplfiy usage.
* Update pkg/services/ngalert/api/hooks.go
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Update pkg/services/ngalert/api/hooks.go
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Update pkg/services/ngalert/ngalert.go
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Fixes to review comments
* Fix passing logger in
---------
Co-authored-by: gotjosh <josue.abreu@gmail.com>
* Add CountInFolder to RegistryService interface
* Add folder children counts api route
* Update fake GetFolderChildrenCounts
* Add test for getting folder children counts
* Add validation to folder children counts handler
* Update openapi specs
* Update pkg/services/folder/folderimpl/folder.go
Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
---------
Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
* adds alertstatehistory backend config to grafanaBootData
* add alertStateHistory api
* show different ASH modal when using loki implementation
* group log lines by instance (unique set of labels)
Co-Authored-By: Konrad Lalik <konrad.lalik@grafana.com>
* render log lines for each instance
Co-Authored-By: Konrad Lalik <konrad.lalik@grafana.com>
* Add visual improvements to the log record of state changes
* Add values to log records
* compute common labels and show unique labels
* Add state changes visualization
* fix common labels extraction
* Code cleanup
* Add timespan-based log record view
* WIP
* scroll to timestamp - poc
* Use SortedVector for timestamp field
* add conditional accessor for frames
* update some of the log formats and styles
* Timestamp-based visualization with scrolling
* minor improvements
* Split Loki's state history viewer into multiple files
* Add memoization to prevent graph rerender on filter updates
* make chart size shrink when fewer instances
* style updates
* show warning when instances are hidden
* Add basic label-based filtering
* Improve label-based filtering
* Add regex validation
* Improve no instances message when everything was filtered out
* Update warning message
* Move timeline viewer to a separate file, refactor handling timeline pointer changes
* Remove unused component, add comments
* Fix test snapshot, fix type error
* adds tests for common.ts
* Add tests for converting log records into data frames
* Add basic component test, fix type guards
* Use a constant for timeseries limit
* Improve a11y, update component test
* Memoize AlertStateTag, migrate from deprecated ArrayVector
* Update public/app/features/alerting/unified/components/rules/state-history/common.ts
* Move helper hook into a separate file. Add Search input component
* Change the limit of visible time series on the timeline
* Add LogRecordViewer perf improvements, refactor timeline cursor events tracking
* Use callback to pass timeline refs
* Add grouping tests for the log record viewer
---------
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
* Update the HandleResourceRequest function to mimic the HandleQueryRequest function
* Remove CacheResourceResponse function from interface
* revert additional thing I missed
* remove metadata for single folder listing
* extendTests
* remove ac metadata from dash and folder search results
* remove test
* remove one more test
* put ac metadata back for single folder API responses
* extend tests
* remove ac metadata from folder frontend object
* undo unneeded change
* PR feedback
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
---------
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Alerting: Add totalsFiltered to RuleResponse to facilitate hidden by filters count
Currently, when both a limit_alerts and a matcher/state filter is applied, there is not enough information to determine how many alert instances were hidden by the filters. Only enough to determine the total hidden by the limit and filter combined.
This change adds a separate totalsFiltered field alongside the AlertRule totals that will contain the count of instances after filters but before limits.
This commit fixes a bug where DatasourceUID and RefID annotations are
missing for DatasourceNoData alerts in Grafana 9.5. This bug affects
datasource plugins that have moved to using the data plane contract.
* update library element tests to use RBAC
* update bits of code to use RBAC
* update library panel tests
* linting
* more linting
* and more linting
* PR feedback
* RBAC: Stop reading enabeld from ini file and always set to true
* Migrations: Add a migration for rbac to reset data migrations if rbac
was disabled
* If rbac was disabled we reset the data and data migrations that rbac
has to perform to get it to a correct state
* Migrator: Store migration logs on migrator and add function to clear it from the
in-memory stored logs
* update tests
---------
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* feat(typescript): read and write index to jsonData
* feat(go): read index from jsonData
* clear database column when index-name is updated
* Update public/app/plugins/datasource/elasticsearch/datasource.ts
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* Update public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
* add indexChangeHandler function
* fix
* fix failing tests
* fix
* fix
---------
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
This commit adds support for limits and filters to the Prometheus Rules
API.
Limits:
It adds a number of limits to the Grafana flavour of the Prometheus Rules
API:
- `limit` limits the maximum number of Rule Groups returned
- `limit_rules` limits the maximum number of rules per Rule Group
- `limit_alerts` limits the maximum number of alerts per rule
It sorts Rule Groups and rules within Rule Groups such that data in the
response is stable across requests. It also returns summaries (totals)
for all Rule Groups, individual Rule Groups and rules.
Filters:
Alerts can be filtered by state with the `state` query string. An example
of an HTTP request asking for just firing alerts might be
`/api/prometheus/grafana/api/v1/rules?state=alerting`.
A request can filter by two or more states by adding additional `state`
query strings to the URL. For example `?state=alerting&state=normal`.
Like the alert list panel, the `firing`, `pending` and `normal` state are
first compared against the state of each alert rule. All other states are
ignored. If the alert rule matches then its alert instances are filtered
against states once more.
Alerts can also be filtered by labels using the `matcher` query string.
Like `state`, multiple matchers can be provided by adding additional
`matcher` query strings to the URL.
The match expression should be parsed using existing regular expression
and sent to the API as URL-encoded JSON in the format:
{
"name": "test",
"value": "value1",
"isRegex": false,
"isEqual": true
}
The `isRegex` and `isEqual` options work as follows:
| IsEqual | IsRegex | Operator |
| ------- | -------- | -------- |
| true | false | = |
| true | true | =~ |
| false | true | !~ |
| false | false | != |
* Add key service
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* Wire the service
* Rename Service
* Implement GetJWKS
* Slipt interface and implementation
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* Change implementation, add tests
* Align to the expected package hierarchy
* Update CODEOWNERS
* Align names and fix wire.go
* Update pkg/services/signingkeys/signingkeysimpl/service.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/signingkeys/signingkeysimpl/service_test.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/signingkeys/signingkeysimpl/service_test.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Update pkg/services/signingkeys/signingkeysimpl/service_test.go
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* Add AddPrivateKey method to SigningKeysService
* Align tests to the guidelines
* Add test for GetJWKS() method
* Add comments to the interface
* Add FakeSigningKeysService
---------
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
* RBAC: Feature to override default assignments
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
* Add test and trim spaces
* Pass linting
* Apply the rbac overrides to fixed_authentication.config_writer
* Removing from the default ini file for now
* Add grants overrides section to cfg
* slimmer handleGrantOverrides function
---------
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
* make timestamp field time type
* Add test for type on handleLogEvents data frame field response
---------
Co-authored-by: Shirley Leu <4163034+fridgepoet@users.noreply.github.com>
* Elasticsearch: Change feature toggle for backend migration to enableElasticsearchBackendQuerying
* Update logic in data source
* Run test to re-genartate toggle
* Delete folders, dashboards with registry service
Co-authored-by: Serge Zaitsev <hello@zserge.com>
* Update signature of ProvideDashboardServiceImpl
* Regenerate mockery file
* Add test for DeleteInFolder
* Add test for DeleteDashboardsInFolder
* Delete child dashboard associations via registry
* Add validation of folder uid and org id
---------
Co-authored-by: Serge Zaitsev <hello@zserge.com>
* remove dashboard previews backend
* remove dashboard previews backend
* bring back the migration
* bring back the migration
* bring back the migration
* replace receiver errors with one from alerting
* add the converter to alerting models
* update buildReceiverIntegration to accept GrafanaReceiver
---------
Co-authored-by: George Robinson <george.robinson@grafana.com>
* Add initial authentication config page skeleton
* Add initial SAML config page WIP
* Add few more pages
* Add connect to IdP page
* Assertion mappings page stub and url params
* Able to save settings
* Some tweaks for authentication page
* Tweak behaviour
* Tweak provider name
* Move SAML config pages to enterprise
* minor refactor
* Able to reset settings
* Configure key and cert from UI
* Refactor WIP
* Tweak styles
* Optional save button
* Some tweaks for the page
* Don't show info popup when save settings
* Improve key/cert validation
* Fetch provider status and display on auth page
* Add settings list to the auth page
* Show call to action card if no auth configured
* clean up
* Show authentication page only if SAML available
* Add access control for SSO config page
* Add feature toggle for auth config UI
* Add code owners for auth config page
* Auth config UI disabled by default
* Fix feature toggle check
* Apply suggestions from review
* Refactor: use forms for steps
* Clean up
* Improve authentication page loading
* Fix CTA link
* Minor tweaks
* Fix page route
* Fix formatting
* Fix generated code formatting
* define initial service and add to wire
* update caching service interface
* add skipQueryCache header handler and update metrics query function to use it
* add caching service as a dependency to query service
* working caching impl
* propagate cache status to frontend in response
* beginning of improvements suggested by Lean - separate caching logic from query logic.
* more changes to simplify query function
* Decided to revert renaming of function
* Remove error status from cache request
* add extra documentation
* Move query caching duration metric to query package
* add a little bit of documentation
* wip: convert resource caching
* Change return type of query service QueryData to a QueryDataResponse with Headers
* update codeowners
* change X-Cache value to const
* use resource caching in endpoint handlers
* write resource headers to response even if it's not a cache hit
* fix panic caused by lack of nil check
* update unit test
* remove NONE header - shouldn't show up in OSS
* Convert everything to use the plugin middleware
* revert a few more things
* clean up unused vars
* start reverting resource caching, start to implement in plugin middleware
* revert more, fix typo
* Update caching interfaces - resource caching now has a separate cache method
* continue wiring up new resource caching conventions - still in progress
* add more safety to implementation
* remove some unused objects
* remove some code that I left in by accident
* add some comments, fix codeowners, fix duplicate registration
* fix source of panic in resource middleware
* Update client decorator test to provide an empty response object
* create tests for caching middleware
* fix unit test
* Update pkg/services/caching/service.go
Co-authored-by: Arati R. <33031346+suntala@users.noreply.github.com>
* improve error message in error log
* quick docs update
* Remove use of mockery. Update return signature to return an explicit hit/miss bool
* create unit test for empty request context
* rename caching metrics to make it clear they pertain to caching
* Update pkg/services/pluginsintegration/clientmiddleware/caching_middleware.go
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
* Add clarifying comments to cache skip middleware func
* Add comment pointing to the resource cache update call
* fix unit tests (missing dependency)
* try to fix mystery syntax error
* fix a panic
* Caching: Introduce feature toggle to caching service refactor (#66323)
* introduce new feature toggle
* hide calls to new service behind a feature flag
* remove licensing flag from toggle (misunderstood what it was for)
* fix unit tests
* rerun toggle gen
---------
Co-authored-by: Arati R. <33031346+suntala@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Takes a specific code path for data that identifies itself as dataplane instead of "guessing" what the data is.
The data must identify itself by being in the dataplane by having both the following frame metadata properties:
- TypeVersion property that is greater than 0.0
- 'Type' property
The flag is disableSSEDataplane and disables this functionality and uses the old code for all queries regardless.
See https://github.com/grafana/grafana-plugin-sdk-go/blob/main/data/contract_docs/contract.md for dataplane details.
* Create minimal EC2 interface
* convert regions variable to a function returning a copy
* Add test for multiple calls to regions to check regionsCache
* Add returns to handler after error
* Refactor handleGetRegions
* Plugins: Fix plugin signature calculation not working on Windows
* Plugins: Added test for NTFS path separators in signature verification
* Use filepath.ToSlash and replace its implementation in tests
* Fix typo
* add: deprecation to api keys write path
* boolean w. meessage
* add read and delete endpoints
* better description of deprecation
* updated with puncutations