[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-API] get 3 hosts real-time performing metrics and show them on the same page.


  • To: <xen-api@xxxxxxxxxxxxx>
  • From: Jon Ludlam <jonathan.ludlam@xxxxxxxxxx>
  • Date: Wed, 26 Nov 2014 13:26:14 +0000
  • Delivery-date: Wed, 26 Nov 2014 13:26:32 +0000
  • List-id: User and development list for XCP and XAPI <xen-api.lists.xen.org>

Here's a sample:

[vagrant@localhost ~]$ python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import xmlrpclib             
>>> import urllib2                                                                                                                                                                                                            
>>> s=xmlrpclib.Server("http://169.254.0.20/")                                                                                                                                                                                                
>>> sess=s.session.login_with_password("root","xenroot")['Value']                                                                                                                                                                             
>>> resp = urllib2.urlopen("http://169.254.0.23/rrd_updates?session_id=%s&start=1417006800" % sess)
>>> resp.read()
'<?xml version="1.0" encoding="UTF-8"?>\n<xport><meta><start>1417006860</start><step>60</step><end>1417008180</end><rows>24</rows><columns>2</columns><legend><entry>AVERAGE:vm:7d3f9b63-82b1-4328-b475-f85417c6fe82:cpu0</entry><entry>AVERAGE:vm:7d3f9b63-82b1-4328-b475-f85417c6fe82:memory</entry></legend></meta><data><row><t>1417008180</t><v>0.0307</v><v>788529152.0000</v></row><row><t>1417008120</t><v>0.0348</v><v>788529152.0000</v></row><row><t>1417008060</t><v>0.0301</v><v>788529152.0000</v></row><row><t>1417008000</t><v>0.2650</v><v>788529152.0000</v></row><row><t>1417007940</t><v>0.0647</v><v>788529152.0000</v></row><row><t>1417007880& lt;/t><v>0.0452</v><v>788529152.0000</v></row><row><t>1417007820</t><v>0.1465</v><v>525686112.0000</v></row><row><t>1417007760</t><v>NaN</v><v>NaN</v></row><row><t>1417007700</t><v>NaN</v><v>NaN</v></row><row><t>1417007640</t><v>NaN</v><v>NaN</v></row><row><t>1417007580</t><v>NaN</v><v>NaN</v></row><row><t>1417007520</t><v>NaN</v><v>NaN</v></row><row><t>1417007460</t><v>NaN</v><v>NaN</v></row><row><t>1417007400</t><v>NaN</v><v>NaN</v></row><row><t>1417007340</t><v>NaN</v><v>NaN</v></row><row><t>1417007280</t>&l t;v>NaN</v><v>NaN</v></row><row><t>1417007220</t><v>NaN</v><v>NaN</v></row><row><t>1417007160</t><v>NaN</v><v>NaN</v></row><row><t>1417007100</t><v>NaN</v><v>NaN</v></row><row><t>1417007040</t><v>NaN</v><v>NaN</v></row><row><t>1417006980</t><v>NaN</v><v>NaN</v></row><row><t>1417006920</t><v>NaN</v><v>NaN</v></row><row><t>1417006860</t><v>NaN</v><v>NaN</v></row><row><t>1417006800</t><v>NaN</v><v>NaN</v></row></data></xport>'
>>>

Jon


On 25/11/14 13:19, Will Sun wrote:
Hi Jon,
Thanks very much. As you said, I create one session on the master,(the code I give in last email is also firstly creates one session on the master ), then I use that session for querying the RRD data on one slave.But it shows failure ['HOST_OFFLINE'], that means I attempted an operation which involves a host which cannot be contacted.

I want to confirm one thing: where is the RRD of slave stored? master host or slave host itself? I think it's slave.
How do I use the session on the master to query the RRD data on each slave? Can you give me a sample?


Thanks and Regards,

Will

2014-11-24 23:17 GMT+08:00 Jon Ludlam <jonathan.ludlam@xxxxxxxxxx>:
Hi Will,

It looks like what the code is doing is trying to create the session on the slave before doing the RRD GET call. Sessions are handled by the pool master, so that's why you get the HOST_IS_SLAVE error.

What you should do is create one session on the master, then use that one session for querying the RRD data on each slave.

HTH,

Jon




On 24/11/14 13:05, Will Sun wrote:
Hi Jon,
   Thanks very much. In fact ,I have used the RRD interface to get the master's metrics,and it worked fine. The codes as follows:


   But I cannot get the slave's metrics , unless I use the commands "pool.designate_new_master" to make slave become master. If I do so, I still cannot get the other two slaves metrics.
   In the Citrix XenServer Management API ,  I can only manage  the slave host by the master . In the session, the arguments "url" cannot be the slave's ip, or it will show the  failure: [HOST_IS_SLAVE].
   I do not want to get just one host metrics, instead I want to get all 3 hosts metrics in the same pool and  to show them in one page at the same time. 


Thanks and Regards

Will

2014-11-24 19:40 GMT+08:00 Jon Ludlam <jonathan.ludlam@xxxxxxxxxx>:
Hi Will,

To get performance metrics, the preferred mechanism is to use the RRD interface - it's much more lightweight than using the API 'query_data_source'. Have a look here for some docs and sample code:

http://xenserver.org/partners/developing-products-for-xenserver/18-sdk-development/96-xs-dev-rrds.html

Jon


On 24/11/14 02:46, Will Sun wrote:
Hi all,
I build a pool includes 3 hosts : vGate7, vGate8 and vGate9. vGate9 is the master, others are slaves.
I build a page to show the host and vm performing metrics(e.g.cpu_utilization)  on it. It works fine for the mater (vGate9).But it cannot get the slave performing metrics.

As follows in picture 1 :



In python, I use the following codes to get the CPU Usage:

              import XenAPI
              url = ""true" href="https://host_ip" target="_blank">https://host_ip"
              username = "hostname"
              password = "self_password"

              session = XenAPI.session(url)
              session.xenapi.login_with_password(username,password)


              cpu_usage = session.xenapi.host.query_data_source("OpaqueRef:35ad218e-09e2-4117-e93d-0de371265448" , 'cpu_avg')
              # OpaqueRef:35ad218e-09e2-4117-e93d-0de371265448  is vGate7 (slave),
              # and it will show XenAPI.Failure:['HOST_OFFLINE'] 


I attempt to make an API call to a slave (even someting trivial like pool.get_all()),I get the ['HOST_IS_SLAVE'] exception,along with the master's IP address.


The main problem is to get 3 hosts real-time performing metrics and to show them on the same page.
Is there any workaround to solve this problem? 
The attachment is picture1, incase you cannot see it  in the message.
Thank you in advance!


Thanks and Regards,
Will


_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxx
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api


_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxx
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api






_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxx
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

_______________________________________________
Xen-api mailing list
Xen-api@xxxxxxxxxxxxx
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.