In prior times, the types of devices that had an Internet connection was fairly limited and might include conventional computers, such as desktop computers, laptops, tablet PCs, and smartphones. But more recently, the variety of devices that might have an Internet connection has quickly expanded to numerous device types. As examples, Internet connections may be found in some wearables (such as smart watches and smart glasses), household appliances (such as refrigerators and microwaves), security devices (such as cameras, door locks, window impact sensors, location trackers), smart home devices (such as temperature sensors, garage door openers, lights), and so forth. Each such Internet-enabled device has a unique identifier (such as an Internet Protocol (IP) address) and the ability to communicate over the Internet.
Internet-enabled devices often report regarding their operations to a centralized store, such as cloud-based storage. Operations of such devices are usually as expected and designed for those devices. However, an Internet-enabled device can be subject to a variety of dangers that can cause the device to operate in ways not typical for such devices. For instance, devices might behave unusually when subject to temperatures that are outside of designed operational temperature ranges, when subject to moisture or chemicals, or when infected with a computer virus.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practice.
At least some embodiments described herein relate to the monitoring of operations of different types of devices to determine when the devices have varied from usual operation. As an example, the devices might be connected, directly or through a proxy, to a cloud service, and may be innumerable devices of a variety of different types. The principles described herein allow for the detection of operational problems of a wide assortment of devices (e.g., Internet of Things or “IoT”) devices. Such operational problems might be caused by the physical environment of the device, or perhaps be a result of a hardware or software degradation within the device.
In accordance with the principles described herein, the operations of any number of such devices are measured. As an example, one or more operational logs may be analyzed to construct operational measurements of the devices. Based on the measurements, the devices are grouped based on the reported operations to thereby form multiple groups of devices grouped by operational similarity. Such operational measurements might be, for example, communication pattern characteristics between the devices and cloud services.
Then, standard operational characteristics are defined for each group of devices. The operational characteristics for the devices are monitored so as to detect when a particular device has varied from this defined standard operation. When a variance is detected, an alert is provided to that effect.
Thus, order is imposed on a mass of devices of widely varying types of devices (such as might be found in the Internet of Things). Without knowing ahead of time what type of devices are being monitored, the principles described herein still allow for the detection of when those devices are no longer operating properly.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of various embodiments will be rendered by reference to the appended drawings. Understanding that these drawings depict only sample embodiments and are not therefore to be considered to be limiting of the scope of the invention, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
At least some embodiments described herein relate to the monitoring of operations of different types of devices to determine when the devices have varied from usual operation. As an example, the devices might be connected, directly or through a proxy, to a cloud service, and may be innumerable devices of a variety of different types. The principles described herein allow for the detection of operational problems of a wide assortment of devices (e.g., Internet of Things or “IoT”) devices. Such operational problems might be caused by the physical environment of the device, or perhaps be a result of a hardware or software degradation within the device.
In accordance with the principles described herein, the operations of any number of such devices are measured. As an example, one or more operational logs may be analyzed to construct operational measurements of the devices. Based on the measurements, the devices are grouped based on the reported operations to thereby form multiple groups of devices grouped by operational similarity. Such operational measurements might be, for example, communication pattern characteristics between the devices and cloud services.
Then, standard operational characteristics are defined for each group of devices. The operational characteristics for the devices are monitored so as to detect when a particular device has varied from this defined standard operation. When a variance is detected, an alert is provided to that effect.
Thus, order is imposed on a mass of devices of widely varying types of devices (such as might be found in the Internet of Things). Without knowing ahead of time what type of devices are being monitored, the principles described herein still allow for the detection of when those devices are no longer operating properly.
This patent application will be organized as follows. First, environments having devices of many different types and operational characteristics will be described with respect to
The devices 101 may be Internet of Things (IoT) devices and may also be of a wide variety of types of devices. It would be impossible to innumerate all types of devices that may be connected to a cloud service. Fortunately, the principles described herein forego the need to have to manually classify each device into a device type. Nevertheless, to just give a flavor of the variety of types of devices there might be, there could be temperature sensors, wearables, rain sensors, medical implants, window shatter detectors, light switches, refrigerators, air flow detectors, light detectors, valves, drones, cameras, and so on practically infinitum.
One thing that each of these types of devices have is that, within each type, the communication characteristics are likely quite similar since the functionality of the devices is fairly well defined. For example, temperature sensors have a very specific function—to sense temperature. Thus, temperature sensors tend to communicate at a particular frequency, with a particular message size and type, using a particular communication protocol, and so forth. More generally stated, properly operating devices within any given type tend to have fairly consistent communication patterns. Significant deviations from such communication patterns can be an indicator that there is a hardware or software problem with the device, or that the device has been exposed to damage from the environment.
In
This illustrated example will be referred to as the “subject example”. However, the subject example is provided only by way of example. The principles described herein applies regardless of the number of device types there are amongst the devices 101, and regardless of the number of devices per device type. Furthermore, the precise device type is also not important to the broader principles described herein. For instance, the six upward-pointing triangular devices 101B, 101D, 101F, 101J, 101M and 101T may all be of the same type (e.g., temperature sensors) or they may be of the same type based on operational characteristics. There is no need for the devices 101 to be classified into types prior to implementing the principles described herein, because the principles described herein classifies these devices automatically.
As represented by arrow 105, each of the devices 101 is connected to the Internet 110 either directly, or through a proxy computing system. Furthermore, as also represented by arrow 105, each of the devices 101 reports at least some of its operations over the Internet 110.
The environment 200 also includes one or more logs 220. Each device reports operational characteristics that are then logged into the log(s) 220. As an example, each device 101 might log its operations into the same log 221. Alternatively, as represented by the ellipsis 222, the devices 101 may log their operations into different logs depending on the device. In one example, the log(s) 220 are maintained by a cloud storage service.
The method 300 includes the monitoring system measuring operations of multiple devices that have reported operations over the Internet (act 301). For instance, in the context of
This measurement may be performed by placing an identifier for each of the devices in multi-dimensional space—where each dimension corresponds to an operational characteristic. Thus, the identifier placement within the multi-dimensional space represents operation of the corresponding device across several operational characteristics.
There are twenty-one points labelled A through U (corresponding to devices 101A through 101U, respectively) plotted in this two-dimensional space. This example implementation of the method 300 involved the monitoring system evaluating the log(s) 220 to identify the performance of each of devices 101A through 101U in each of the two dimensions, and plotting the performance for each device in this multi-dimensional space
In
Furthermore, the number of devices is twenty-one in this example simply because illustrating a large number of points may make the figures unduly complicated. In a real implementation, there may be thousands, millions, billions (or more) points plotted in a multi-dimensional space data structure that has large numbers of dimensions. Such spaces are difficult for humans to conceptualize, but computing systems can represent such spaces using complex data structures, and may operate upon such spaces by operating upon such complex structures.
Before explaining the method 300 of
Referring back to
For example, identifier N is an outlier that is relatively far from other identifiers N. Accordingly, for now, identifier N (corresponding to device 101N of
At this point, the types of devices are now grouped according to their shape as represented in
Now that there is groupings of identifiers, the remaining portions of the method 300 (that is within dashed-lined box 310) may be performed for each group. The monitoring system defines a standard operation for the corresponding group of devices (act 311). As an example,
Thus, the group 501 has corresponding defined standard operation within range 601, group 502 has a defined standard operation within range 602, group 503 has a defined standard operation within range 503, group 504 has a defined standard operation within range 604, group 505 has a defined standard operation within range 605, and group 506 has a defined standard operation within range 606.
More particularly focusing on range 606, the minimum range for operational characteristic A is at minimum limit 621, and the maximum range for operational characteristic A is at maximum limit 622. Similarly, the minimum range for operational characteristic B is at minimum limit 611, and the maximum range for operational characteristic B is at maximum limit 612. The acceptable defined ranges may be defined in other than orthogonal dimensional (with minimums and maximums in each dimension). Acceptable ranges could be more complex multi-dimensional shapes, or even be discontinuous. Nevertheless, in this embodiment, for a given position within the multi-dimensional space, it can be determined whether the corresponding devices falls within acceptable standard operations for a given type, or whether the device does not.
In one embodiment, the region of standard operations for the type may instead be a probability distribution. In that case, for a given position within the multi-dimensional space, a probability that the devices is of a corresponding type can be determined from the position within the probability distribution. This may result in an estimate (rather than a concrete determination) of whether a given device is of a particular type, and whether its operation has deviated from expected operation.
Returning back to
In the context of the multi-dimensional space, this monitoring may result in the movement of positions of identifiers in the multi-dimensional space. This movement may be evaluated to determine whether the movement results in the device operation falling outside of the defined standard operation.
As an example,
The monitoring system may do other activities in response to determining that a device's operation falls outside of the defined standard operation. For example, the monitoring system could redefine the standard operation or probability distribution for the corresponding group. Alternatively, the monitoring system could split or combine groups, or place the device into a different group. For instance, if over time, the performance of the device 101N moved towards the defined standard operation region 605, the identifier N might be placed within group 505, with perhaps the defined standard operation region 605 being redefined to include the identifier N.
The monitoring system may perform more complex inter-device activity. For instance, in the case of
Accordingly, the principles described herein allow for effective monitoring of performance of a variety of devices, without requiring the devices be categorized beforehand. Thus, as the Internet of Things is augmented with new types of devices with new communication patterns, the monitoring may dynamically adjust. Furthermore, the monitoring does not require any software updates in the devices itself. Accordingly, so long as the devices report their operations, the monitoring system continues to determine whether the operations are proper. Thus, an adaptive mechanism has been described for monitoring and alerting regarding performance of a wide number of and variety of devices.
Note that the performance of the methods 300 may be performed by a computing system. Accordingly, a computing system will now be described with respect to
As illustrated in
The computing system 800 has thereon multiple structures often referred to as an “executable component”. For instance, the memory 804 of the computing system 800 is illustrated as including executable component 806. The term “executable component” is the name for a structure that is well understood to one of ordinary skill in the art in the field of computing as being a structure that can be software, hardware, or a combination thereof. For instance, when implemented in software, one of ordinary skill in the art would understand that the structure of an executable component may include software objects, routines, methods that may be executed on the computing system, whether such an executable component exists in the heap of a computing system, or whether the executable component exists on computer-readable storage media.
In such a case, one of ordinary skill in the art will recognize that the structure of the executable component exists on a computer-readable medium such that, when interpreted by one or more processors of a computing system (e.g., by a processor thread), the computing system is caused to perform a function. Such structure may be computer-readable directly by the processors (as is the case if the executable component were binary). Alternatively, the structure may be structured to be interpretable and/or compiled (whether in a single stage or in multiple stages) so as to generate such binary that is directly interpretable by the processors. Such an understanding of example structures of an executable component is well within the understanding of one of ordinary skill in the art of computing when using the term “executable component”.
The term “executable component” is also well understood by one of ordinary skill as including structures that are implemented exclusively or near-exclusively in hardware, such as within a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or any other specialized circuit. Accordingly, the term “executable component” is a term for a structure that is well understood by those of ordinary skill in the art of computing, whether implemented in software, hardware, or a combination. In this description, the term “component” or “vertex” may also be used. As used in this description and in the case, this term (regardless of whether the term is modified with one or more modifiers) is also intended to be synonymous with the term “executable component” or be specific types of such an “executable component”, and thus also have a structure that is well understood by those of ordinary skill in the art of computing.
In the description that follows, embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors (of the associated computing system that performs the act) direct the operation of the computing system in response to having executed computer-executable instructions that constitute an executable component. For example, such computer-executable instructions may be embodied on one or more computer-readable media that form a computer program product. An example of such an operation involves the manipulation of data.
The computer-executable instructions (and the manipulated data) may be stored in the memory 804 of the computing system 800. Computing system 800 may also contain communication channels 808 that allow the computing system 800 to communicate with other computing systems over, for example, network 810.
While not all computing systems require a user interface, in some embodiments, the computing system 800 includes a user interface 812 for use in interfacing with a user. The user interface 812 may include output mechanisms 812A as well as input mechanisms 812B. The principles described herein are not limited to the precise output mechanisms 812A or input mechanisms 812B as such will depend on the nature of the device. However, output mechanisms 812A might include, for instance, speakers, displays, tactile output, holograms, virtual reality, and so forth. Examples of input mechanisms 812B might include, for instance, microphones, touchscreens, holograms, virtual reality, cameras, keyboards, mouse or other pointer input, sensors of any type, and so forth.
Embodiments described herein may comprise or utilize a special purpose or general-purpose computing system including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below. Embodiments described herein also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computing system. Computer-readable media that store computer-executable instructions are physical storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments can comprise at least two distinctly different kinds of computer-readable media: storage media and transmission media.
Computer-readable storage media include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other physical and tangible storage medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computing system.
A “network” is defined as one or more data links that enable the transport of electronic data between computing systems and/or components and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computing system, the computing system properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computing system. Combinations of the above should also be included within the scope of computer-readable media.
Further, upon reaching various computing system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface component (e.g., a “NIC”), and then eventually transferred to computing system RAM and/or to less volatile storage media at a computing system. Thus, it should be understood that readable media can be included in computing system components that also (or even primarily) utilize transmission media.
Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general-purpose computing system, special purpose computing system, or special purpose processing device to perform a certain function or group of functions. Alternatively, or in addition, the computer-executable instructions may configure the computing system to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries or even instructions that undergo some translation (such as compilation) before direct execution by the processors, such as intermediate format instructions such as assembly language, or even source code.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computing system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, datacenters, wearables (such as glasses or watches) and the like. The invention may also be practiced in distributed system environments where local and remote computing systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program components may be located in both local and remote memory storage devices.
Those skilled in the art will also appreciate that the invention may be practiced in a cloud computing environment, which is supported by one or more datacenters or portions thereof. Cloud computing environments may be distributed, although this is not required. When distributed, cloud computing environments may be distributed internationally within an organization and/or have components possessed across multiple organizations.
In this description and the following claims, “cloud computing” is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services). The definition of “cloud computing” is not limited to any of the other numerous advantages that can be obtained from such a model when properly deployed.
For instance, cloud computing is currently employed in the marketplace so as to offer ubiquitous and convenient on-demand access to the shared pool of configurable computing resources. Furthermore, the shared pool of configurable computing resources can be rapidly provisioned via virtualization and released with low management effort or service provider interaction, and then scaled accordingly.
A cloud computing model can be composed of various characteristics such as on-demand, self-service, broad network access, resource pooling, rapid elasticity, measured service, and so forth. A cloud computing model may also come in the form of various application service models such as, for example, Software as a service (“SaaS”), Platform as a service (“PaaS”), and Infrastructure as a service (“IaaS”). The cloud computing model may also be deployed using different deployment models such as private cloud, community cloud, public cloud, hybrid cloud, and so forth. In this description and in the claims, a “cloud computing environment” is an environment in which cloud computing is employed.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.