Webservices to monitor Windows Azure - web-services

Does anybody of you know if there are any Webservices (or other interfaces) to monitor an, for example ASP.NET application, which is hosted within Windows Azure from a NON .NET environment?

If you're talking about monitoring things like performance counters and diagnostics (logging), those may be accessed from any language, as that information is ultimately stored in table Storage (you need to just set it up in your Windows Azure app as it starts up). Storage is accessed via a REST interface. Additionally, there are SDKs for PHP and Java to facilitate this. There are a few additional open source project I've seen as well - for instance, Ruby.
For a desktop monitoring tool, check out Cerebrata's Azure Diagnostics Manager.
Note: the Management API is also REST-based, so you can control deployments from other languages as well (e.g. scaling instances up/down, stopping/deleting a deployment, creating a new service, etc.). You'll see that the PHP SDK already wraps most of the Management API. See here for detailed API documentation.

Dirk, it depends on what you're trying to monitor. There are many partner products like AzureWatch from Paraleap that can monitor applications in Windows Azure, or you could always write an application yourself to monitor your Windows Azure application using the Windows Azure APIs (try AzureMonitor on CodePlex] as a start). You can find out more information about Monitoring on MSDN and the Windows Azure Managed Library Reference.

Related

What is the differnce between a Cloud Foundry and A Web Server

So being an SAP consultant , I am trying to understand the SAP cloud foundry .
As per understanding till now , Cloud Foundry is a runtime engine provider (on the cloud ) .
There are many Cloud Foundry like SUSE , IBM , SAP Cloud Foundry .
Doubt:-
I develop an application for Android ,
I deploy the application in a Web Server ,
Now everybody can download it from Google Play and use it .
I deploy the same application in one of the Cloud Foundry .
Now everybody can download it from Google Play and use it .
Is there any difference between a Cloud Foundry and A Web Server ? Or both are same
EDIT :- Question Clarification
What is the difference between products like SUSE , IBM , SAP Cloud Foundry and Cloud services like AWS , Google Cloud , AZURE
So being an SAP consultant , I am trying to understand the SAP cloud foundry .
I can't talk to anything specific that SAP is doing, but to be called Cloud Foundry you need to be certified which tests compatibility and interoperability (and prohibits lock-in). SAP is certified so there's a base set of functionalty that is common with it and any other provider. I'll only be referencing that here.
There are many Cloud Foundry like SUSE , IBM , SAP Cloud Foundry .
Correct, just a minor terminology note. Each vendor with a certified Cloud Foundry offering is called a provider. Cloud Foundry is the service, the company offering it is the provider.
Oh, you can also run your own, if you or your company prefers that route.
Doubt:- I develop an application for Android , I deploy the application in a Web Server , Now everybody can download it from Google Play and use it .
I deploy the same application in one of the Cloud Foundry . Now everybody can download it from Google Play and use it .
Is there any difference between a Cloud Foundry and A Web Server ? Or both are same
Let's say that you have an Android app. It talks to some services.
For example:
Android Phones 1..X (possibly millions) talking to Servers 1..Y (hopefully not millions).
Each Android phone runs a client, the client talks to the server to perform work
The server provides some functionality, like storing data or performing expensive calculations you wouldn't/can't do on the phone
There's no difference when it comes to the Android app. You're building that. It's running on someone's phone. It's talking over HTTP (or some other protocol) to a service. It's installed through the Play Store (not from your servers).
The main difference is with the services to which your Android app communicates. Specifically, between how you deploy your app on a server/VM directly or on Cloud Foundry and the amount of work required to do so.
For a server you might:
need to request hardware or request a VM from IT, if you're lucky you can provision this on-demand
you need to install an OS, if you're doing this right you have a tool to install this for you, but that tool might need some configuration/tuning
you need to install any software required to run your app (JVM, Dotnet, Python, etc...), including servers like Nginx, Tomcat, Apache Web Server, etc...
you need to configure software and servers (again if you're doing it right you have a tool that helps you manage this, which may require some configuration)
then you build your app (or perhaps take bits from a CI server)
last you set up your app to run, including some sort of watcher/service management software to make sure that when your app crashes it is automatically restarted
There could be more (network/firewall/service work) or less (like if you deploy to a public cloud IaaS) tasks here depending on what it takes to deploy an app in your environment.
This also doesn't touch on the fact that you need to maintain all this. Ensure that you're updating software and the OS in a timely fashion.
For Cloud Foundry:
You do a cf push which takes your code and automatically adds and configures the software needed to run your app (through buildpacks).
Your app is then run on Cloud Foundry.
You're back to writing code.
Other benefits:
It's watched automatically, so if it crashes it restarts. No intervention required.
Logs are captured and made easily available to you, the developer
Network access & TLS are already set up and managed by your provider.
There's a catalog of on-demand and easy to consume services available to your app.
Software is automatically updated whenever you push code.
You can scale up/down easily with load, no new servers to provision and set up.
There's even an autoscaler to automatically scale up/down based on provided rules to save resources/money.
tl;dr - it is an easy button for developers. You just write code and push. All the other stuff you don't want to worry about is done for you.

How to update existing Azure Managed Applications with a new package version?

I created a new package for my Azure Managed Application. How do I get existing instances of the Managed Application to upgrade to that package version (mainTemplate.json + viewDefinition.json)?
We were able to talk to a MSFT rep about this today. The information that we got is that any updates to a Managed Application and its resources must be pushed out manually by the publisher by their mechanism of choice (Azure CLI, ARM templates, Azure Portal, Terraform, etc) via the access that the publisher has to the resource group created for the Managed Application.
There is no way to just push up the new ARM template and have that roll out to deployed instances. He said you can re-publish the offer (if publishing via the Commercial Marketplace) with a new template if you want to make the new template available to be used by freshly-created instances, but that this will never affect instances of the Managed Application that already exist.
The rep agreed that the docs that state the following are misleading to how the process actually works:
You can make sure that all customers are using approved versions. Customers don't have to develop application-specific domain knowledge to manage these applications. Customers automatically acquire application updates without the need to worry about troubleshooting and diagnosing issues with the applications.
This "automatic" versioning process is one that the publisher is responsible for implementing on their own. There is actually no concept of versioning built in to Managed Applications.

Amazon WorkSpace Integration

I have few queries related to Amazon Workspace.
Q1) I am building a .net website from where I want to access the Amazon Workspace. What could be a better way to do so? Is it possible that I create a webpage in my website and from there I can access the Workspace desktop in an iFrame or something? or is there any API support for same?
Q2) Can we set some startup program in Amazon Workspace which initiates any application for eg: photoshop, whenever the Workspace is started?
I think you're missing the point of Amazon Workspaces - they are a virtual desktop solution (loosely similar to Citrix), which provides a Windows 7 or Windows 10 'Desktop Experience' running on top of Microsoft Windows Server 2008 and 2012 respectively.
So, to answer your questions:
Q1) I am building a .net website from where I want to access the
Amazon Workspace. What could be a better way to do so? Is it possible
that I create a webpage in my website and from there I can access the
Workspace desktop in an iFrame or something? or is there any API
support for same?
You don't want to embed a Workspace instance inside of a web-page, either as an iFrame or by using some other magic. It is probably possible, but you will need to jump through many, many burning hoops of death to achieve it.
If you want to access a web-page that you are building from the Workspace instance, treat Workspaces as just any other desktop and use Internet Explorer, Firefox, Chrome, Opera etc. to access the site.
If you are looking at how to access Workspace Instances, AWS have desktop clients for all major Operating Systems, as web-based version (not to be confused with the web-page that you personally are writing); alternatively, Workspaces can be accessed from physical PCoIP Zero-Client devices. Take a look at https://clients.amazonworkspaces.com/ for the full list.
Q2) Can we set some startup program in Amazon Workspace which
initiates any application for eg: photoshop, whenever the Workspace is
started?
Yes you can, configure a Group Policy Object in your underlying Workspaces Directory to start an application on logon.
However, if you are going to run something intensive such as Photoshop, I would recommend either the Performance or Graphics Bundles - see https://aws.amazon.com/workspaces/details/ for more information.

Deploy a local webservice on many machines - is it the right strategy?

I was wondering about the best way to deliver private web service instances to lots of users, so the user would always be able to connect to their own offline version of a service, just like running a web service from visual studios while debugging. I was struggling with setting this up in VS2013 even with the many online tutorials, but I am not sure if its not working because it was never supposed to work this way.
I have provided this in-depth explanation of my issue as i am not sure i am going about this in the right way and would appreciate feedback:
Background:
I have a web service to interface with an engine. This deals with the front-end and builds a set of commands for how to make a CAD model. These commands are for controlling the 3rd party CAD software's API. Therefore the engine can be seen to have two main functions -
Build the CAD's API instructions, which can be saved for later
Execution, where it catches the instance of the CAD software
running on the same computer and it builds the model.
The second part is restricted for the general public. Only our in-house users should be able to use it. However, they want to have an otherwise identical front-end and user experience.
The problem is, if they connect to the same engine as the public, which exists on our main server, then the engine will be looking for an instance of the CAD package on the same machine as itself - i.e the server, as stressed in the emboldened point above. What should happen is the engine finds the CAD instance running on the machine that the controlling UI is based on and it uses that for its target. I have spoke to the CAD API support and they say they do not know how to do that.
And so we get to my solution of providing an offline stand alone of my web service on each of the employees computers. This means the front-end will check at the start of the session if a localhost connection is available. If not it will use the main address, which takes it to my server. Otherwise it uses the local engine which will look perform the default behavior of looking for a CAD package on the same machine as itself. Because its locally installed that is now the right machine and it will find the CAD instance of the user successfully.
Final points:
The engine cannot be accessed by the UI directly as i am using
Unity3D for the front-end and there is .Net compatibility issues.
I need a completely self contained version of the software in the
future anyway, so eventually i have to deal with having the engine
accessed locally
I ended up using IISExpress. I got the user to install this and then get them to call a batch file installer i made which sets up the config file and moves my web project to the correct directory.

How does cloud foundry handle process isolation?

Let's say that I setup my own cloud using the open source cloud foundry implementation provided on cloudfoundry.org. Will each app that I deploy be run as a separate user? Or is there any of VMWare's virtualization technology in use here? E.g. would each app run in a separate virtual machine or anything like that? How can I configure the memory, cpu, and disk resource limits for each app?
I asked this on the mailing list. Here's the response I got:
If your DEA is configured to run in secure mode, then each app runs as its own user and process isolation is used to protect them. We are moving toward a model of using linux cgroups http://en.wikipedia.org/wiki/Cgroups when on linux, using the warden cgroup wrappers that are already in our source tree.
VM based isolation for a single app is pretty heavy weight, but we have long term plans to provide this for apps that need/desire it. (As opposed to the warden/cgroup work which is a near term project)
Since this is related to the open source for cloud foundry, you can try asking your question on https://groups.google.com/a/cloudfoundry.org/group/vcap-dev
You should get a quick response there!