vCenter datastore monitoring script with multiple inputs

Templates, scripts for templates, scripts and requests for templates.

Moderators: Developers, Moderators

Post Reply
daveram
Posts: 9
Joined: Wed Oct 18, 2023 5:02 am

vCenter datastore monitoring script with multiple inputs

Post by daveram »

Hi all and thanks for looking at my post!
I'm very new to Cacti, and have maybe jumped in at the deep end slightly.

I've got a script that I've slightly adjusted from it's original use case as a Nagios plugin.
The script queries the vCenter API to get various values about a specifed datstore.

The script is called with two arguments; vCenter server and the name of the datastore, and it outputs 4 metrics.
For example;
./my_script.sh vc_name datastore_name
used_percentage:35 capacityGB:2559 free_spaceGB:902 used_spaceGB:1656

After an initial learning curve, I managed to get Cacti graphing these metrics by hard-coding the vcenter name and datastore in the Data Input Method page along with the script.
This though obviously isn't scalable, as I'd like to be able to have a single Data Input Method that would allow me to use the vCenter name and datastore name as variable elsewhere.
Now, having the <host> variable in place and graphing against the vCenter server isn't an issue, but I'm really struggling with the second "datastore" variable, as can't see how this would be set or called.

Apologies for what is probably a very newbie problem, but i can't find the solution anywhere else on the forum or elsewhere.
Many thanks for any suggestions and help with this.
macan
Cacti Pro User
Posts: 898
Joined: Tue Mar 18, 2008 2:30 am
Location: Czech

Re: vCenter datastore monitoring script with multiple inputs

Post by macan »

where you get the data store names? Is your script able to return datastore names?
Let the Cacti grow!
daveram
Posts: 9
Joined: Wed Oct 18, 2023 5:02 am

Re: vCenter datastore monitoring script with multiple inputs

Post by daveram »

Yes, my original version of the script actually gave an output of all datastore names followed by percent usage, for example;
datastore1:22 datastore2:11 and so on...

I changed it so that I would instead provide the datastore name as an input so it would give me multiple metric outputs for each datastore instead, but the list of datastores is still there if needed
macan
Cacti Pro User
Posts: 898
Joined: Tue Mar 18, 2008 2:30 am
Location: Czech

Re: vCenter datastore monitoring script with multiple inputs

Post by macan »

I hope I'm not mistaken. Try to look at your_cacti/scripts/query_unix_partitions.pl and your_cacti/resource/script_queryies/unix_disk.xml and data_collection -> data queries -> UNIx - Get Mounted Partitions.

I think that there is the same situation
Let the Cacti grow!
daveram
Posts: 9
Joined: Wed Oct 18, 2023 5:02 am

Re: vCenter datastore monitoring script with multiple inputs

Post by daveram »

Thanks. I've found the Unix perl script and XML file. I just need to spend some time understanding how it fits together and how to translate this this into the vCenter method.
I've also been advised that there are likely existing scripts and templates to do what I want which might be easier than trying to do it from scratch.
macan
Cacti Pro User
Posts: 898
Joined: Tue Mar 18, 2008 2:30 am
Location: Czech

Re: vCenter datastore monitoring script with multiple inputs

Post by macan »

Let the Cacti grow!
daveram
Posts: 9
Joined: Wed Oct 18, 2023 5:02 am

Re: vCenter datastore monitoring script with multiple inputs

Post by daveram »

Thanks, that looks really useful.
daveram
Posts: 9
Joined: Wed Oct 18, 2023 5:02 am

Re: vCenter datastore monitoring script with multiple inputs

Post by daveram »

Hi again. Thanks for the previous info and link to the documentation.
I've been spending a few days on and off working on this, but have yet to make it work with my scripts.

Currently, I have two scripts.
1.) A script that displays a list of datastore names as gathered via the vSphere API.
The output looks like this;
./vc_datastore_get_list.sh vc-server-1
datastore-1,datastore-2,datastore-3
and so on.

2.) A script that gets the required values for; used_percentage, capacity, free_space and used_space for a datastore. The output looks like this;
./query_datastore_disk_usage.sh vc-server-1 datastore-1
used_percentage:34 capacity:2748510633984 free_space:952080793600 used_space:1796429840384

Below is the XML file I've created to handle these fields.

I'm trying to follow the documentation whilst attempting to cater it to my specific requirement, but so far, failing.

Would you please be able to give any advice on my current approach, and any next steps I need to take to get this working with a query and data inputs?
Many kind thanks!


XML file contents;

<interface>
<name>Get Datastore Disk Usage</name>
<script_path>/usr/share/cacti/scripts/query_datastore_disk_usage.sh</script_path>
<arg_prepend>|host_hostname| |arg1| |arg2|</arg_prepend>
<output_delimiter> </output_delimiter>

<fields>
<used_percentage>
<name>Used Percentage</name>
<direction>output</direction>
<query_name>used_percentage</query_name>
</used_percentage>

<capacityGB>
<name>Capacity</name>
<direction>output</direction>
<query_name>capacity</query_name>
</capacityGB>

<free_spaceGB>
<name>Free Space</name>
<direction>output</direction>
<query_name>free_space</query_name>
</free_spaceGB>

<used_spaceGB>
<name>Used Space</name>
<direction>output</direction>
<query_name>used_space</query_name>
</used_spaceGB>
</fields>
</interface>
macan
Cacti Pro User
Posts: 898
Joined: Tue Mar 18, 2008 2:30 am
Location: Czech

Re: vCenter datastore monitoring script with multiple inputs

Post by macan »

Again - here is describes all what you need. You have to create single script for it.
https://docs.cacti.net/How-To-Script-Data-Queries.md

If you show me your scripts I will try to help you. Please send it to petr.macek@kostax.cz
Let the Cacti grow!
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests