{"action":"opened","issue":{"url":"https://api.github.com/repos/spotify/heroic/issues/174","repository_url":"https://api.github.com/repos/spotify/heroic","labels_url":"https://api.github.com/repos/spotify/heroic/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/spotify/heroic/issues/174/comments","events_url":"https://api.github.com/repos/spotify/heroic/issues/174/events","html_url":"https://github.com/spotify/heroic/issues/174","id":197387132,"number":174,"title":"Meaningful Metrics","user":{"login":"udoprog","id":111092,"avatar_url":"https://avatars.githubusercontent.com/u/111092?v=3","gravatar_id":"","url":"https://api.github.com/users/udoprog","html_url":"https://github.com/udoprog","followers_url":"https://api.github.com/users/udoprog/followers","following_url":"https://api.github.com/users/udoprog/following{/other_user}","gists_url":"https://api.github.com/users/udoprog/gists{/gist_id}","starred_url":"https://api.github.com/users/udoprog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/udoprog/subscriptions","organizations_url":"https://api.github.com/users/udoprog/orgs","repos_url":"https://api.github.com/users/udoprog/repos","events_url":"https://api.github.com/users/udoprog/events{/privacy}","received_events_url":"https://api.github.com/users/udoprog/received_events","type":"User","site_admin":false},"labels":[{"id":289898839,"url":"https://api.github.com/repos/spotify/heroic/labels/rfc","name":"rfc","color":"5319e7","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-12-23T15:29:45Z","updated_at":"2016-12-23T15:29:45Z","closed_at":null,"body":"This change proposes to introduce more structure into existing time series that shows which tags that indicate what a time series _means_.\r\n\r\n#### Suggestion\r\n\r\nExisting time series **A** look like the following:\r\n\r\n```json\r\n{\r\n  \"key\": \"system\",\r\n  \"tags\": {\r\n    \"host\": \"database.example.com\",\r\n    \"role\": \"database\",\r\n    \"what\": \"disk-used\",\r\n    \"unit\": \"%\",\r\n    \"mountpoint\": \"/\"\r\n  }\r\n}\r\n```\r\n\r\nThis proposes the introduction of the `meaning` field:\r\n\r\n```\r\n{\r\n  \"meaning\": [\"what\", \"unit\"]\r\n}\r\n```\r\n\r\nWhat this indicates is that only time series which have the same _meaning structure_ are the same, and can be compared to each other.\r\n\r\nAssume there is another time series **B** that looks like this:\r\n\r\n```json\r\n{\r\n  \"key\": \"system\",\r\n  \"tags\": {\r\n    \"host\": \"database.example.com\",\r\n    \"role\": \"database\",\r\n    \"what\": \"disk-used\",\r\n    \"unit\": \"Mb\",\r\n    \"mountpoint\": \"/\"\r\n  },\r\n  \"meaning\": [\"what\", \"unit\"]\r\n}\r\n```\r\n\r\nThe meaming structures for **A** and **B** are as follows:\r\n\r\n```json\r\nA: {\"what\": \"disk-used\", \"unit\": \"%\"}\r\nB: {\"what\": \"disk-used\", \"unit\": \"Mb\"}\r\n```\r\n\r\nThis indicates that they are _not_ compatible. The reasoning being that they have different units.\r\n\r\nWith meaning structures, we can implement the following restrictions:\r\n\r\n* One may only query for a single meaning at a given time.\r\n* One may only aggregate over a single meaning for a given time."}}
{"actor":{"display_login":"udoprog"}}