<div dir="ltr"><div>Hi Eoghan,</div><div><br></div><div>Thank you. Tried this, but unfortunately it seems the user_metadata part causes a failure.</div><div>Command having just AutoScalingGroupName as a metadata goes through ok:</div>
<div><br></div><div>curl -X POST -H 'X-Auth-Token: f66288ad283d4ee0a322d03c95db2a4b' -H 'Content-Type: application/json' -d '[ { "counter_name": "vm_cpu_load", "resource_id": "8d326543-cde9-4c3c-9c7e-3973cfbcb057", "resource_metadata" : { "AutoScalingGroupName": "tykyauto-Group_B-ljhkoj244qzh" }, "counter_unit": "%", "counter_volume": 11, "counter_type": "gauge" } ]' <a href="http://192.168.100.5:8777/v2/meters/vm_cpu_load">http://192.168.100.5:8777/v2/meters/vm_cpu_load</a></div>
<div><br></div><div>...but when I add the user_metadata part:</div><div><br></div><div>curl -X POST -H 'X-Auth-Token: f66288ad283d4ee0a322d03c95db2a4b' -H 'Content-Type: application/json' -d '[ { "counter_name": "vm_cpu_load", "resource_id": "8d326543-cde9-4c3c-9c7e-3973cfbcb057", "resource_metadata" : { "AutoScalingGroupName": "tykyauto-Group_B-ljhkoj244qzh", "user_metadata": {"server_group": "Group_B"} }, "counter_unit": "%", "counter_volume": 11, "counter_type": "gauge" } ]' <a href="http://192.168.100.5:8777/v2/meters/vm_cpu_load">http://192.168.100.5:8777/v2/meters/vm_cpu_load</a></div>
<div><br></div><div>...the following error occurs:</div><div><br></div><div><43>Apr  4 09:08:56 node-6 ceilometer-ceilometer.collector.dispatcher.database ERROR: Failed to record metering data: not okForStorage</div>
<div>Traceback (most recent call last):</div><div>  File "/usr/lib/python2.7/dist-packages/ceilometer/collector/dispatcher/database.py", line 65, in record_metering_data</div><div>    self.storage_conn.record_metering_data(meter)</div>
<div>  File "/usr/lib/python2.7/dist-packages/ceilometer/storage/impl_mongodb.py", line 451, in record_metering_data</div><div>    upsert=True,</div><div>  File "/usr/lib/python2.7/dist-packages/pymongo/collection.py", line 487, in update</div>
<div>    check_keys, self.__uuid_subtype), safe)</div><div>  File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 969, in _send_message</div><div>    rv = self.__check_response_to_last_error(response)</div>
<div>  File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 911, in __check_response_to_last_error</div><div>    raise OperationFailure(details["err"], details["code"])</div>
<div>OperationFailure: not okForStorage</div><div><br></div><div>I have mongo configured as a database for Ceilometer (otherwise ceilometer-alarm-evaluator error ERROR: Server-side error: "metaquery not implemented" occurs). </div>
<div><br></div><div>In our environment the following versions of Ceilometer components have been installed:</div><div><br></div><div>2013.2.2:</div><div>ceilometer-agent-central</div><div>ceilometer-alarm-evaluator</div><div>
ceilometer-alarm-notifier</div><div>ceilometer-api</div><div>ceilometer-collector</div><div>ceilometer-common</div><div>python-ceilometer</div><div><br></div><div>1:1.0.5:</div><div>python-ceilometerclient</div><div><br></div>
<div>Br,</div><div>-Juha</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 3 April 2014 17:18, Eoghan Glynn <span dir="ltr"><<a href="mailto:eglynn@redhat.com" target="_blank">eglynn@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Juha,<br>
<br>
Your problem is the embedded period in the metadata key: "metering.server_group"<br>
<br>
If the metric were gathered by ceilometer itself in the usual way, then the<br>
compute agent would transform that problematic payload as follows, from:<br>
<br>
{ ..., "resource_metadata" : { "AutoScalingGroupName": "tykyauto-Group_B-hmknsgn35efz", "metering.server_group": "Group_B" }, ... }<br>
<br>
to:<br>
<br>
{ ..., "resource_metadata" : { "AutoScalingGroupName": "tykyauto-Group_B-hmknsgn35efz", "user_metadata": {"server_group": "Group_B"} }, ... }<br>
<br>
You should follow the same pattern.<br>
<br>
Cheers,<br>
Eoghan<br>
<div><div class="h5"><br>
----- Original Message -----<br>
> Maybe this is because I didn't fill in instance related metadata (scaling<br>
> group name and such) to the REST call I made when adding custom metric data<br>
> to Ceilometer. I tried to create metric data again, now with metadata<br>
> filled:<br>
><br>
> $ curl -X POST -H 'X-Auth-Token: 0722fcd0f403425bb8564808c37e8dc8' -H<br>
> 'Content-Type: application/json' -d '[ { "counter_name": "vm_cpu_load",<br>
> "resource_id": "e7eaf484-38b6-4689-8490-40aa8f0df8ae", "resource_metadata" :<br>
> { "AutoScalingGroupName": "tykyauto-Group_B-hmknsgn35efz",<br>
> "metering.server_group": "Group_B" }, "counter_unit": "%", "counter_volume":<br>
> 11, "counter_type": "gauge" } ]'<br>
> <a href="http://192.168.100.5:8777/v2/meters/vm_cpu_load" target="_blank">http://192.168.100.5:8777/v2/meters/vm_cpu_load</a><br>
><br>
> ...but as a result I can see the following error in ceilometer log:<br>
><br>
> <43>Apr 3 14:24:01 node-6 ceilometer-ceilometer.collector.dispatcher.database<br>
> ERROR: Failed to record metering data: not okForStorage<br>
> Traceback (most recent call last):<br>
> File<br>
> "/usr/lib/python2.7/dist-packages/ceilometer/collector/dispatcher/database.py",<br>
> line 65, in record_metering_data<br>
> self.storage_conn.record_metering_data(meter)<br>
> File "/usr/lib/python2.7/dist-packages/ceilometer/storage/impl_mongodb.py",<br>
> line 451, in record_metering_data<br>
> upsert=True,<br>
> File "/usr/lib/python2.7/dist-packages/pymongo/collection.py", line 487, in<br>
> update<br>
> check_keys, self.__uuid_subtype), safe)<br>
> File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 969, in<br>
> _send_message<br>
> rv = self.__check_response_to_last_error(response)<br>
> File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 911, in<br>
> __check_response_to_last_error<br>
> raise OperationFailure(details["err"], details["code"])<br>
> OperationFailure: not okForStorage<br>
><br>
> Hmm. What am I doing wrong here?<br>
><br>
> Thanks,<br>
> -Juha<br>
><br>
><br>
><br>
><br>
> On 2 April 2014 14:04, Juha Tynninen < <a href="mailto:juha.tynninen@tieto.com">juha.tynninen@tieto.com</a> > wrote:<br>
><br>
><br>
><br>
> Hi,<br>
><br>
> I'm sending custom Ceilometer metrics from inside VM instance with REST call<br>
> to<br>
> <a href="http://192.168.100.5:8777/v2/meters/vm_cpu_load" target="_blank">http://192.168.100.5:8777/v2/meters/vm_cpu_load</a> .<br>
><br>
> This is successful and I can see the entered metric data with Ceilometer:<br>
><br>
> # ceilometer sample-list -m vm_cpu_load<br>
> -q="resource_id=91951d0a-9a43-4894-99fb-ac67a1098771" | tail -n +4 | head -n<br>
> -1 | sort -k 12<br>
> ...<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 2.6 | % |<br>
> | 2014-03-30T19:20:38.080000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 3.3 | % |<br>
> | 2014-03-30T19:20:58.223000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 2.6 | % |<br>
> | 2014-03-30T19:21:18.078000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 28.6 | % |<br>
> | 2014-03-30T19:21:38.894000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 1.0 | % |<br>
> | 2014-03-30T19:21:59.370000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 2.3 | % |<br>
> | 2014-03-30T19:22:20.255000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 0.3 | % |<br>
> | 2014-03-30T19:22:40.351000 |<br>
> | 91951d0a-9a43-4894-99fb-ac67a1098771 | vm_cpu_load | gauge | 1.9 | % |<br>
> | 2014-03-30T19:23:00.317000 |<br>
><br>
> # ceilometer meter-list | grep vm_cpu_load | grep<br>
> 91951d0a-9a43-4894-99fb-ac67a1098771<br>
> | vm_cpu_load | gauge | % | 91951d0a-9a43-4894-99fb-ac67a1098771 |<br>
> | 2884e2f624224227bb63d77a040126e6 | a12aee6f0da04d8d976eb4b761a73e14 |<br>
><br>
> I've started the instance with a Heat template having AutoScaling defined and<br>
> I'm trying to base the scaling actions to this custom metric.<br>
> The problem is that the autoscaling does not occur.<br>
><br>
> "Resources" : {<br>
><br>
> "Group_B" : {<br>
> "Type" : "AWS::AutoScaling::AutoScalingGroup",<br>
> "Properties" : {<br>
> "AvailabilityZones" : { "Fn::GetAZs" : ""},<br>
> "LaunchConfigurationName" : { "Ref" : "Group_B_Config" },<br>
> "MinSize" : "1",<br>
> "MaxSize" : "3",<br>
> "Tags" : [<br>
> { "Key" : "metering.server_group", "Value" : "Group_B" }<br>
> ],<br>
> "VPCZoneIdentifier" : [ { "Ref" : "Private Application Subnet ID" } ]<br>
> }<br>
> },<br>
> ...<br>
> "Group_B_Config" : {<br>
> "Type" : "AWS::AutoScaling::LaunchConfiguration",<br>
> "Properties": {<br>
> "ImageId" : { "Ref" : "Image Id" },<br>
> "InstanceType" : { "Ref" : "Instance Type" },<br>
> "KeyName" : { "Ref" : "Key Name" }<br>
> }<br>
> },<br>
> ...<br>
> "CPUAlarmHigh": {<br>
> "Type": "OS::Ceilometer::Alarm",<br>
> "Properties": {<br>
> "description": "Scale-up if CPU is greater than 80% for 60 seconds",<br>
> "meter_name": "vm_cpu_load",<br>
> "statistic": "avg",<br>
> "period": "60",<br>
> "evaluation_periods": "1",<br>
> "threshold": "80",<br>
> "alarm_actions":<br>
> [ {"Fn::GetAtt": ["ScaleUpPolicy", "AlarmUrl"]} ],<br>
> "matching_metadata":<br>
> {"metadata.user_metadata.server_group": "Group_B" },<br>
> "comparison_operator": "gt",<br>
> "repeat_actions" : true<br>
> }<br>
> },<br>
> ...<br>
> nova show 91951d0a-9a43-4894-99fb-ac67a1098771<br>
> ...<br>
> | metadata | { u'AutoScalingGroupName': u'tykyauto-Group_B-76nubm24bnf6',<br>
> | u'metering.server_group': u'Group_B'} |<br>
><br>
> For some reason the statistics query does not return anything when queried<br>
> with the scaling group name, this probably explains why auto scaling actions<br>
> are not triggered...? Without query parameter data is returned. Data is<br>
> returned also ok for some other counter e.g. for cpu_util.<br>
><br>
> # ceilometer statistics -m vm_cpu_load -q<br>
> metadata.user_metadata.server_group=Group_B -p 60<br>
><br>
> # ceilometer statistics -m vm_cpu_load<br>
> +--------+----------------------------+----------------------------+-------+-----+-------+--------+---------------+------------+----------------------------+----------------------------+<br>
> | Period | Period Start | Period End | Count | Min | Max | Sum | Avg |<br>
> | Duration | Duration Start | Duration End |<br>
> +--------+----------------------------+----------------------------+-------+-----+-------+--------+---------------+------------+----------------------------+----------------------------+<br>
> | 0 | 2014-03-28T21:14:34.370000 | 2014-03-28T21:14:34.370000 | 520 | 0.3 |<br>
> | 100.0 | 5865.5 | 11.2798076923 | 170135.609 | 2014-03-28T21:14:34.370000 |<br>
> | 2014-03-30T20:30:09.979000 |<br>
> +--------+----------------------------+----------------------------+-------+-----+-------+--------+---------------+------------+----------------------------+----------------------------+<br>
><br>
> Any ideas what might be the cause for this behaviour...?<br>
><br>
> Many thanks,<br>
> -Juha<br>
><br>
><br>
</div></div>> _______________________________________________<br>
> Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
> Post to     : <a href="mailto:openstack@lists.openstack.org">openstack@lists.openstack.org</a><br>
> Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
><br>
</blockquote></div><br></div>