I’ve recently been researching Splunk and have been impressed with its power, flexibility, and ease of use. This blog is not intended to be a step-by-step tutorial, but rather is aimed to show some initial findings, overview one way to integrate Splunk with DNN, and paint the picture of some potential use cases.
So What is Splunk?
If you don’t already know what Splunk is, Splunk is a software company based in San Francisco that produces software for searching, monitoring, and analyzing machine generated big data via a web style interface. Splunk’s software helps organizations with operational intelligence, log management, application management, enterprise security and compliance.
Installing Splunk was simple and after clicking around a little while it was evident that Splunk is an intuitive software. From a UI standpoint, it makes logical sense and the flow is easy to understand. And it didn’t take long to see and understand how powerful it is.
As you may imagine, I began to wonder if and how I could integrate Splunk with DNN.
DNN + Splunk: One Way to Connect the Two
One of Splunk’s powerful features is that it can literally suck in all types, styles, and formats of data. This data can be machine data, log files, or even data from a REST API. There are several mechanisms for getting data into Splunk, but for this scenario, DNN’s web API implementation makes this an easy fit. On the DNN side, a developer can easily create a custom module using web services to expose any DNN data on an endpoint, which Splunk can then access. If you’d like to go the custom module route, check out my other blog series on module development. However, I did not write a custom module to test the integration.
For my initial investigation into Splunk I chose to use DNN Sharp’s API Endpoint module as it allows easy configuration of end points. Splunk is architected to consume any type of data and then it makes that data extremely easy to search, create visualizations and/or alerts with. These searches, visualizations, and alerts can be very basic or very complex in nature.
Another thing to note is that Splunk is architected to do this at scale and can easily parse enormous amounts of data. For example, every time you drink from a Coca-Cola “Freestyle” machine at a fast food restaurant, the data from your drink selection is logged and Splunk helps analyze the data, denote trends, and sends alerts. So yes, those Coke machines (all across the world) are connected IOT devices and Coke is a Splunk customer. See how Coke is using Splunk in the Splunk Conf 2014 Keynote replay session. Imagine how much data that is on a global scaled --> Splunk is helping Coke make sense of it.
Side note: Check out the blog I wrote on using Particle & Splunk to monitor temperature
So, my first goal was simple: see if I could get data from DNN into Splunk.
Sticking along the thought process of “data logs” I figured why not expose the DNN event log on an endpoint and see what I could make happen. Obviously, the event log may not be the best use case as site administrators can clear logs or processes to automatically clear logs sometimes exist. However, for this initial test it is a good candidate. To get the event log data on an end point I used the DNN Sharp API Endpoint module to make a SQL query on the event log view and return it as JSON.
With the event log now sitting out there as JSON on a DNN end point now all I needed to do was get it into Splunk…
Getting REST Data Into Splunk
The Splunk side of this configuration only took a few minutes to configure and keep in mind I’m no Splunk guru (read, it’s easy!). Splunk is similar to DNN in that it’s extensible. Splunk extensions can be found on the Apps and Ad-Ons sections of the Splunk website. I tell you this because ultimately, I followed a blog by Damien Dallimore on getting REST data into Splunk which used a modular input extension and that was all it took. I simply completed the required fields in the Splunk REST Modular Input as shown below.
I chose to poll the data every 60 seconds. With this information inputted I clicked save and returned to the Data Inputs screen of Splunk and chose my newly created data source.
BOOM! I was seeing DNN event log info in Splunk!
Searching, Visualizations, & Alerts in Splunk
With data in Splunk now I needed to proceed to using Splunk to make sense of the data. Splunk’s searching functionality makes it very easy to search for, well... anything you'd like. I’m not yet knowledgeable enough to fully explain all the capabilities, but what I can easily see is that you can select your data source, click on keywords, add them to the source's search criteria and set your desired timeframe for the search. It’s feels as if you have a Google search bar and all your searches are performed on your data source and intellisense & syntax highlighting for your search are provided too!
Once you have a search returning data you can then create visualizations or alerts. And yes, there are tons of visualizations provided by Splunk. These visualizations can be saved as reports or live as “panels” that reside on dashboards. Dashboards can have as many panels as you want and you can have multiple dashboards if you like. Also, you can easily embed these panels into DNN or any other location by clicking the “convert to HTML” link that each panel has. Being able to display this info anywhere you like is a neat feature. Are your mental light bulbs turning on yet?
So, I created a few visualizations based on event log data that was available. I created a number-based-visualization to show a large number that represented a count of 404 errors, a line graph showing the number of failed logins, and a chart showing the 404’s over time. So, in just minutes Splunk was already helping me understand that I have some issues going on with one of my sites. I believe one reason for the 404's is that I've renamed some pages that I think bots are targeting trying to register. Anyways, I've got work to do... don't judge!
Opening Up Possibilities
Now you may be looking at this and thinking to yourself, yeah this is neat, but I could create a custom module to make something similar to this happen. And you would be correct, but keep in mind the potential use cases, flexibility, and scalability of Splunk in comparison to a custom module. You could easily have all your customers as data sources and create dashboards to help you (and your customers) quickly understand what’s going on with your customer's applications. You could also do data mashups of data from a DNN website/web app, some IOT device out in space, and any other data source you can think of to provide valuable insight. And again, Splunk has no problem doing this with massive amounts of data.
With just a little research into Splunk it didn’t take long to get my mind spinning with all the possibilities within DNN and beyond. Think about your current DNN use cases, requirements of your customers, and the exploding IOT market and you’ll soon see the light.
Here are some ideas I had right off the bat:
As you can see the power and flexibility Splunk provides is really nice. I believe Splunk could be a game-changer especially for those with large amounts of data to parse, anybody in the IOT space, and much more. I hope this blog has provided you with an introductory glimpse into some of the capabilities of Splunk and even got you thinking of potential ways to integrate Splunk into your applications or customer's environments. I am still learning about it and hope you will too. I know that I'm just scratching the surface here in my initial findings.
Find out more about Splunk at http://www.Splunk.com
At DNN Summit I learned of a new tool created by Kelly Ford called “DNN Prompt”. I first saw it in a session that Peter Donker gave and it immediately caught my attention. Since then I’ve learned more about it and want to share some initial thoughts on it.
Peter was demoing something related to the persona bar in his session on React.js when he mentioned that he was going to try a “new trick” he’d just learned from Kelly Ford. He then opened a panel up and a command line was visible. He typed in something like “new-extension” and voila, just like that a new extension was created. He closed the panel and moved on with this session, while I was left in amazement wondering what had just happened.
As one of the hosts of DNN Summit I was in and out of rooms all day, taking pictures and tweeting them, and just busy helping out in general. It was hard for me to pay attention to things, but whatever Peter had just done definitely caught my eye. I turned to the person beside me and asked them what was that panel he just used. I thought it may have been some Powershell script or something. The person to my left didn’t know either.
Enter DNN Prompt
After asking around and nagging enough people I learned that this new feature was called “DNN Prompt”. Prompt is the latest and greatest from Kelly Ford who most of the DNN Community knows as being the creator of XMod
Thinking back on it I think I remember hearing whispers around the DNN Community that Kelly had been working on something that was really cool, but yet I never heard any details. Now I’d seen it in action and was connecting the dots. At first glance I thought it was black magic of sorts.
In the time since DNN Summit I’ve been able to connect with Kelly and the team of people working on DNN Prompt and actually use the tool. It is definitely neat. In this blog I want to provide a quick intro video on DNN Prompt and relevant links for those who are interested.
The Return to the Command Line
It seems there’s been a recent trend going back to the command line among developers. If you look around at NPM, Node.js, etc. you’ll find the command line being used more and more. Even Kelly’s recent presentation to the Southern Fried DNN User Group here in Charlotte referred to this notion as his title was “How Something Old Can Make DNN New Again”.
Although the user interface for the command line is not as “user friendly” as a wizard based approach it does allow for faster execution of tasks. When you think about it, it really makes sense because the users of this kind of tool are typically admins or developers… not content editors… and they love this kind of power at their fingertips. Don't get me wrong though, this tool is more than just about speed. The vision Kelly has for the tool is very forward thinking and one to get excited about.
DNN Prompt is a Game-Changer
From my first few times using DNN prompt and from seeing people's reactions at the Southern Fried DNN User Group meeting (both in-person and online) I think it’s a game changer for DNN. Everyone's minds were spinning and it didn't take developer's long to see what this could mean for DNN as the tool is extensible. I think Prompt will be a DNN Administrator’s best friend. Normal DNN administrators will now be “Power Administrators” once they use DNN Prompt enough to know the commands by heart. At conferences in the future you’ll see everyone having Prompt installed, using, and referencing it. I plan on using it a lot in my own DNN sites and think that you will end up using it too! Kelly's goal is to get this into the core of DNN Platform and I hope he is successful with that goal.
As you saw in the video, DNN Prompt has the potential to be a game changer for DNN. It will impact the DNN platform, community, and ecosystem. Also, just as Kelly’s earlier DNN creation (XMOD) has done, I believe Prompt could follow a similar path and potentially spawn a new sub-ecosystem for DNN developers and administrators. DNN Prompt could open a new era for development within the DNN ecosystem as the possibilities are endless. Imagine doing all your daily tasks via the command line or imagine modules and other extensions having their own hooks into Prompt. What if you could instantly shut down registrations across 100 portals with one single command or script out batch commands to do whatever you want within your site… it could get interesting quickly!
Kelly ended his presentation with asking people to get involved. He wants to know your feedback, how you envision using the tool, the commands that would be important to you, etc. The good news is taht DNN Prompt is open source and active on GitHub! I know that the team of people developing the solution would love to have more people contributing to the code base and pushing the solution forward.
Here are some links for those of you interested in participating and knowing more:
It’s DNNCon week! The DNN Community is ramping up with excitement about the conference this upcoming weekend. I know that our Carolina based crew is looking forward to the road trip to the DC/Baltimore area, the convos/sessions/parties at the conference, and most of all the fellowship with everyone in the community.
That said, if you’re still on the fence about attending I think you should give a go and here are 3 reasons why:
Once you choose a font you can click to the “Type Tester” section to see how any specific words you type will look in your selected font. You can easily increase or decrease the font with the slider and you can also view how the font looks in various browsers on the “Browser Samples” tab as shown in the screenshot below.
Typekit uses “kits” to organize fonts for usage by designers. It’s really easy to create a new kit. Simply hover the kit section and click “Add New Kit”. As you can see from the screenshot below, I've created a kit for each site on which I use custom fonts. You can see how to add a new kit in the below screenshot.
Now that the "kit" is ready I need to add some fonts to it. Once you decide on a font you simply hover over the font and click “Add to Kit” and the font will be added to the kit for which you are currently viewing as denoted in the below image.
After you add a font to a kit you can go into the "kit editor" to further customize. Once you’re inside the kit editor you can customize various settings and styles that make the custom fonts appear on your site. You can simply add the CSS selectors that you’re using on your site & they will then render showing the custom font that you've just selected in Typekit. Notice in the below screenshot where I'm adding " .ANewSelector " class in Typekit's editor.
If you wanted to access specific weights & styles via your skin.css file you can click on the “Using weights & fonts in your CSS” option which will give you the below screen allowing you to copy the CSS necessary for your specific font & weight.
Now if you did click the “Copy CSS” option you would end up with some CSS that resembled the below:
font-family: "atrament-web",sans-serif; font-style: normal; font-weight: 400;
Once you click publish you will be ready to go. I should also mention that if you want to develop or test out styles locally you can also enter “localhost” in your kit editor settings and that will make your local sites work with the new custom fonts.
If you were concerned about how your styles would display on mobile devices you can click into the "Mobile Settings" section of the Typekit editor as seen in the below screenshot.
Now to make all of this active we need to click the big green “Publish” button at the bottom right hand corner of the kit editor screen which you can see in the below screenshot.
Then in my HTML Module I simply referenced the CSS classes that I specified earlier in the Typekit selectors area.
And that's all it takes to get everything lined up. You can see an example of the redesigned home page (running locally) using the custom font “Atrament web” that I selected earlier.
Typekit makes it extremely easy to use custom fonts in your site. If you’re a Creative Cloud member you should check it out. I hope this blog has been helpful to you with integrating custom fonts in your DotNetNuke sites.
If you ever need to put some custom styles in the Telerik Rad Editor of DotNetNuke HTML module it can be a little frustrating if you don't know exactly where to put the files. It's actually a simple process. I cut a quick video walking through this process and wanted to post here in hopes of helping someone who may encounter this same issue.
I’d seen the job posting for the Sales Engineer role at DotNetNuke Corp for a while and thought that it seemed to be right up my alley. That is, until I got down to the part about the position being based out of San Mateo, California. I’m a Carolina boy through and through and don’t think I could survive without sweet tea! Not to mention that there’s no way the wife would move and I don’t believe you can hunt deer or catfish out there so it was a moot point to even think about it. I usually see Will Strohl tweet about the position, read the description, sigh, and then close the browser.
Then a strange thing happened… it seemed there was an opportunity to work remote if I’d be willing to travel some. You can imagine when I learned about this that I got pretty pumped up about it and consequently assured the wife that she should be pumped about it too ;-) After fixing my hair up, a trip to DNN HQ, and a few weeks later I’m now happy to announce that I've accepted a job at DNNCorp as a Sales Engineer! Along with my role as Sales Engineer I’ll also be doing some community evangelism.
After accepting the role I thought about my journey thus far with DotNetNuke and I would be doing an injustice if I didn’t thank several people and the DotNetNuke Community in general. If you care enough to read this post then you’re probably someone I should say thank you to… so thanks!
I've learned a lot about DNN over the past few years and much of my learning has stemmed from interactions with people online whether it’s on Twitter, a helpful blog entry that someone posted, or working through an issue on the forums or community exchange. In short I don’t think I’d have learned as much without the help, support, and encouragement from everyone in the DNN Community.
I’d specifically like to say thanks to a few individuals starting with Allen Foster. Allen has helped me out greatly along my way. Allen took me under his wing and continues to help me learn and grow. If Allen had never decided to revive the Charlotte based DotNetNuke user group then I’d never have been able to nag and mooch knowledge off people in the Carolinas and I probably wouldn't be writing this post. Will Strohl has always been a supportive, open ear willing to help me out as well as Will Morgenweck, Chris Paterra, and Chris Hammond have all gone out of their ways for me at some point. William Severance answered several of my forum posts way back when I was first trying to first figure things out which helped me to understand that there are people out there who want to help. This was my first glimpse into open source and the community behind DotNetNuke. Mitchel Sellers, Robb Bryn, Henry Kenuam, and Ryan Moore have all helped me out along the way too. I should also mention Armand Datema... Armand has helped me out by showing me the way with some really cool front-end stuff whether it be with JQuery, Form & List, or the DDR menu. I know that a great deal of my learning around DotNetNuke has only been possible through the relationships and graciousness of everyone in the community… so thank you!
I’m excited to be a part of the DotNetNuke team and hope to make a positive impact. Just when you thought I couldn’t tweet about DotNetNuke any more they go and offer me a job ;-)
Our crew had a blast last year at DNNWorld 2011 so we eagerly looked forward to this year’s conference all year long. This year DNNWord was moved up a month from November to October which was a welcomed change by me as November is the best part of deer hunting season in South Carolina. As soon as the early-bird registration came out I registered.
To me, DNNWorld is like a combination of a family reunion, a pep rally, and information-loaded-boot-camp. It’s really hard to describe and put into words, you just have to experience it. There are great people to meet, prizes to win, awesome sessions to inspire you and get your creativity flowing, a side-conversation constantly going on via social media, competitions to enter, arrows to shoot at people, good times to be had, and trees to be climbed. It’s fun and I always leave energized about the future. There was no way we’d miss it.
Form & List + ManDeeps Module Mashup
I had to create a portfolio and handle various formats so I tied the form and list module together with the LiveContent module from ManDeeps.com and used them to create the gallery. Technically I could have done this all with ManDeeps LiveContent module, but tying it in with the Form and List module makes it a little bit easier to maintain for content managers as well as gives me sorting, paging, and stronger control via CSS.