From ae7ea40f7478dd567234ede1ed25c681a47438e3 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Tue, 8 Oct 2024 12:53:18 +0100 Subject: [PATCH] Add nginx log analyzer --- ...{log-analyser.md => nginx-log-analyser.md} | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) rename src/data/projects/{log-analyser.md => nginx-log-analyser.md} (57%) diff --git a/src/data/projects/log-analyser.md b/src/data/projects/nginx-log-analyser.md similarity index 57% rename from src/data/projects/log-analyser.md rename to src/data/projects/nginx-log-analyser.md index e91242195..bb02158fc 100644 --- a/src/data/projects/log-analyser.md +++ b/src/data/projects/nginx-log-analyser.md @@ -1,5 +1,5 @@ --- -title: 'Log Analysis Tool' +title: 'Nginx Log Analyser' description: 'Write a simple tool to analyze logs from the command line.' isNew: true sort: 3 @@ -10,14 +10,13 @@ skills: - 'bash' - 'shell scripting' seo: - title: 'Log Analysis Tool' + title: 'Nginx Log Analyser' description: 'Build a simple CLI tool to analyze logs from the command line.' keywords: - - 'log analysis tool' + - 'Nginx Log Analyser' - 'devops project idea' roadmapIds: - 'devops' - - 'linux' --- The goal of this project is to help you practice some basic shell scripting skills. You will write a simple tool to analyze logs from the command line. @@ -36,6 +35,13 @@ Download the sample nginx access log file from [here](https://gist.githubusercon You are required to create a shell script that reads the log file and provides the following information: +1. Top 5 IP addresses with the most requests +2. Top 5 most requested paths +3. Top 5 response status codes +4. Top 5 user agents + +Here is an example of what the output should look like: + ```text Top 5 IP addresses with the most requests: 45.76.135.253 - 1000 requests @@ -44,5 +50,19 @@ Top 5 IP addresses with the most requests: 43.224.43.187 - 30 requests 178.128.94.113 - 20 requests +Top 5 most requested paths: +/api/v1/users - 1000 requests +/api/v1/products - 600 requests +/api/v1/orders - 50 requests +/api/v1/payments - 30 requests +/api/v1/reviews - 20 requests +Top 5 response status codes: +200 - 1000 requests +404 - 600 requests +500 - 50 requests +401 - 30 requests +304 - 20 requests ``` + +There are multiple ways to solve this challenge. Do some research on `awk`, `sort`, `uniq`, `head`, `grep`, and `sed` commands. Stretch goal is to come up with multiple solutions for the above problem. For example, instead of using `awk`, you can use `grep` and `sed` to filter and count the requests.