Hey everyone, welcome to FluentCon and thanks for being here. I am Aaditya, a senior here at CAC undergrad from India and I worked with open telemetry a couple of months ago as part of the LFX mentorship program where I created the FluentBit exporter for open telemetry which is one of the few things that I will be talking about today. So the goal of this presentation is to give you a brief overview of open telemetry and how you can use FluentBit along with open telemetry to export your telemetry data from your application to the backend of your choice. I will also be giving you a brief demo of an example application that I had worked on for an experimental use case that allowed users to use FluentBit to export not only logs but also trace data from the application to the open telemetry collector. So before we start talking about open telemetry itself I think it is important to understand what observability is and what are the few pain points of open telemetry is trying to address. So observability is basically a property of your system or application that allows you to determine what's going on in your system and you do this by collecting data from the system and these data are mainly of three types, logs, metrics and traces. Logs are timestamped records that denote the events that occur in your system. Traces are... Traces basically trace the request flow through your system and metrics are numerical representation of the help of your system. So once you get all these data, you need to correlate them so that you can get rich insights into your session. We need to do all this because systems now are more complex than they used to be because of the distributed nature of the service that we design and with the adoption of micro-services it has become difficult to find out what's wrong when something breaks. So if we implement observability correctly it becomes very easy to find out what's wrong and fix it. So open telemetry itself is a mojo between two projects called open-senses and open-tracing. Open-senses and open-tracing both were projects that gave a standard to allow you to integrate distributed tracing into your project. Open-tracing just provided to you with a tracing API while open-senses had a standard for both traces and metrics. So the two projects understood that observability is a key aspect in modern software systems and decided to merge to create a single set of APIs, SDKs, toolings and integrations so that users would not have to choose between the two projects and could easily create and manage their telemetry data. Open telemetry is also vendor-neutral and is currently, if I'm not wrong, the second most contributed to projects behind Kubernetes itself and it has contributors from over 40 different companies and this ensures that no company has a say in the direction which the project takes. So let's take a look at the components of open telemetry. So the main components are the specification, the open telemetry collector and the instrumentation libraries. Open telemetry itself has a really probable architecture so you can create your own components if you really need to and you can add extensions or modify the existing ones if you need to. So the API allows you to instrument your applications, libraries and frameworks and the SDK implements those APIs semantic conventions are directly naming conventions for traces, attributes, etc. to ensure consistency across the various language implementations. The open telemetry collector is a component that receives telemetry data, processes it and exports it to the back end of your choice. So the request data flow usually looks something like this. So we have an application in which we use the open telemetry API to instrument our application which is implemented by the SDK and the instrumentation that is generated is exported using the exporters. Now the exported telemetry is sent to an open telemetry collector where we usually collect the data from various applications and we have it in a single place. The collector enriches this data and passes it through various processors and then sends it to the exporter to send it to various back ends. So let's have a look at the open telemetry collector. The collector is by far one of the most important components of open telemetry because it allows you to receive, process and export telemetry data. So it does this by using config files to define the behavior and a major advantage of this is that it allows you to decouple sampling, QN and retry logic from your application code itself and by providing a simple config file you won't have to change your application code every time when you need to make some changes in the collector. So the open telemetry collector has units called pipelines that are mainly of three types based on the data that they deal with. So these are traces, metrics and logs. So the basic logic of the collector is it will take telemetry data from the various receivers. It will pass them to the processors and the process after it has been processed it will send it to the exporter that will export it to various back ends. So the cool thing about this is that open telemetry converts all the data to an internal data format so that you can convert it into whatever back end you want. So let's say I have traces coming in from the OTLP protocol I will be able to convert this into an internal format and then I can convert it into the format that the EGAR requires or the format that SIPCAN requires. So by doing this I can not only send the telemetry data to one back end but as many back ends that I want to. So along with DC components the collector also has additional extensions that are not part of the core collector but provide additional functionality for example the health extension which responds to health messages. We can also have a look at the config file so we first define all the components that we have so we have various receivers, exporters and processors also extensions and then we define the pipelines that we want so here we can see that for the traces pipeline I am receiving the telemetry data using the OTLP protocol I am passing it to the batch processor and from the batch processor I am sending it to the login and EGAR exporter so the login exporter will log the data to the console while the EGAR exporter will export it to the EGAR back end Similarly for Metrics we do the same thing but instead of sending it to EGAR because EGAR does not support Metrics we use Prometheus so the Metrics are sent to our Prometheus back end so you might be wondering what Fluentbit has to do with all this and the approach that Open Telemetry has taken with Flux has done that it has taken with traces and Metrics so for traces and Metrics Open Telemetry has defined a new API and language implementation for both of those but for logs it makes use of third party agents to collect and process logs and Open Telemetry only focuses on addressing the data so if you are already using a different log model what Open Telemetry does is it takes all the log data and converts it into its recommended format based on the log data model that has been defined in the specifications report and from there we can export it to any back end that we want to so usually what we do is we use Open Telemetry, ABI for Metrics and Traces and use a third party agent like Fluentbit to collect the logs and send it to the collector so now I want to talk about how you deploy an Open Telemetry collector and how you can use Fluentbit to export traces as well as logs so we can see here that we generally have an application that has an Open Telemetry library embedded in it which sends the instrumentation data to an Open Telemetry collector that is deployed as an agent from where it is sent to the back ends of your storage or an Open Telemetry collector so the logic behind this is that Open Telemetry collector can be deployed as an agent or a standalone server so typically when you deploy it as an agent you deploy it as close to your application so that like I said before you don't have to worry about things like retrieve logic or queuing or sampling logic and you can just add in the config file if you wanted to chain something and while you in case you want to deploy it as a service you can also do that so that this is usually deployed on a different machine that does not have resource constraints so it can collect data from multiple hosts and you can have all your telemetry data in a single place so now that we understand this we can imagine a scenario in which we are not generating a lot of trace data and we already have deployed a fluent bit order fluent d agent along with the application because you always need to deploy it to collect logs since Open Telemetry does not do that so in this case if you don't want to deploy the Open Telemetry collector what you can do is you can use a fluent bit exporter which you can install directly inside your application that will send data to the Open Telemetry collector using the fluent bit service so thereby reducing eliminating the need for deploying an additional collector agent so that's the application that I had that is the application that I had worked on and we do this by making use of the fluent forward plugins input and output plugins which follow the fluent d forward protocol and this protocol defines the format in which you send data to it and if you send data as a message pack array in this specific format it will recognize it and pass it and send it to the output plugins that you have used so what we do is we are using fluent bit or fluent bit to collect logs as well as traces so what we will do is we create a... we reserve a special tag name called data-was-pan to denote that ok this is a span so pass it accordingly and when we do this we effectively can tell the Open Telemetry collector that logs need to be routed to the logs pipeline and the spans need to be routed to the traces pipeline so let's take a look at how the data flow looks like so we have an application and we have installed a fluent forward exporter inside this fluent forward exporter will send the telemetry data that is traces to the fluent bit engines that can also be reading logs from any file or any input plugin and this fluent bit engines will forward the data that it receives to the collector on the collector side we have the fluent forward receiver running which sees the tag of the span and if it sees that the tag is data.span it will tell the collector that ok this is a span and it passes it on to the traces pipeline and if it is not then it routes it to a logs pipeline so once you do this the processes that you have defined in the collector config will take less in that order and it will be sent to the exporter where it can be exported to labor or whatever exporter that you are configured with this sort of query I think we can take a look at a demo application so let's first take a look at the fluent config file so this input plugin basically reads the log files and this is the forward plugin that I was talking about which listens on this port for trace data so our exporter that we had configured in our application will send the traces to this port and we can also see that there is an output plugin that logs the data to the console and one that forwards uses the forward plugin to send the data to the open telemetry collector where the fluent forward receiver is listening for data using the fluent forward protocol so now we can look at the config for the open telemetry collector and here we have defined the receivers the processors and the exporters and for the pipelines we say that both the traces and the logs pipelines will make you the same receiver and pass the data to the batch processor from which it will be exported to the back end or log to the console if it is a log so with this done we can start the collector and take a look at the application that we have written so this application basically first initializes a trace provider a trace provider is basically a component that gives you access to a tracer and tracers are responsible for creating spans so we need to initialize a trace provider first which is globally set and once we do that we can access tracers based from that so we create a tracer and using that tracer we create a span and add an event to it and let's say we had a service that this particular service was calling so we simulate that using a sub operation which is just a function called so inside that function we again create a tracer and using that tracer we start a span which will be a soft span of the original parent so we can start the flinted service and we can already see that the flint bit instance has read the log file and forwarded the data to the collector which we can verify in the collector which shows that okay I got a log message from some application now if I run our example application sorry for that so we can see that the flint bit receives a message pack array and has the tag data dot span so it will signify to the flint forward receiver on the collector side that okay this is a span and we can verify that in the collector logs and it shows that okay I am receiving two spans here so we can also open up a lever in our local host find traces and like I said we can find the span here so this is the message that we had added on the span as an event and this is a soft span where we also added an event so that's the demo for me and I believe that's the end of my time you can also scan this QR code to see the slides or where you are looking so thanks for your time and that will be it from my side


In the meantime, the Zamfara State Police Command has rescued two kidnapped students of the Federal Garbant College, Burnin Yarei, in Kaby State. Brefen Niesman on Sunday, the Zamfara State Police Commissioner, Husaini Rabiu, said that two students were rescued in Aboush, in Barbar-Dokar, village of the Maru Local Garbant area. But the commissioners said the victims were taken to the hospital for medical checks. That they have been debriefed, are the Police Command headquarters in Gozo. They said the students would be handed over to the Kaby State Government through the State Police Command.


I'm Joe Pearson with the Open Retail Reference Architecture and I'm here to give you some background information about enabling future proof and open edge application management specifically in the context of retail. This background information is meant to accompany a demo which is also available here in the booth and Henry Lau from HP and myself Joe Pearson from IBM will be here in the booth to answer any questions you may have about Aura. Aura is an interesting combination brought to you by several different LF edge projects which I'll talk about in a minute. So specifically what I wanted to do is talk to you about the the reason why you're here which is the promise of edge computing. You know that local analytics reduces the expense of sending all the data to the cloud to be processed. You already know that you clearly see that by processing data closer to where the data is generated you can increase your response time to insights derived from that data but it may not be clear how using an open edge computing framework comprised of several LF edge projects can help you achieve those goals more efficiently and let you focus on your expertise and developing solutions for your specific use cases. So the Open Retail Reference Architecture or Aura is here to show you how this is possible and can be used today. So Aura the Open Retail Reference Architecture gives you a set of components that use and implement open and common standards. So for example SDO gives you device onboarding and provisioning. Open Horizon gives you application deployment and lifecycle management and EdgeX Foundry helps you handle IoT device connections and provides sensor fusion. In addition we rely on a lot of other popular and open solutions for things. So for example Open Horizon relies on Vault for Managing Secrets and SDO for onboarding. EdgeX Foundry relies on the Kuiper as a rules engine and many of these rely on application container engines like Docker and Podman and provide container orchestration through Kubernetes like MicroKates, K3S, K8S, MiniCube and OpenShift as an example. Second they provide capabilities that are guaranteed to work together but yet still perfectly capable of functioning by themselves. So for example each of the logical components within or a platform services are standalone open source projects and each can be downloaded configured and run separately to solve specific issues and yet Aura brings them all together and demonstrates how they can be easily integrated. We also provide a unified set of platform services so that you can build and deliver application solutions on top of it without worrying about the fundamental code needed underneath to run all of them. So for example you can use your existing cloud-native and edge-native application tooling to develop containerized applications. Continue building packaging and testing using your existing solutions and pipelines and then use Aura to create and publish policies, definitions and configuration that will describe your applications, data and machine learning and how they all connect together. And the fourth point there it's very important that when you build on top of a foundation that foundation is built with stable and mature components that are supported out in the open by communities as these particular projects are. And these are communities where you yourself can have a voice. For example EdgeX Foundry and OpenHorizon have both existed for over five years already so they're very well established. And the last point it's important that you can see exactly what is going on when you deploy applications and that you can control them without needing to control each application individually or each destination endpoint individually. So let me talk briefly about the retail challenges that you have and the struggles that you have that or is specifically designed to solve. First point, typically you need truck rolls. Whenever you need to deploy and configure technology that means putting in a new piece of computer hardware whether that's a router, an access point, a terminal, a device and so on. What Aura is designed to do is to reduce that. In other words you may need someone to install the equipment but that person will no longer necessarily need to be trained on the software solutions that run on top of that equipment thereby making it much simpler to actually install the equipment and bringing it down to simply a matter of putting the hardware exactly where it needs to go and connecting it to the power. Second point there, we want to reduce the possibility that you will have to send a technician on site to worry about your software whether that's troubleshooting problems with the software, reconfiguring it or upgrading it. All of that should be able to be accomplished remotely and by very few individuals Aura actually allows you to do that. And last providing a single foundation for both your existing needs today and for future needs which you may or may not be able to anticipate. So for example you may have point of sale terminal software, sensors like is a car going through the drive-through of a quick serve restaurant, digital signage, visual recognition applications running on cameras, inventory management, reporting all of this can be done within the context of containerized services. And by doing that we also reduce the need for you to have to rely on a single vendor if you would like not to. Second of all the advantage of using this foundation is that your solutions can scale with the infrastructure itself and by that I mean the only thing that prevents you from scaling these solutions bigger and bigger is the amount of available compute power and resources that compute power has. Third point there, by using containerized software we eliminate the need to specifically rely on a particular piece of hardware or a particular micro architecture or so on. We abstract all of that away. And last point by containerizing these services and if you follow common standards, key point there, that allows you to just swap out individual solutions provided the interfaces remain stable. So in a nutshell what I showed you today was how or can future proof applications in the context of retail. Now I'd encourage you to talk to the various booth attendants who are there to answer your questions and to view some of the other videos including the demos. Thank you very much for listening.


It's that time of the year again. False sports seasons are wrapping up and it's winter go home as section playoffs have begun. We kick things off with volleyball tonight in section 8-8 with Pequot Lakes hosting Barnesville. And we'll take in the first set when the Patriots, and Trojans tie to eight. Karina Rood sets the tone right here with the kill. And then Rood and Allie Johannick were there for the block. And then next, it would be Brick Kradatval after a long back and forth volley with a kill of her own to bring even more momentum to the home team. And Pequot Lakes leads 15-11. And then teamwork here on this volley later. Sets up Johannick for another kill. The Patriots take the first set 25-16. They win in three tonight, three to zero over Barnesville.


Oh, dude, come on down and visit me at Scrub Valley. Sparking, there it is. You little... What are you doing? I will have my revenge! How's it going, everybody? DatoDoy here, and really quickly, before we get into the games, I just want to let you know that I'm sick. So, uh, I didn't really want to think too hard. So, I came up with this little cheese strategy you see here. We got base Goku and the two beam assist boys in the back. Uh, really simple stuff. You've probably seen it from me before. But as soon as we get this knocked down or keep them away, I'm just going to spam these beam assist, keep that spirit bomb going, uh, and then it's just a matter of landing it, and, uh, going right into a level 3 spirit bomb for big damage. Uh, that's pretty much what I'm going to be going for today. Boom, you can see we took... Oh, ha ha ha! That's crazy. Okay, well, let's see how... Let's just see how far this strategy can really get me. Alright, so we're in our first game. Looks like we're going up against an adult Gohan, a Super Saiyan Goku, and a Super Saiyan Vegeta. So, pretty standard team, actually. And he's a challenger with a dream. Oh, no, I forgot to fix my icon. Uh, title card, actually. What am I saying? Icon? Man, whatever. Y-you know I ain't trying to think with a team like this. Ha ha ha! I'm out here trying to land a spirit bomber, too. Wow, flying extremely close to the ground there. Ha ha ha! That looks super goofy. I don't think I've ever watched the intro on this. Uh, stage. Oh, wow. Yeah, I must really not be thinking. Oh, he hits me with a perfect slide. Ugh. Hey, we in there. Ha ha. Alright, but how much meter does it... I should have checked that, actually. Because depending on how much meter it has, we might already be ready. Uh, so let's see. We're gonna get knocked to the ground. Alright, we out. We can guard cancel. We can- we can spend that meter. Oh! Oh, he's really trying to catch me with a slide. That's fine, though. That is okay. Okay, this... That. And then a little Kaio-ken action. Oh! I- and I said I didn't want to think. Look at me using Kaio-ken. Instead of my spirit bomb. Ha ha. Alright, so he's already down with Gohan. Uh, we can try to play a little bit more aggressive here. Oh, wow, he just jab-checked me. That was sick, actually. Key blast might not be too good. Beam, same thing. Oh, we had to read. Uh, but that should be more of a reactionary thing and not a read thing for me because I'd definitely get that wrong a lot of the time. Overhead again. Yes, sir, we- we do that sometimes. Oh, yeah, I still have the spirit bomb. I was gonna- I was gonna charge up. Hmm? Hmm? And I said I didn't want to think. I- I don't even know why I wasn't able to block in time. Maybe I, like, inputted a dash, like, the frame before that happened? That was kinda crazy, though. Ah, I don't know why I jabbed and didn't, uh... What am I trying to say? Down heavy. Hmm, oh yeah, there I jabbed as well. Back dash? Brains firing on all cylinders? Let's switch out here. Hmm, catches me before the ref- after the reflect goes off, which is super bad for me. At least switch out? Yes, he does. I was more worried that I wouldn't get the spirit bomb off. Which I didn't. Ha ha ha! Okay, you're gonna EX this. Should we level three? Nah, let's just do it the old-fashioned way. Ooh, what are you doing? Let's go, up top. I don't think the level three would've killed. Hmm, nice tech. Nice tech. Ooh, beam. But do you have a beam assist? No! Noooo! Wow, it locks me into- So I have to block that down medium. I was really trying to jump away. Hard knockdown. He does not want me to get to- He does not want me to speak to Vegeta at all. At least give me his number so I can call him back. What's- what's the mix up, though? I'll give you the mix up. Let's go. Oh, come on. You gotta let me- You gotta let me have this one. Ooh, beautiful block against the guard cancel. No meter to spend, though. Hello? Oh, Doctor Lag is in the building. That was stupidly cheap. Yeah, we'll just spend the bar with Goku Black. He still has Vegeta left, though. Hopefully that lag does not make a return. That one can stay gone.  OK, let's let's let's dial that one back. Hard knockdown. All right, let's try to make a read on the sparking. Is he going to spark or is he a DP kind of guy? Either way, let's make the same play. Oh, no, where's my clash? Why is he not sparking? There you go. OK, good, good stuff, good stuff. Let's play it safe, though. He wants the Super Dash. Wow, that was great defense. Fantastic literature I'm reading right now. All right, he'll have to spend the one bar. Oh, OK. Amen, never let somebody tell you how to spend your own cash, I guess. Seven dragon balls. Yo, what are you doing?  No, my down heavy doesn't go off. OK, this is a lot closer than my original plans for this game were. Beautiful dragon balls.  I will give it up. Wow, just for the dramatic finish, huh? That's how we're going to get down.  OK, you know, it was well earned, to be honest. That was that was really good. OK, all right, let's reconvene and focus on the again, flying a little low to the ground there. Let's reconvene. Let's let's read the slide. Hmm, we got beam assist, though. OK, the grab is the grab is a no go. Stutter offense might be the might be the answer. Grabs a definite no go. Hmm, a standard overhead. OK, didn't fast fall. Is the answer to spark early, though? That's the true question. He can't kill very close, though. OK, does he try to is he going to read the sparking with a DP? Hmm, just goes with the standard DR. OK, I see you, my boy. I really am seeing you right now in a light that I am not trying to. There we go.  That's the stutter step for you. We almost had it. We almost had that down tech. Oh, hard knockdown. If he has it, he's going to spend it. Fair enough, I guess. OK, we're out of there with Goku, but we're in there with Goku at the same time. Shout out to the super series. All right, get the sliding. That's that's step one. I will not take that for an answer. That did not work as planned. Oh, come on. No, DP, that was the only correct answer there. Wow. He is playing aggressive. He probably wants to get that DP. Yup. Yup, yep, yep, yep. Hello. Understandable, have a nice back dash. Oh, yes. Yeah, you go ahead and DP. You know I got them reads. It only took me eight times, but let's not talk about. Let's let's focus on the good parts. Yeah, again, the stutter step. That's the that's the downside to trying to no DP. DP on the assist, though, I guess. Oh, that was good. That was just good. Bad news, bad beam. That's not the that was a little too high off the ground. Down tech. Oh, wow. He actually scared me with how fast that overhead was. I was I just was not reacting to that on no day. OK, we're going to go ahead and get Vegeta back in here. We need to kind of buckle down here with the offense. Let's buckle down. I probably could have down heavy that. Oh, not close enough. OK, that's fine. Sliding knockdown. Oh, yes. See, he's he's really trying to get some buttons out, which is good for us. We got to save this sparking for as long as we can here. Hmm, you know, you dared out the range of a God. Hard knockdown in the corner. A really great place for us to be. Obviously, Gohan does have a DP. He also has. Oh, never mind. Watch the DP. There it is. Try to make that super dad. Obviously, that super dash wasn't safe anyway. But we're so scared of that DP. Yeah, fake stuff. All right, at this point, Spark is going to heal him anyway. Let's just get Goku back out. Yeah, we got the reads, dude. At this point, I think we're pretty much safe. Oh, no. OK, Spark now. All right, Spark now so we don't have to worry about getting hit with anything too crazy. Gohan's on his last legs here. Cheesy. Oh, yeah, I'm here to cheese. Zamasu, grab this band. Oh, Zamasu. I'm thinking way too hard, by the way. But I came into this trying to use like a little bit of my brain. But these have been really fun games. Let's hope that this next one can be a bit more filled with spirit bomb goodness. OK, good. Overhead beam. All right, Goku, just call it a day. Hit the showers. I'm speaking of both Goku's at this point. You both failed me in the same way. Three. Nice. No, down heavy.  Let's see. Two bars, feeling bad. All right, we got to get out of there. I'm not trying to take Gohan mix ups. Oh, we're in it for the long run. No, I couldn't spam Super Dash. Oh, thank goodness. All right, base Goku has to come back out here. We are in the spirit bomb range. I'm pretty sure. If we get one hit. Oh, wow. Did you see how we didn't, though? Did you see how I overreacted? Level three. Yep, yep, yep. Hard knockdown. He's going to go for this standard overhead and a key blast. He's done that every single time now. So let's just try our luck. Overhead key blast. Oh, but the blocks come out so quick. And that was a beautiful dragon rush. I personally probably would have brought back in base Goku. Huh. Oh, wow. Mm. Bad maneuver by me. OK. One, two, three. OK. It's over. I've already won. Say goodbye. Oh, cheesy, cheesy strats. I'll take it, though. I'll take it. Any day of the week. God, I love base Goku so much. Oh, no. One, two, three. No, don't do it. Don't do it. Don't. OK, I don't think he can. Cheesy strats. Cheesy strats. I got some cheesy strats, bro. Yo, this is high quality content. Is this what you come to this channel for? Bro, if you're in lower ranks, please use this strat and report back on Twitter. One, two, three. Oh, he's so calm, though. Oh, wow, he got buttons out before me. Damn, we could have got a super good lead with that one. Yikes, that would have been crazy. Oh, he's playing. He really does not want to get buttons out here. Backdash on that one. OK, we had to do that. Oh, why did I hit a button? I could have let my beam assist through the talking. Level three hard knockdown. I agree, I agree, I agree. Do we save R? That was a, OK, I was wondering when it was going to come. You know, I'm actually like at this point, I'm like, do I try to DR against this guy? There we go. I told you I was coming for it. I even let you know. Oh, no. No, dude. No. Ah, try to get the dragon rush out. I mean down heavy. Got my terminology confused. Goodbye. This one's called the destructive finish. Oh, never mind. OK, we still have our sparking blast here. That took a while to get out. Oh, DP. I was doing pretty basic stuff, so I can't be too upset. But that's fine. We bought a lot of time. Where's my sparking?  Not now. I need you more than ever now, because we're going to get hard knock. Not like this, dude. Not because of a faulty wiring. OK, that was just kind of risky. If he was going to read, he should have just gone for the DP. Wow, he super dashed before me. Never in my wife's life. Goku Black, get your jabs in order, man. Oh, my goodness. I'm going to lose. OK, we win. Eh, eh.  OK, it's 2-1, I think.  Is it 2-1? Is it? I actually don't know. It's 2-1 in my head, so I'm going to go for the 3-1. I tried to jump away.  Kind of dumb, kind of dumb. But, hey, if it's not kind of dumb, it's not me, boy. Ah, stuffy nose. Where's the mix up? He clicked buttons afterwards. I was hoping he'd try to mix me up.  How did this happen? All right, Goku Black, can you come in here and do this? Sliding. I'm dealing with another customer at this point. Ah, DP, beautiful decision-making. He's too low. OK, he didn't go for it anyway. All right, but you know damn well I'm not trying to use my brain. Ah, DP again. See, you can tell. No, I put my hands in the air, dude. Come on, you got to respect it. Did anybody in the show try to stop me from using my spirit bomb? I don't think so, dude. One, two, three. OK, we're good. I'm good to go if you're good to go, dude. I'm dead. I'll call you later. I'm dead. Man, come on, dude. I got one good round in with the cheese strap. See, he's like a savant, dude. As soon as he sees me, stop clicking buttons for a little over a second. He's like, OK, what's this dude trying to pull on me? I'm getting mixed up. I wish I had those reaction times, to be honest. OK, I'm going to go with this formula since I messed that one up pretty bad. All right, let's go down to the ground, eh? Let's go down to the ground so I can hit you with a little classic mix-up. Is it time for him to hit me with a wake-up level three? Oh, he just beat me to the punch with the buttons. That's a sad story. Hard knockdown, also not the hypest story I've ever read. OK, we block. OK, oh, wow, I was more than content to keep blocking. And yet I've been sentenced to this horrible place. What are you doing? That was supposed to be a kill. OK, well, I guess there's more than one way to kill him in. All right, it's time. Oh, where's my wake-up level three? The content, the content, you could hear it in my voice. I was content to be a scrub. All right, let me free. Come, I get beat to the buttons punch every time. The true mark of a loser. All right, we're in the corner. We're going to switch out into Goki Black for this. And I forgot how many jumps I used. There we go, we're in there.  All right, well, forget it, dude. Oh, wait, a level one might have killed.  Don't mind me, guys. I don't know my meters. I really don't know my meters at all. Let's see, is a comeback even possible? Goku the wrong way. Do I really have to show you your lefts from rights, dude? Oh, penisist. Oh, back dash. Go ahead. Hey, dude, if you want a super dash at any time, I am more than ready. But these keyblasts are making me limp. We out. Back dash, he's got to start reading those. I don't think I've done anything other than whoa. Did he know I couldn't get another 2L off? Goodbye. Oh, God. This is going to be a rough one if it's possible at all. Vegeta's neutral is just crazy. OK, OK, OK, not bad. Definitely looking possible. Might even be a one-bar scenario. It is, it is. OK, OK, we still have a full health level 3 sparking Super Saiyan Goku. And yes, that did take me eight minutes to say. It's going to come down to who's got the clean. Oh, I was going to say who's got the cleaner beam game, and then he hit me with that sauce. So it's him. Oh, it is him.  Let's be real. Oh, dude, come on down and visit me at Scrub Valley. Sparking, there it is. What are you doing? I will have my revenge. Maybe not in this game, but in the next game for sure. Come on, you don't got a DP. You don't got a DP. You don't got a DP, so don't even try it with me, bro. What are you doing? Come on, give me a little respect. I know you're out here doing your thing, but you need to learn your respect. OK, come on. Now I'm angry. Scrub.  I want you. Cool.    Again, guys, I'm half joking. I don't even know if it was teabagging I was seeing, but if it was, whew. Lesk, if you have a favorite moment, please let me know down in the comments because I want it to be that last minute. My brain being off, forget that, man. Forget, I was, oh, OK, I got to end the video. If you like this video, make sure to go down in the comments and leave it a like, and don't forget to subscribe if you want to see more of these videos because it helps you never miss out. If you thought you liked this and you want to watch another video of mine, there's four up on your screen right now or a few, and I think a subscription link, but click that as well, you know. I'm sorry, other than that, guys, I'm Dr. Doya. I'll see you in the next video.


Good afternoon, everyone. My name is Steve Ali and I'm a senior director of systems engineering for AVI Networks and I brought along with me my good friend Bhushan Pai, systems engineer, solutions architect, TME, everything. So I'm gonna talk to you a little bit about AVI Networks and how we integrate with OpenShift specifically. And just as far as a little bit of background, AVI Networks has been around for over five years now. We have a global footprint but what we do is in the space of the next generation software-defined application delivery controller. That's a lot of words, but we're next-gen 100% software and we provide ADC services such as load balancing, SSL offloading, caching, compression, DDoS mitigation, web application firewall services all together and I'm gonna go through the little bit of the architecture to help you understand exactly what this looks like. So let's just take a step back for a second and talk about the last decade and a half of where the ADC space has really come from or developed out of the Stone Ages is like how we like to refer to it. But there are a lot of things that were characteristic of ADC vendors, of ADC services that nowadays provide some pretty significant challenges for customers as they roll out new application workloads. One of those is that it's done on proprietary hardware. It's very monolithic. You're tied to that physical environment. It doesn't just have to be on-prem, it could also be in the cloud. It's still just a snapshot of that physical hardware. So that's one limitation. The other is that you have to manage each individual device separately. That can become problematic for large deployments. If you have to go log into each HA pair, active standby and configure them separately, that is a significant issue. There's also very low automation. A lot of those legacy platforms were not built on open rest-based API environments. They're not object-oriented. You can't simply just plug in other open API tools and get them up and running right away. A fourth one is very, very limited telemetry, meaning your visibility is pretty much confined to the two pair that you're logging into at that particular time. So when you talk about an entire distributed fabric, it doesn't really exist when you look at legacy solutions that are out on the market. Very limited analytics and insights. It doesn't really help with development priorities either. And lastly, it's static capacity. You put a physical box in place, you have X amount of capacity per that physical unit, and that's it. Once you hit that limit, you have to upgrade that physical device or put in another device. Moving applications around is not based on application need or end client need. It's based on the physical limitations of that physical appliance that you have those services running on. So what does Avi do differently? What do we bring to market now that differentiates us? The first thing is that we've completely decoupled the management plane from the data plane. We have created what's called the Avi controller and that handles all management or control plane function. And then we've also created the Avi service engines, which are the worker nodes. Those are the physical ADC devices. Now I say physical.  But the controller is now in charge of that entire distributed data plane architecture or fabric. Those service engines can be deployed in any ecosystem. So they can go into a traditional bare metal on-prem environment. They can be deployed in a virtualized environment. They can also be deployed in a containerized environment. That's what we'll talk about. One of the things that you get from this architecture obviously is the built invisibility because you log into one place, the Avi controller, and you have visibility, insights, analytics, data telemetry points to this entire distributed fabric. The other is automation. We're built on 100% open API and you can automate based on what we've already done, the work that we've already put into other third party integration tools. And then lastly is the capacity. The performance of this fabric can expand. We call this elastic HA and we can show a little bit of this, but we can expand and contract this fabric based on real-time traffic needs. Sometimes it's predictable. Sometimes you know that you have a registration event or a particular seasonal traffic event that comes up and you can pre-plan for that. Others such as a volumetric attack, a DDoS attack, for instance, you can't plan for those things. So we can expand and contract on demand as the traffic dictates. All right, so let's just focus on the container's piece and specifically container networking challenges. We talked a little bit about the legacy component, right? The traditional load balancers or ADCs that are out there, proprietary hardware, very inflexible, static. It's sometimes very difficult to move into a multi-cloud deployment model. That's one side of the spectrum. Then the other is these lightweight proxies traditionally deployed in an open source format. But the downfall with those is that they're not fully featured. That's a huge issue. They might be providing services for that one particular application, but that's it. You don't necessarily have the wide range of application services that you're used to in a traditional ADC. A lot of do-it-yourself. It can take quite a bit of operational effort to get these things up and running or working with other third-party tools. And lastly and probably the most important for this conversation is that you oftentimes will have different solutions for both north-south and east-west services. And I'm going to touch on that a little bit more. So container networking requirements specifically for OpenShift. These are the things that we're here to address when we deploy in an OpenShift environment. Service discovery is a big one. We can automatically go out and discover all the services that are already running in the OpenShift master and pull them into the AVI configuration. We also have global and local application services. So as you look to deploy between different data centers, between different cloud environments, between different theaters or regions, we can all do that in one seamless data flow. Application maps. There's no way for me to explain this, so we're going to show it to you in the demo. It's really slick and cool, but it will allow you to manipulate the entire OpenShift environment. Application performance monitoring. Again, it's that insight to both the north-south, that ingress traffic, as well as the east-west. And we're going to show you that as well. And then the security micro-segmentation. So when you're talking about true application service discovery and segmentation for security services, that's all built in and available through AVI. All right, so the first very common deployment for any type of a OpenShift or container deployment or container environment is going to be that ingress north-south traffic. You have an end user client that's coming in. They're asking for a DNS query. We respond with the appropriate address and we will get them to whatever node or pod that service is living in. We'll even load balance. We can do some SSL offload. We'll apply those application services that you're traditionally used to and we'll do that from an ingress north-south standpoint. I think it's pretty common, pretty well known use case. The second then that I touched on earlier is that east-west part. How do we do the exact same thing now as far as delivering those application services only within the OpenShift cluster? Oftentimes it's not just an end user coming into the environment from the outside, right? It's one service connecting to another service. We're going to provide the exact same level of ADC services, the load balancing, the cash compress, SSL. Whatever you need from an ADC standpoint, we're going to now provide that between services inside the cluster. Even if it's a service in one cluster going across to a different cloud in a different cluster, we can provide that same level of security, visibility, service, etc. Okay, just want to touch on two quick use cases and then we're going to turn it over to the demo. But a very common deployment scenario is when you're testing for blue-green app deployments. What we can do is create two strands, two flavors of the same application. If we're running everything on version one or the blue deployment, we can take all those services and gracefully bleed them off. We're not going to necessarily kill them, but we'll bleed them off. So the services coming into the blue deployment are going to remain until they gracefully die. In the meantime, we can stand up the green app and we can start sending net new connections over to that application, testing new features, new services, new configurations, whatever you might want to have introduced into that application type along the way, we'll do that gracefully. And we can flip back and forth the entire time of that life cycle. Sorry, I forgot my builds here. The second use case, which is another pretty common one but can often be dismissed or forgot about, is the fact that a lot of times the traffic will initiate from inside of the cluster and it will try and reach a service that is outside of the cluster. In this case, we have a database that's living outside of the cluster. It's initiated inside. We need to be able to protect that database with a firewall of some kind. Databases, excuse me, firewalls traditionally are looking for one source IP address and we can do what is essentially a reverse proxy or source net through Avi and provide that firewall with the single sourced address, getting the service from the database and providing it, sorry, didn't mean to click on that, providing it back to the service inside of the cluster, whatever service that was called for. But again, just another feature or common use case of Avi being inside of that open shift cluster in this case. Okay, so we're going to step over to the demo now and I just want to highlight the four steps that we're going to go through. Now, number one is that we're going to configure an open shift cloud and to us that's just an integration connection point to the open shift master, the control bus in this case. This step has already been done. It takes roughly 30 seconds to set up from the beginning. I didn't want to have to do it live here, so that piece is already done. What we are going to show you is how we bring up the Avi controller, how it identifies all of the different nodes inside of the Avi cluster and we will deploy a service engine per node that's already in existence there. Step three is we'll deploy an application and step four is that we'll start sending traffic to that application and bring up the application map and show you how cool that is. So let's see if this works here. It's over here. All right, so on the left hand side we have a simple automated script that's being delivered via a web portal and that first step there setting up the open shift cloud is what I mentioned was already done. So that part has been configured already and you can see it there and we have now the service engines up and running. So what that meant is that our controller has created this cloud, it's gone off and it's talked to the open shift bus. It has decided that there are three open shift nodes that are out there in existence and we deployed a service engine that load balancer, that software defined load balancer, inside of each of those nodes. So this is living inside of, natively inside of the open shift cluster right now and along with that we are taking all of the projects that we have listed here that you can see inside of open shift. We associate all of those projects specifically with tenants inside of Avi. Now tenants to us is just a way to create a multi-tenant environment. So you can create projects inside of open shift that will equate to tenants inside of Avi. Okay, we don't have any virtual services running yet. We're going to click on configure DNSVS and it's going to create the first one right now. It'll take a few seconds but again by running a simple automated script, we're initiating an action on the open shift side that's going to automatically pull into the Avi configuration and there it is. It's up and running and live and now we're going to start our applications. So this is going to take all the open shift apps that are out there and deploy them into the Avi configuration and we'll start to see these get populated now. They're getting created on the open shift side. They're going to then automatically get sucked into the to Avi configuration as well and we'll start to see those populate here. There they go. They're starting to fill in. We're waiting for the health checks to complete. We want to make sure that they're up and running successfully and as soon as they are we'll start throwing some traffic at them. We'll generate some traffic and start putting load on them. Now what Bhushan just did is he changed from a list view to a map view and this is going to show the application map that are referred to in the slide and once we start generating traffic now you'll start to see this map up here here in the UI. So this is now taking into consideration all of the segmented traffic communication that's happening inside of the cluster. We can map out exactly which service is talking to which service. We can even show when we dig into it a little bit we can show exactly what metric we want to look at. So right now we're looking at latency. We can take a look at throughput or we can take a look at the errors. We know exactly this is the visibility that we were talking about. We know exactly what's happening between each of these services that's already deployed or that we created live and we can now map out exactly which service should be talking to which service and secure that. So before we throw this into production environment we can lock down the communication that we know should be should be available to talk to each other, throw it into production and now we don't have to worry about any any security breaches within the cluster itself. We can do that by whitelisting. So right now we pulled up a whitelist and we've secured catalog to only be able to talk to marketing and inventory. Those two services are what can talk to catalog in this particular case. Now again once we deploy that into production that's it. It's locked down. It's secure. Now we're going to go into the analytics screen and I'm just going to do a quick time check. So we're going to go into the analytics of this application. This is the exact same level of visibility that you get from every single virtual service that you can figure inside of Avi. This could be a bare metal server running in a data center. It could be an OpenShift node. It could be an AWS instance, GCP instance. It doesn't matter. We give incredible insight and data analytics to every virtual service it's running. It's incredibly easy to troubleshoot because of the visibility and it allows you to help set development priorities as well because you now can trend the usage of any application that you have deployed. So currently we're looking at the application analytics dashboard. We're looking at the last 15 minutes of traffic but we're going to switch over to logs. We have two ways to look at logs. We have both significant and non-significant logging capabilities and here you start to see the examples and if we click on one of these what you see is really cool because we can show you exactly the communication path, the data path between the end user and the back end server. So we know exactly how long each segment takes. The WAN connection perhaps, the local network, which is the server RTT, the app response. We know exactly what the communication and latency looks like inside of the application and then the data transfer. If that application has to go back and call a database we know how long that takes. Each of those segments is stitched together and we present it to you both ingress for a total round trip time. Now in this case it was extremely quick, two milliseconds for the entire transaction to take place. But there will be others where we can pinpoint exactly where there may have been a delay. So that's that's really it. I appreciate everybody listening in and have a great afternoon. Thank you.