Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add monitoring #36

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Add monitoring #36

wants to merge 7 commits into from

Conversation

dawidlesiak
Copy link
Contributor

No description provided.

@dawidlesiak dawidlesiak requested a review from macpijan May 23, 2024 09:34
/usr/lib/zabbix/externalscripts
```

> The default location of externalscripts can be changed in `/etc/zabbix/zabbix_server.conf` by editing `ExternalScripts=/usr/lib/zabbix/externalscripts` (make sure to remove #)
Copy link
Contributor

@macpijan macpijan May 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## Create the item in Zabbix
>
> Item is a tool that gathers data from device, system or external script
2. Navigate to **Configuration** > **Hosts**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This numbering makes no sense. Either use 1 everywhere (and let the markdown renderer handle it), or use incremental numbering in each section manually.

> It's likely that the last used tab is overwriting session data.

## Create the item in Zabbix
>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
>

[list of macros](https://www.zabbix.com/documentation/current/en/manual/appendix/macros/supported_by_location#host-inventory)

## Create the trigger
>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
>


## Create the trigger
>
> Trigger is a rule that watches for specific events, like high CPU usage.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add empty line below

+ Item: Select the item for which you want to create a trigger.
+ Function: Defines how your trigger will be activated.
+ Result: Actual rule of activation.
> If your script returns numeric values directly and/or you don't won't to calculate the average result, simply use `last()` function
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add empty line above

4. Test manually.
- login as **zabbix** user and go to the script location.
- run your script as zabbix.
> You can directly incorporate information from Zabbix macros into your command, such as ./script.sh '192.168.10.0'.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add empty line above

## Testing

4. Test manually.
- login as **zabbix** user and go to the script location.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please indent

done < "$stolen"

deactivate

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove empty line

if grep -qw "$ip" "$fail"; then
echo 0
elif grep -qw "$ip" "$used"; then
echo 1
Copy link
Contributor

@macpijan macpijan May 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use consistent indentation

@@ -0,0 +1,15 @@
#!/bin/bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we actually use flash_read.sh and flash_write.sh files in monitoring process?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, flash_read.sh and flash_write.sh are executed by Zabbix and are separated into two files for ease of use with zabbix. Meanwhile flash_probe.sh is executed by a crontab or another automation tool due to Zabbix's timeout limitations.

check_snipeit() {
ip=$1
if [[ "$ip" =~ [0-9] ]]; then
if osfv_cli snipeit list_used | grep -qw "$ip"; then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is probably not needed, see below.

if osfv_cli snipeit list_used | grep -qw "$ip"; then
return 0 # IP is checked out
else
osfv_cli snipeit check_out --rte_ip "$ip"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simply try to check out. If platform is used, you will simply get an arror:

Error checking out asset 52
Response data: {'status': 'error', 'messages': 'That asset is not available for checkout!', 'payload': {'asset': '00052'}}

output_pass="/usr/lib/zabbix/externalscripts/output_pass.txt"
output_fail="/usr/lib/zabbix/externalscripts/output_fail.txt"
output_used="/usr/lib/zabbix/externalscripts/output_used.txt"
stolen="/usr/lib/zabbix/externalscripts/stolen.txt"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the purpose of this file? Can you briefly document each of them as a comment above?

output_used="/usr/lib/zabbix/externalscripts/output_used.txt"
stolen="/usr/lib/zabbix/externalscripts/stolen.txt"

> "$output_used"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When and where do you clear those files? Why not do it here at the beginning of the script?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i used redirects to clear the file out of habbit, already changed them to rm
> "$output_used"
> "$output_pass"
> "$output_fail"
> "$stolen"


source /usr/lib/zabbix/externalscripts/venv/bin/activate

input_file="/usr/lib/zabbix/externalscripts/macros.txt"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this file, and what it contains?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$input_file in this case macros.txt
contains list of IPs to use
I explained it in new commit

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ip=$1
if [[ "$ip" =~ [0-9] ]]; then
if osfv_cli snipeit list_used | grep -qw "$ip"; then
return 0 # IP is checked out
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This logic seems reversed. When device is taken, I would treat it as some form of error. And we return 0 on sucess, and non-zero on error.

else
osfv_cli snipeit check_out --rte_ip "$ip"
echo "$ip" >> "$stolen"
return 1 # IP not checked out
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Return 0 on success

return 1 # IP not checked out
fi
else
return 1 # IP contains no numbers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Return non-zero on error. ideally, different error code for different type of error (not 1 in two places).

fi
done < "$input_file"

while IFS= read -r ip || [ -n "$ip" ]; do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was it added just recently, and should fix the devices being reserved on robot for too long?

# echo "$ip" >> "$output_used"
else
echo "$ip not found in snipeit list_used, probing flash..."
probe_flash "$ip"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about simply invoking check_in below? After we call probe_flash, we no longer need the device to be checked out, right? This makes another loop and stolen.txt not needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants