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</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><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.lud...@citrix.com
> <mailto:jonathan.lud...@citrix.com>>:
>
>     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:
>>
>>     https://github.com/hswayne77/CitrixXenserver-monitoring
>>
>>        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.lud...@citrix.com
>>     <mailto:jonathan.lud...@citrix.com>>:
>>
>>         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 = "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@lists.xen.org <mailto:Xen-api@lists.xen.org>
>>>         http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api
>>
>>
>>         _______________________________________________
>>         Xen-api mailing list
>>         Xen-api@lists.xen.org <mailto:Xen-api@lists.xen.org>
>>         http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api
>>
>>
>
>
>
>
> _______________________________________________
> Xen-api mailing list
> Xen-api@lists.xen.org
> http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

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

Reply via email to