At Serverless360, we often get asked by customers if we have the capability to monitor resources that don’t necessarily fit with the core aim of the product. For example, we have an Azure solution where you are building a Logic App and Function solution to process files from the SFTP server. In the solution, one of the dependencies needs to work well to make sure that the SFTP site is available so it would make sense that you would want to monitor it.
Unfortunately, out of the box, we don’t support direct monitoring of SFTP sites. As a product owner, it also gives me a challenge because I love that our product is very customer focused but sometimes a feature isn’t right for your product.
Serverless360 is about the management and monitoring of Serverless components and capabilities and our USP is to specialize around these features that customers struggle with and this is where we add the most value.
When it comes to SFTP, if I multiply that out by all the possible scenarios then very quickly, we would be investing a lot of areas that weren’t really Serverless. That said I haven’t forgot about customers, early on we made the decision to focus on Azure Serverless technologies knowing that we well as manage and monitor them, we can work with customers to use these features to help us build a great solution. In the example of SFTP, we can use a Logic App to set up a monitoring process and then connect that to Serverless360.
Let’s look at how we would do this.
Step 1 – Create Logic App
First off, I have created a Logic App. The Logic App will be triggered by an HTTP request. Once triggered the Logic App will use the SFTP connector and the List Files in Folder action. This will access the folder and do a non-invasive action of just list the directory. It should not error unless if can’t connect to the server.
You can see the Logic App below.
Step 2 – Connect to Serverless 360
Next up I move over to Serverless360 and to one of my composite applications. In the case of the SFTP server, it could be a dependency on one or more of your apps. Inside the composite app, I go to the monitor’s section as shown below and I will enable the Watch Monitor. Note I can have multiple watch monitors if I need to.
Inside the watch monitor at the top menu, I will use the “Associate Entities” menu option then choose “API Endpoint” as shown below
In the wizard to configure the API Endpoint to monitor I will give it a name and add the HTTP URL for accessing the Logic App as shown below.
Next, we need to modify the Payload details. The Logic App needs the request method changed to POST rather than GET and I also changed the payload to have an empty JSON object in it as shown below.
Now we need to configure the response handling from the Logic App. The desired state is that we are returned to an HTTP 200. I have turned on the Status Code Alerts section and indicated 200 status code is expected otherwise it’s an error.
I turn off JSON path alerts as we don’t need to parse the body and I have modified the response time alerts to something reasonable.
After the initial setup, you can see below my API Endpoint is healthy and it will be checked by the watch monitor on a regular basis. Any error conditions will be alerted using the normal notification channels.
Hopefully at this point you can see my earlier suggestion that in some of the more custom monitoring scenarios you can combine Serverless360 API Endpoint monitoring with a Logic App to take advantage of the massive number of connectors that there for Logic Apps and as result you can pretty much monitor anything you want.