Corrupted Measurement

Hi, today something strange happened. Suddenly, a wild measurement appeared ����syst� I don’t know how to delete this. It has no fields, no data at all.

I tried to use DROP MEASUREMENT but no luck since the name seems corrupted. Any other solution and a guess about why this is happened?

SHOW MEASUREMENTS

win_aspnet_app
win_cpu
win_disk
win_http_queues
win_mem
win_net
win_pagingfile
win_proc
win_system
win_websvc
win_websvc_cache
����syst�

Any chance you are using Telegraf with the sqlserver input? I’ve heard reports of it creating bad measurements before, particularly if the SqlRequests is enabled.

I think you may be able to remove this measurement if we can determine the true measurement name. What is the response if you query it with curl:

curl http://localhost:8086/query?db=telegraf&q=show%20measurements

Hi @daniel,

Here is what I get from running that query:

\ufffd\ufffd\ufffd\ufffdsyst\ufffd\u0000

I’ve tried this: DROP MEASUREMENT "\ufffd\ufffd\ufffd\ufffdsyst\ufffd\u0000" Yet, no luck.

ERR: error parsing query: found \u, expected identifier at line 1, char 20

By the way, yes I’m using sqlserver input with SqlRequests enabled.

I’ve also tried this:

 curl -X POST -G http://localhost:8086/query --data-urlencode "u=user" --data-urlencode "p=passwd" 
--data-urlencode "db=SERVERS" --data-urlencode "q=DROP MEASUREMENT 
"\ufffd\ufffd\ufffd\ufffdsyst\ufffd\u0000""

Again, no luck.

{"results":[{"statement_id":0}]}

Looks like a plugin wrote some unrepresentable char (at least in UTF8).
I’m not sure if the value is set correctly in the db but unrepresentable in the output (but I don’t think so since Telegraf uses UTF8 to encode data).
The string sent by Telegraf should have been something like this:

����syst�n/a

maybe by querying the db using a different representation of those chars will work (i.e. the one above). see those links for available representations
https://charbase.com/fffd-unicode-replacement-character
https://charbase.com/0000-unicode-null

No luck, sadly. :confused: I wish he had an option to remove the measurement using python library and without calling the measreument by name but it’s index/order.

It looks that this is not the real name of the measurement, the unprintable characters are being replaced when the response is written as JSON.

The easy way to get rid of this probably is to wait for the retention policy to remove it, but I think if you request the response as msgpack we can get at the real measurement name. This response is a binary file:

curl 'http://localhost:8086/query?db=telegraf&q=show+measurements' -H 'Accept: application/x-msgpack' > tmp

It should be possible to extract the measurement name from this and send a “drop measurement” query with curl that removes the measurement.

Probably best to disable the SqlRequests for now as well. I was hoping this was fixed in #6818 but if you are using the latest Telegraf version there may be an additional bug.