Skip to content

suryarend/azure-iot-pcs-remote-monitoring-dotnet

 
 

Repository files navigation

Build Issues Gitter

Remote Monitoring preconfigured solution with Azure IoT

Overview

This solution is currently in preview (learn more from our blog announcement). The remote monitoring solution incorporates learnings from customers and partners, and is a fully operational IoT solution right out of the box.

Plus, a lot of great functionality will be coming in the next few months, including:

  • Extended method support for your simulated devices to help demo and test additional scenarios
  • Additional ‘Getting Started’ and ‘Customization’ documentation in our GitHub repositories
  • Easier retrieval of your physical device connection string in the web solution
  • Performance enhancements
  • UX improvements
  • Expanded browser compatibility (Internet Explorer and others)

We will also be fixing known bugs. You can refer to our Issues List in this repo (and in any submodules) to see known requests and issues.

There is also a Java version of this repo available here

The preview offers many features but there are known bugs. You can refer to our Issues List in this repo (and in any submodules) to see known requests and issues. If something doesn’t work as you would expect, feel free to submit new issues. We also love PRs for fixes too!

We have a User Voice channel to receive suggestions for features and future supported scenarios. We encourage you to browse what others are suggesting, vote for your favorites, and even enter suggestions of your own.

Remote monitoring helps you get better visibility into your devices, assets, and sensors wherever they happen to be located. You can collect and analyze real-time device data using a remote monitoring solution that triggers automatic alerts and actions — from remote diagnostics to maintenance requests. You can also command and control your devices.

Azure IoT Hub is a key building block of the remote monitoring solution. IoT Hub is a fully managed service that enables reliable and secure bidirectional communications between millions of IoT devices and a solution back end.

Check out the Interactive Demo for a detailed overview of features and use cases.

To get started you can follow along with the Getting Started for a command line deployment. You can also deploy using the web interface at https://azureiotsuite.com.

Getting Started

Prerequisites

Setup

  1. Open a terminal window or command shell

  2. Check out the repository and submodules

    git clone --recursive https://github.com/Azure/azure-iot-pcs-remote-monitoring-dotnet.git
    

    If you cloned the repo without the --recursive flag and it's your first time updating the submodules, you can use git submodule update --init --recursive. More information on submodules here.

  3. Set up command line interface for deployments

    Mac/Linux

    cd azure-iot-pcs-remote-monitoring-dotnet/cli
    npm install
    npm start
    npm link
    

    Windows

    cd azure-iot-pcs-remote-monitoring-dotnet\cli
    npm install
    npm start
    npm link
    
  4. Sign into your Azure account with

    pcs login
    

Deploy a remote monitoring solution

Standard Deployment

A standard deployment is a production-ready solution for reliability and scale. See Basic vs. Standard Deployments for more details.

pcs -s standard

Basic Deployment

A lower-cost showcase solution best for discovering and learning about what a Remote Monitoring preconfigured solution has to offer. See Basic vs. Standard Deployments for more details.

pcs

Local Deployment

To set up a Remote Monitoring Solution locally see Local Development

Common Scenarios

All done? Connect a device!

By default, the solution uses simulated devices. You can start adding your own devices with the instructions here: Connect a physical device

Stopping Simulated Devices

Once you are ready, you can stop the default simulated devices by calling the simulation endpoint with the instructions here.

Basic vs. Standard Deployments

Basic

Basic deployment is geared toward showcasing the solution. To reduce the cost of this demonstration, all the microservices are deployed in a single virtual machine; this is not considered a production-ready architecture.

Our Standard deployment option should be used when you are ready to customize a production-ready architecture, built for scale and extensibility.

Creating a Basic solution will result in the following Azure services being provisioned into your Azure subscription at cost:

Count Resource Type Used For
1 Linux Virtual Machine Standard D1 V2 Hosting microservices
1 Azure IoT Hub S1 – Basic tier Device management and communication
1 Azure Cosmos DB Standard Storing configuration data, and device telemetry like rules, alarms, and messages
1 Azure Storage Account Standard Storage for VM and streaming checkpoints
1 Web Application Hosting front-end web application

Standard

The standard deployment is a production-ready deployment a developer can customize and extend to meet their needs. For reliability and scale, application microservices are built as Docker containers and deployed using an orchestrator (Kubernetes by default). The orchestrator is responsible for deployment, scaling, and management of the application.

Creating a Standard solution will result in the following Azure services being provisioned into your Azure subscription at cost:

Count Resource SKU / Size Used For
4 Linux Virtual Machines Standard D2 V2 1 master and 3 agents for hosting microservices with redundancy
1 Azure Container Service Kubernetes orchestrator
1 Azure IoT Hub S1 – Basic tier Device management, command and control
1 Azure Cosmos DB Standard Storing configuration data, and device telemetry like rules, alarms, and messages
5 Azure Storage Accounts Standard 4 for VM storage, and 1 for the streaming checkpoints
1 App Service S1 Standard Application gateway over SSL

Pricing information for these services can be found here. Usage amounts and billing details for your subscription can be found in the Azure Portal.

Architecture Overview

Open in draw.io

Microservices & Docker Containers

Remote Monitoring is the first of our preconfigured solutions to leverage a microservices architecture. The solution is available in both .NET and Java. Microservices have emerged as a prevalent pattern to achieve scale and flexibility (by allowing containers to be scaled individually), without compromising development speed. Microservices compartmentalize the code and provide well defined interfaces making the solution easier to understand and less monolithic. It also further expands options for partners that want to extend our current preconfigured solutions to build finished solutions that can be monetized.

Learn more about Docker Containers

Components

How-to and Troubleshooting Resources

Feedback

  • If you have feedback, feature requests, or find a problem, you can create a new issue in the GitHub Issues
  • We also have a User Voice channel to receive suggestions for features and future supported scenarios.

Contributing

Refer to our contribution guidelines

License

Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License.

About

Azure IoT .NET solution for Remote Monitoring

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 93.6%
  • Batchfile 6.4%