Add some notes on actuator(s)
[khatus.git] / README.md
CommitLineData
756b9d5a
SK
1khatus
2======
a9038fad 3![mascot](mascot.jpg)
756b9d5a 4
a9038fad 5Experimental, system monitor and status (bar) reporter I use with
61c33dc2 6[dwm](https://dwm.suckless.org/) on GNU/Linux.
756b9d5a
SK
7
8![screenshot](screenshot.jpg)
55407653
SK
9
10
11Design
12------
13
14```
15 parallel +----------+ +----------+ +----------+
16 stateless | sensor_1 | | sensor_2 | ... | sensor_n |
17 collectors +----------+ +----------+ +----------+
18 | | |
19 data data data
20 | | |
21 V V V
22 serial +-----------------------------------------+
23 stateful | controller |
24 observer +-----------------------------------------+
25 |
26 decisions
27 |
28 V
29 serial +-----------------------------------------+
30 stateless | actuator |
31 executor +-----------------------------------------+
32 |
33 system commands
34 |
35 V
36 ~~~~~~
37 ~ OS ~
38 ~~~~~~
39```
7daecd24 40
ec80b440
SK
41### Actuator
42By default, actuator is left disconnected from the controller's output, so if
43desired - it needs to be manually attached when starting `khatus`. For example,
44in my `.xinitrc` I have:
45
46```sh
47$BIN/khatus \
482> >($BIN/twrap.sh >> $HOME/var/log/khatus.log) \
49| $BIN/khatus_actuator \
50 -v pid="$$" \
51 -v display=":0" \
522> >($BIN/twrap.sh >> $HOME/var/log/khatus-actuator.log) \
53&
54```
55
56(`twrap.sh` is a simple script which prefixes a timestamp to each line)
57
58The idea is to later have multiple, (some more-general and some more-specific)
59actuators which can be selected as needed, say for example:
60
61```sh
62$BIN/khatus \
63| tee \
64>(awk '/^STATUS_BAR/ {sub("^" $1 " *", ""); system("xsetroot -name \" " $0 " \"")}') \
65>(grep '^REPORT' | actuate_report_to_email) \
66>(grep '^ALERT' | grep mpd | actuate_alert_to_email) \
67>(grep '^ALERT' | grep IntrusionAttempt | actuate_intruder_to_iptables_drop) \
68>(grep '^ALERT' | grep NewDevice | actuate_alert_to_notify_send)
69>(grep '^ALERT' | grep DiskError | actuate_call_mom)
70```
71
72... and/or any other such fun you might imagine.
73
74### Errors
7daecd24
SK
75Any errors encountered by any sensor are propagated as alerts by the
76controller, which are in turn actualized as desktop notifications by the
77actuator:
ec80b440 78
7daecd24 79![screenshot-self-error-propagation](screenshot-self-error-propagation.jpg)
This page took 0.026574 seconds and 4 git commands to generate.