Comments (9)
Trigger's expression calculates the new trigger state.
NOTCHANGED state blur existing conception.
But if you need some previous value and current trigger state to calculate new trigger state, we can easily add a few reserved variables like "t1, warn_value, error_value" available to use in expression.
For example, PREV_STATE if abs(t1 - prev_t1) < 1 else ERROR
Or may be your case can be solved in existing expression syntax. Can you give more details about your case?
from worker.
I thik about this, you suggestion is better then NOTCHANGED, so i agree with you concept. For now we have some value with small fluctuations, around some const value(for example 50), so values can be 49.5. 49.9. 50.1 ans so on, and at each value change, trigger will switch it state
from worker.
Why standard derivative, movingAverage, etc graphite functions doesn't satisfy you?
from worker.
this values was get from this transformations
from worker.
Ok, why it is not enough?
from worker.
Because value can change on small range, and PREV_STATE allow describes the band of allowed values, WARN,OK,EROR, doesn't allow this
PS: russian version
Попытаюсь обрисовать ситуацию на родном языке. Вот предположим у нас есть всплеск некоей величины, а потом плавный её спуск до приемлемого значения, в момент когда величина пересекает пороговое значение триггера, она может колебаться вокруг этого порогового значения какое то время, в результате мы имеем ложные срабатывания: "включено", "выключено" в этот момент, введение же полосы пропускания позволит имхо избежать этих срабатываний. Мы очень долго пытались побороть такое поведение в zabbix, но без особых успехов, более менее помогали эскалации, у мойры же её довольно простая архитектура позволяет добавить подобное поведение очень просто и дешево. Просто ввести полосу через условия WARN,OK,EROR невозможно(не позволит генераторное выражение python), нужно знать предыдущее состояние чтобы гарантированно не перевести триггер в сигнальное состояние
from worker.
Ok, check please that I understand right.
Problem:
Value has changed and then started fluctuation around new value.
This fluctuation could lead to trigger fatigue (unwanted state changing)
Solution:
Add PREV_STATE variable to allow expression check, that derivative of value is small and not change state.
from worker.
Yes that's right. Or you may extend custom exresssion feature not only write python generator expression, but fully python code, in this situation moira will be like bosun(https://bosun.org/), but i doesn't think that it is a good idea.
from worker.
Add PREV_STATE in @a7d2af5
from worker.
Related Issues (20)
- Can't delete artifacts in mertics HOT 4
- Moira-checker ignored args HOT 3
- Support "?" in target path HOT 3
- /api/trigger/page return empty list while triggers don't checked HOT 2
- can't uninstall over pip HOT 4
- Update trigger failed
- Can not save trigger even if expression is valid
- Trigger is switched on NODATA -> OK after editing HOT 3
- Targets with {} don't work HOT 1
- Code style. HOT 1
- Add support for different time formats
- Fix Advanced -> Simple mode editing HOT 1
- Support fulltext search by trigger name and patterns
- International characters in trigger name has been broken. HOT 1
- Revert evaluating full requestContextInterval HOT 11
- Web application breaks if tag containing only numbers is created HOT 1
- Failed to perform triggers check HOT 6
- False positive triggers HOT 1
- Support disabling checker log rotation
- High memory consumption by worker processes
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from worker.