>> Hey friends, when things go wrong with your app,
Genie and the navigator App Service diagnostics
can help you figure out what's wrong.
App Service diagnostics guide
you through a troubleshooting experience.
The navigator enables you to find
potential breaking changes to your app and its dependencies.
Jen is here to show me how it works today on Azure Friday.
[MUSIC].
>> Hey friends, it's Azure Friday. I'm here with Jen.
She's going to talk to me about keeping my apps healthy in
App Service with the new diagnostics and Genie.
>> Yes, exactly. So today I'm going to
talk through App Service diagnostics in Genie and
how you can use that to self-diagnose
and troubleshoot your applications when something goes wrong.
Hopefully most of the time your app is
healthy and happy but as we all know when you're
running these things in production when something does go wrong
it'll be very frustrating to
actually isolate down with the issue is.
So actually I have an app right here and
unfortunately as you can see there is an application error.
So none of my users can actually access this right now.
So fortunately no one can buy
the baked goods in this bakery application that we have.
So what do you do when you face this?
So when you're using App Service,
you actually go to diagnosis solve
problems and launch App Service diagnostics.
So this is actually an App Service on Linux Web App running node.
As you can see I'm having application downtime.
So I'm going to go ahead and click
on availability and performance,
and launch Genie which is
the interactive guided experience that
actually guide you through the self troubleshooting process.
>> So it's not like a bot except you're clicking on
stuff and you're having your communication with Genie.
>> Exactly. So no matter if you're
a novice user or a super experience App Service user,
this is a really great place to
go to start off your troubleshooting experience.
So right here I can see okay my web app is down,
so I'm going to click on that tile and it's going to run
all these back-end telemetry detectors that we have that look
at basically all these different types of problems that we've
seen across a wide array
of different application issues over time.
>> This isn't a static list.
Like that list those check-boxes and alerts,
and things, that was dynamically generated.
You ran detectors.
This is not a list of things that might be wrong,
you identified that there's something definitely wrong.
>> Exactly. So basically these status icons on the left-hand side,
the red, the green,
the orange that helps you figure
out what you should investigate first.
Sometimes when bad things happen to your app,
a lot of things are happening at the same time
so you want to make sure to help you isolate that.
So we're going to go ahead and view the full report.
Basically, what's going to happen here.
So it loaded web app down.
So as you can see here right up in front you can see
availability and figure out if there is an issue on the platform.
So if something wrong with App Service
or is there an issue with your own app.
So as you can see here it's not the platform issue.
It's something that actually is wrong
with this particular application.
>> So that's a coding error as opposed to App Service being down.
>> Yes.
>> Because I can see what the platform availability
as far as you can see in that chart,
app service's confine this whole time.
>> So this hints that this is something that is wrong.
Something that someone on my team or I did.
So this is really great way to isolate that.
Then you keep going,
you can see okay requests and errors like
that matches what we see and we're getting some server errors.
Let's click on this first red status icon here.
So this is something that we had something
wrong that we detected in application locks.
So as you can see here,
we have this insight that says right
away we have the wrong port that's being exposed.
So basically that we are exposing port
5,000 but we're actually trying to
listen to port 8080, so that's not going to work.
So as you can see,
you're going to have the observation right here.
You see the two differences,
and then there's actually a recommendation.
So what we always hear from customers is that, "Oh,
like all my tools
are third party things or something that they use."
They can figure out maybe what's wrong or get
a lot of data but they don't know what to do next.
There's no actionable steps.
So here in recommendation
you actually see what you should do next.
So if you were to fix this what do you think we should do next?
>> Well, so like in the past,
I would read the pros and I probably
open another entirely different window,
and try to figure out where to go but it says click here.
So that's pretty obvious. I would probably just click there,
and hope it would take me not only to the right web app,
but maybe even to the right blade and the right item.
>> Exactly. So basically if I click that it
will go in to the application setting blade,
and basically allow me to change that exact websites
underscore port setting to 8080 to make this work.
So this is awesome, but we all know
that it's going to be sometimes hard to convince
developers that this is the issue that's actually going on and
especially since they're the ones who might have made the mistake.
So I want to confirm this for myself first.
So I'm going to scroll down here and go into
the Docker Logs that are automatically
pulled up in the detector itself.
So as you can see right here in the logs,
right here it's underlined in red that you're exposing port 5,000.
>> Are you saying that the detector
was smart enough to actually show me the log,
why it thinks that and highlight it for me.
>> Yeah, exactly.
>> That is amazing.
>> Yeah, so this is awesome.
So basically all you have to do you can go ahead
and fix it yourself and if anyone
questions your judgment you can go
and show them these logs right here and
say this is exactly
the issue and now you're empowered to actually fixed it.
>> So App Service diagnostics in Genie
is a diagnostics detector engine,
and I assume that you can then write
different detector plug-ins like for node
or.NET or Python or whatever, and make it smarter.
>> Yeah, so our team is actually working on that right now,
so we have a lot of new upcoming things
using some like text-based analytics,
using some machine learning stuff in there.
So this is only going to get more and
more powerful as we get more detectors.
So we have this available for App Service on Windows,
App Service on Linux,
Web App for containers, Azure Functions,
and it's actually coming soon to a lot of other services as well.
So I can't say anything yet but stay tuned.
>> I really want to point this out to folks because I
have a lot of app services that I run on Azure,
and I run them for real and production,
and I've been doing it for years.
Frankly, in the past I've gone digging in the logs.
I go into Kudu,
which is the car site and I'd spend my time hunting logs.
There's application logs and IIS logs and
my own personal logs and the web server logs.
You're doing all of that for me know.
>> Yeah, exactly.
>> So I need to as an old-timey Azure user
get used to using this because I'm telling you,
it has saved me so much time.
The first place you need to go if you have
an app service issue is diagnose and solve problems.
Walk through the process
because it's not taking your power away from you.
It's just making it easier for you to get to the root issue.
You're going to end up at the same location,
but you don't have to read all of these logs and fix stuff out.
It's really been a joy.
>> Yeah, exactly.
There's also like more features to this as well.
You want to make it a one-stop shop.
So let's say you fix the app
but you read about something
you saw on Azure Friday about deployment slots.
So you want to just ask Genie here like
how do you the use of deployment slots.
You actually does a web search to get you one-stop shop,
get you into a link that will help you out with that.
So it's a really great starting point.
There's also best practices and
proactive diagnostic tools to check out as well.
>> So that's a web application but that's kind of simplistic.
What if my web app has
a database or has storage or has other stuff.
My app is actually more than just my app.
>> Exactly. So I'm really glad you asked that because one of
our newest features for
App Service diagnostics is called navigator.
So actually let me go into a demo with that.
So you have this app which
is a puppy adoptions site but unfortunately it's down.
So none of these poor puppies can get adopted today.
So in order to fix that let's go
back into App Service Diagnostics.
Like I said, we're going to go into our new navigator feature.
So navigator actually is
a new feature that we built out because we
heard customers want to figure
out what actually changed in their Web App.
So a lot of times you're not working in isolation,
you are working with a team.
You have a lot of developers who were handing things off to you.
Sometimes, someone can make a change that causes a downtime.
So when you're the one actually figuring
out why there is a run-time error,
you don't actually know what happened
because you're like I didn't make any changes,
someone else might have.
So here it actually not only looks at your Web App which
is adopt puppy today but also its dependencies.
So like you said, web app doesn't work in isolation,
talks to SQL, talks to storage, talks to Redis.
So here actually on the back-end we
found automatically the SQL database here.
So as I look at this,
these are the recent changes on the web app itself.
So I see some and this isn't really
seem like the thing that's going to be the breaking change.
So let me actually go into the SQL database changes.
>> This is almost like system restore if you
know on Windows when you make a change it
sets a snap point or a restore point
and you can go back and say well it worked on Thursday,
and you figure out, and you do a binary search,
and figure out what happened between when I knew it worked
and now today when it doesn't work.
>> Exactly. So an hour on
the SQL database and this timeline you can actually
see data for the past 14 days and each of these little tiles,
those little squares are things that you can
click on to investigate the changes.
So we're going to investigate this past one because it was working
Sunday and Saturday but it just stopped working today.
So we're going to scroll down even further and see that
a server firewall issue
of rule was changed so that must be the issue.
>> It should be gone now.
>> So it's totally gone, well that makes no sense.
So basically all this here
shows me that this is what used to be and this is what it is now,
and actually even who it was initiated by.
So it could be someone working on the SQL team in your company
and they're making some changes and me
being on the Web App side I didn't realize.
So right now I can go and Ping Yu Jiang and basically say "Hey,
did you actually remove this and go back into the firewalls,
and actually changed that myself if I so want to."
So basically this allows you to figure out
what issues you have and
what changes have been made to not only your web app,
but also it's important dependencies.
>> That change tracking is so important and that map reminds me of
the application insights dependency map because there's
all the different things like you said Redis or storage.
Connection string could change, that firewall rule.
I honestly thought it was going to be
a connection string and I didn't have to go
digging for it because you showed me
there like as if it was source code diff.
>> Yes.
>> Because you're expressing on the left-hand side there
a declarative expression of
the ARM template that basically looks
like here's My App and now it's missing.
>> Yeah, exactly. That's super important as you look into this.
You can see two categories, properties or codes.
So basically properties are things like this, like the firewall,
and then also code stands for the configuration changes you
might have made to DLLs or something like that.
So it'll show you if
something has changed so you can actually isolate down to issue.
Like that's the whole genesis of App Service diagnostics,
Genie and navigator is to help you isolate on an issue,
and give you actionable steps to
figure out what's wrong and what to fix.
>> Very cool.
>> Everybody has this now.
You have an App Service right now,
you're watching Azure Friday.
Even if you have a healthy website,
go check it out, go look at your App Service,
hit diagnose, learn about your website,
learn about navigator, learn about Genie.
It is your one-stop shopping center for
learning about how to keep your apps healthy.
I'm learning how today on Azure Friday.
>> Awesome, and also as a quick note.
If you have been taking a little nap throughout this Azure Friday,
these are a couple of sites that basically summarize
the self diagnostics and
self troubleshooting experience so
App Service Diagnostics and Genie there.
Navigator over here, it allows you to compare the different diffs
and a bunch of helpful links and resources to help you out,
and get you on board to experience.
So App Service diagnostics come out of the box.
Navigator, you just have one click and you can enable it for
everything in your App Service, and then you're good to go.
>> Fantastic, I'm learning how to keep My Apps healthy.
I hope that you keep your applications healthy.
Even if you've got a healthy application right now,
go and click diagnose and soft product
to learn more about what Genie knows about your app.
When you do have a problem you'll be ready for it.
I'm learning all about it today on Azure Friday.
[MUSIC]