Commit Graph

204 Commits

Author SHA1 Message Date
renovate-sh-app[bot]
3ea69e2f8e fix(deps): update module golang.org/x/net to v0.48.0 (#2176)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [golang.org/x/net](https://pkg.go.dev/golang.org/x/net) | [`v0.46.0` →
`v0.48.0`](https://cs.opensource.google/go/x/net/+/refs/tags/v0.46.0...refs/tags/v0.48.0)
|
![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fnet/v0.48.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fnet/v0.46.0/v0.48.0?slim=true)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

## Need help?
You can ask for more help in the following Slack channel:
#proj-renovate-self-hosted. In that channel you can also find ADR and
FAQ docs in the Resources section.

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42NC4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjQuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidXBkYXRlLW1pbm9yIl19-->

---------

Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
Co-authored-by: Jocelyn Collado-Kuri <jcolladokuri@icloud.com>
2026-01-09 10:45:48 +01:00
Jocelyn Collado-Kuri
0d64736e86 Adds support for host tags (#2140)
## Sumary
When dealing with multiple hosts, it can be hard for customers filter
through and figure out which host to query metric data from. This PR
aims to make this easier by adding support for host tags so that there
is another layer of filtering / grouping applied for hosts.

## Detailed explanation
- Adds new UI components to allow adding one or more host tag filter,
and a switch to choose between `AND/OR` and `OR` operators when using
more than one filter following Zabbix's UI:
  

https://github.com/user-attachments/assets/c971f5eb-7e93-4238-bd6b-902cc657c014


https://github.com/user-attachments/assets/5f8996de-684e-4ffa-b98e-8e205c4fc1df

- Modifies the existing `getHosts` function to make a call to the
backend with a few additional parameters to `extend` (essentially
extract) the host tags for a given selected group. No backend changes
were required for this.

## Why
To make it easier for customers to query metric data when dealing with
multiple hosts.

## How to test
- Go to explore or a dashboard and create a Zabbix query where the query
type is `Metrics`
- The easiest way to test is by selecting `/.*/` for Groups, checking
the returned `Hosts` they should all be there
- Add a host tag filter and change the keys and operators as well as
switching from `AND/OR` to `OR` you should see how the values returned
for `Host` changes

## Future work
Adding variable support for host tags once this is completed.

Fixes:
https://github.com/orgs/grafana/projects/457/views/40?pane=issue&itemId=3609900134&issue=grafana%7Coss-big-tent-squad%7C126
and https://github.com/grafana/grafana-zabbix/issues/927

---------

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2026-01-05 05:30:55 -08:00
ismail simsek
04fca562b0 feat(backend): Add query guardrails to prevent potential issues (#2149)
## Summary

Implements query guardrails in the backend to prevent execution of
expensive or malformed queries that could impact customer environments.

Part of https://github.com/grafana/oss-big-tent-squad/issues/127

## Changes

### New guardrails added:

1. **Item ID validation** (`queryItemIdData`)
   - Validates that item IDs are non-empty
   - Validates that item IDs contain only numeric values

2. **Time range validation** (`QueryData`)
   - Validates that `From` timestamp is before `To` timestamp

3. **API method allowlist** (`ZabbixAPIHandler`)
- Only allows Zabbix API methods defined in the frontend type
`zabbixMethodName`
   - Blocks any write/delete/update operations not in the allowlist

### New files:
- `pkg/datasource/guardrails.go` - Validation functions and error
definitions
- `pkg/datasource/guardrails_test.go` - Unit tests for all validation
functions

### Modified files:
- `pkg/datasource/datasource.go` - Added time range validation
- `pkg/datasource/zabbix.go` - Added item ID validation  
- `pkg/datasource/resource_handler.go` - Added API method validation

## Reasoning
- Allowed functions might be unnecessary as we've already prevent using
those in
[types.ts](https://github.com/grafana/grafana-zabbix/blob/main/src/datasource/zabbix/types.ts#L1-L23)
but it's nice to be cautious.
- itemid and time validation is just for sanity. 
- Time range validation will be necessary in the future to warn user
agains running expensive queries.
2025-12-29 18:57:17 +01:00
Jocelyn Collado-Kuri
e073382983 Fix always fetch Zabbix version before issuing new requests (#2133)
Previously we were only fetching the version when the version was `0`.
This generally worked, but posed some problems when customers were
updating their Zabbix version, specifically when upgrading from a
version < `7.2.x` to `7.2.x` or above.

Before `7.2.x`, an `auth` parameter was still supported when issuing a
zabbix request, this was deprecated in `6.4.x` and later removed in
`7.2.x`. When a user was on a version < `7.2.x` all the outgoing
requests would add this `auth` parameter. When upgrading to `7.2.x` this
was a problem, because the version was not `0`, hence, not requiring
getting the version again, but also because we were still building the
request considering an older version and adding the `auth` parameter,
when this was no longer supported.

This PR removes the check for `version == 0`, though this now means that
every request that goes out will check the version before hand, I think
this will give us a more accurate representation of the version that
needs to be used.

fixes
https://github.com/orgs/grafana/projects/457/views/40?pane=issue&itemId=3683181283&issue=grafana%7Coss-big-tent-squad%7C135
2025-12-05 17:34:20 -08:00
Jocelyn Collado-Kuri
89ae290942 Move health check to the backend (#2120)
This PR moves the health check to backend only leaving in the frontend
the functionality to test the dbconnector datasource.

Leaving the `dbconnector.testDataSource` should be fine since the
datasource types we allow for db connection with Zabbix already are
backend datasources, and so their health requests would go through the
backend.

Verified:
Clicking test and seeing a `health` request go out.

IMPORTANT: While testing this in the UI, I found a bug with the config
editor - whenever a change is made in the UI and tested, the changes
don't take effect (i.e. disabling trends, keeps `trends` set to `true`,
enabling db connection keep `dbConnectionEnabled` set to `false` and so
on.). Created a separate
[issue](https://github.com/orgs/grafana/projects/457/views/40?pane=issue&itemId=3627315751&issue=grafana%7Coss-big-tent-squad%7C132)
to fix this

Fixes https://github.com/grafana/oss-big-tent-squad/issues/124
Fixes https://github.com/grafana/grafana-zabbix/issues/2004
2025-11-25 14:54:18 -08:00
ismail simsek
a489c588d0 Chore: Set grpc limits explicitly (#2101)
Set `MaxReceiveMsgSize` as 32mb and `MaxSendMsgSize` as 100mb
2025-10-17 17:41:30 +08:00
Kristian Bremberg
6580bf8f6e Refactor regex pattern validation to use timeout-based approach (#2090)
- Remove isPathologicalRegex function and replace with MatchTimeout
- Simplify parseFilter by relying on runtime timeout protection
- Add comprehensive timeout test for pathological regex patterns
- Set 5-second timeout for all compiled regex operations
2025-09-24 14:27:16 +02:00
Zoltán Bedi
5db35450a2 Fix: Remove regex pattern length restriction (#2087)
In this PR I removed the regex pattern length restriction because from
multi value variables this length can be easly reached, also if the
regex is going to be too long it will be caught in the timeout.

Fixes #2086
2025-09-23 11:51:31 +02:00
Zoltán Bedi
6a1d3b6abe Add regex safety checks and tests for pathological patterns (#2083) 2025-09-17 23:16:55 +02:00
github-actions[bot]
b13d567eee chore: bump @grafana/create-plugin configuration to 5.26.4 (#2082)
Bumps
[`@grafana/create-plugin`](https://github.com/grafana/plugin-tools/tree/main/packages/create-plugin)
configuration from 4.2.1 to 5.26.4.

**Notes for reviewer:**
This is an auto-generated PR which ran `@grafana/create-plugin update`.
Please consult the create-plugin
[CHANGELOG.md](https://github.com/grafana/plugin-tools/blob/main/packages/create-plugin/CHANGELOG.md)
to understand what may have changed.
Please review the changes thoroughly before merging.

---------

Co-authored-by: grafana-plugins-platform-bot[bot] <144369747+grafana-plugins-platform-bot[bot]@users.noreply.github.com>
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2025-09-17 20:33:12 +02:00
Christos Diamantis
04ef3774b0 Zabbix 7.4 compatibility tests (#2053)
* Resolves issue (#2051)
2025-07-09 15:44:17 +02:00
Zoltán Bedi
4036bc585b Add compatibility workflows and integration tests (#1991)
Fixes #1986
Fixes #1994

- Updated .gitignore to include SSL certificate files.
- Introduced new GitHub Actions workflows for testing compatibility with
Zabbix versions 5.0, 6.0, 7.0, and 7.2.
- Added integration tests for Zabbix API for each version, ensuring
proper authentication and API version handling.
- Updated Docker Compose files to support SSL configuration for Zabbix
web services.
- Removed deprecated default Docker Compose and bootstrap files.
- Removed devenv for version 6.2.
2025-03-19 14:04:52 +01:00
Ivana Huckova
58902e7ed9 Release 5.0.2 with error source fix for some downstream errors (#1980)
This PR fixes error source for 2 errors:
- parsing of invalid json response should be downstream error as we
expect to receive valid json from zabbix
- no host found error should be downstream. We are bumping sdk that
includes that fix
https://github.com/grafana/grafana-plugin-sdk-go/pull/1246.

As you can see - the invalid json parsing is now downstream error
<img width="1498" alt="image"
src="https://github.com/user-attachments/assets/88028dbe-0f73-47aa-8262-5729059ce12f"
/>
2025-02-27 12:30:19 +01:00
Zoltán Bedi
c2ffd31b1a Add error source (#1954)
Fixes  #1879
2025-02-04 12:40:33 +01:00
yesoreyeram
374c83d17d initial fix 2025-01-03 09:18:37 +00:00
Ivana Huckova
dbcc008489 Fix querying and authentication for Zabbix v7.0+ (#1931)
* Fix querying for Zabbix v7.2+

* Update check from 7.2 to 7.0

* Fix also select acknowledges key

* Remove unsused methods

* release commit 4.6.0

---------

Co-authored-by: yesoreyeram <153843+yesoreyeram@users.noreply.github.com>
2024-12-17 01:02:43 +00:00
Sriram
e3c3c11e41 host id as alias function (#1913) 2024-11-27 10:32:48 +00:00
Ivana Huckova
53030e2141 Fix deprecated methods based on instructions 2024-09-04 14:17:02 +02:00
TechVest
26096e7f32 chore: fix some comments (#1818)
Signed-off-by: TechVest <techdashen@qq.com>
2024-04-24 12:14:27 +01:00
Muhammad Iqbal Alaydrus
dfe360bf1d item.get cache won't be hit if tags order are different (#1745)
* cache won't be hit if tags order are not the same

* unit test for get items with tags
2023-12-04 13:46:11 +01:00
Sriramajeyam Sugumaran
07d41ac825 updated SDK 2023-11-16 13:07:41 +00:00
Zoltán Bedi
f31fc80b2b Chore: Update grafana-plugin-sdk-go to latest (#1702) 2023-10-05 17:43:30 +02:00
Alexander Zobnin
c06683cd37 Fix backend linter errors 2023-08-30 12:48:38 +02:00
Alexander Zobnin
f9a3d5887e Remove env variable usage 2023-08-17 18:36:09 +02:00
Alexander Zobnin
e33812427e Add host name only if result contains multiple hosts, fixes #1335 2023-08-01 15:25:37 +02:00
Alexander Zobnin
cef0a2e157 Fix app filter returning all items in case of wrong app, #1597 2023-08-01 13:13:51 +02:00
Alexander Zobnin
d484934b3a Format source code 2023-08-01 11:51:58 +02:00
Alexander Zobnin
ac976945a5 Auth: Able to use API tokens for authentication (#1662)
* Auth: Able to use API tokens for authentication

* Update change log
2023-07-26 17:23:44 +02:00
lean.dev
8205f7aaf8 Support for secure socks proxy (#1650)
* Enables PDC for zabbix datasource

* 4.4.0

* Updating CHANGELOG

* Updating CHANGELOG

* Updating CHANGELOG
2023-07-25 18:54:48 +03:00
Alexander Zobnin
24285a9483 Fix item tag filter, #1594 2023-03-23 14:40:22 +01:00
Alexander Zobnin
dd6798834a Improve tags performance (#1526)
Co-authored-by: Erik De Neve <erik.de.neve@telenet.be>
2023-03-21 12:28:34 +01:00
Alexander Zobnin
cf6b19e189 Query option to override use trends option, fixes #1442 2022-12-29 14:07:02 +01:00
Alexander Zobnin
42281a6577 Support authentication for zabbix < 5.4, #1544 2022-12-27 13:05:15 +01:00
Alexander Zobnin
cba2e89a06 Update deprecated user param to username, fixes #1544 2022-12-27 12:33:01 +01:00
Alexander Zobnin
799875866a Fix matching 2022-09-01 10:30:55 +03:00
Alexander Zobnin
459722d0e4 Merge branch 'regexp2' of github.com:thetuxkeeper/grafana-zabbix into thetuxkeeper-regexp2 2022-09-01 09:38:40 +03:00
Alexander Zobnin
b10f93dc37 fix AggregateByRange() on empty data 2022-07-12 09:25:28 +03:00
Alexander Zobnin
5777c2dd0f Query object ids explicitly 2022-07-12 09:18:16 +03:00
Alexander Zobnin
d2645a43b2 Fix fetching host groups, #1470 2022-07-08 14:48:57 +03:00
Daniel Poßmann
4fa13c9b87 extended parseFilter tests 2022-07-07 14:28:55 +02:00
Daniel Poßmann
70055b0682 switch to regexp2 for parsed filter 2022-07-07 14:28:55 +02:00
Alexander Zobnin
7153a83926 Fix data processing when trend data fetched from DB, closes #1445 2022-05-06 12:43:46 +03:00
Alexander Zobnin
daaf2b634d Refactor: remove unused code 2022-05-06 12:18:15 +03:00
Alexander Zobnin
84419de6f5 Fix displaying metric names and alias functions, closes #1444 2022-05-06 12:17:06 +03:00
Alexander Zobnin
c0a33f2e7e Fix show disabled items toggle, closes #1249 2022-05-04 12:08:54 +03:00
Alexander Zobnin
9d6abf3164 Fix EMA function crash when first point is null 2022-04-29 14:44:26 +03:00
Alexander Zobnin
8b0174f8a7 Implement internal plugin metric collection 2022-04-28 13:08:53 +03:00
Alexander Zobnin
8d35c6b297 Fix percentile aggregation with $__range_series interval 2022-04-27 15:26:48 +03:00
Alexander Zobnin
c70c9e9ef6 Refactor: define slices with make() 2022-04-27 14:01:42 +03:00
Alexander Zobnin
37280079ac Fix returning apps when no host found, fixes #1427 2022-04-27 13:48:20 +03:00