Rack of Ethernet switches.

Visualizing Log Patterns with Color

Nginx and Apache Logs in Color

Web server logs reveal patterns of activity by web crawlers. Some are indexing crawlers operated by search engines, some are mysterious. Another pattern is systematic blind searches for vulnerable server-side executables or other configuration problems. The pattern you want to see is the interested user who follows some path through the hyperlinks on your site, taking time to read the pages.

Maybe we could use color to help spot these patterns?

Maybe...

First, let's look at the result, then the explanation comes later. Here are the most recent client requests, starting most recent first. Your request for this page won't appear there as it isn't complete by the time this page was automatically generated with PHP. But if you reload the page you should see your initial request near the top.

116.203.225.209 IN, India 19/Jun/2025:23:30:21 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
216.73.216.187 US, United States 19/Jun/2025:23:30:21 /robots.txt
69.158.4.67 CA, Canada 19/Jun/2025:23:30:21 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
46.22.99.207 IS, Iceland 19/Jun/2025:23:30:21 /travel/trinidad/port-of-spain.html?s=mb
108.181.94.146 CA, Canada 19/Jun/2025:23:30:21 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
92.205.17.231 DE, Germany 19/Jun/2025:23:30:20 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
202.61.253.235 AU, Australia 19/Jun/2025:23:30:20 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
45.76.14.84 US, United States 19/Jun/2025:23:30:20 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
157.230.96.176 US, United States 19/Jun/2025:23:30:18 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
208.87.128.240 US, United States 19/Jun/2025:23:30:18 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.245.61.80 DE, Germany 19/Jun/2025:23:30:17 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.161.73.125 IR, Iran, Islamic Republic of 19/Jun/2025:23:30:17 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.175 BE, Belgium 19/Jun/2025:23:30:17 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.2.216.111 GB, United Kingdom 19/Jun/2025:23:30:16 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.173 BE, Belgium 19/Jun/2025:23:30:15 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
142.127.5.164 CA, Canada 19/Jun/2025:23:30:15 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
98.3.33.153 US, United States 19/Jun/2025:23:30:15 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
116.203.254.92 IN, India 19/Jun/2025:23:30:14 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
101.100.184.88 SG, Singapore 19/Jun/2025:23:30:14 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.78.116.141 IR, Iran, Islamic Republic of 19/Jun/2025:23:30:14 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
217.58.122.215 IT, Italy 19/Jun/2025:23:30:14 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
213.133.120.43 DE, Germany 19/Jun/2025:23:30:13 /travel/czech-republic/prague/?s=mb
136.34.214.221 US, United States 19/Jun/2025:23:30:13 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.129.44.149 BE, Belgium 19/Jun/2025:23:30:13 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
162.19.58.107 US, United States 19/Jun/2025:23:30:13 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
67.249.227.4 US, United States 19/Jun/2025:23:30:13 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
45.134.140.138 Unknown 19/Jun/2025:23:30:13 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
97.91.211.230 US, United States 19/Jun/2025:23:30:12 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
82.64.169.75 FR, France 19/Jun/2025:23:30:11 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
212.122.56.9 DE, Germany 19/Jun/2025:23:30:11 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
23.92.25.149 US, United States 19/Jun/2025:23:30:11 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
213.239.210.245 DE, Germany 19/Jun/2025:23:30:11 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.75.254.114 IR, Iran, Islamic Republic of 19/Jun/2025:23:30:10 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
88.99.210.108 DE, Germany 19/Jun/2025:23:30:10 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.78.41.244 IR, Iran, Islamic Republic of 19/Jun/2025:23:30:09 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
172.234.27.10 US, United States 19/Jun/2025:23:30:08 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
73.62.227.86 US, United States 19/Jun/2025:23:30:08 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
107.175.179.125 US, United States 19/Jun/2025:23:30:07 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
135.125.104.28 US, United States 19/Jun/2025:23:30:06 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
118.150.16.10 TW, Taiwan 19/Jun/2025:23:30:06 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
91.196.222.217 Unknown 19/Jun/2025:23:30:06 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
160.86.72.157 JP, Japan 19/Jun/2025:23:30:05 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
174.29.255.78 US, United States 19/Jun/2025:23:30:05 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
73.194.102.148 US, United States 19/Jun/2025:23:30:05 /radio/rf-spectrum.html?s=mb
135.181.17.53 CA, Canada 19/Jun/2025:23:30:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
162.248.4.11 US, United States 19/Jun/2025:23:30:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.173 BE, Belgium 19/Jun/2025:23:30:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
134.195.88.104 US, United States 19/Jun/2025:23:30:01 /blog/2023/01/03-whats-up-with-my-social-media.html
134.195.88.104 US, United States 19/Jun/2025:23:30:01 /
185.242.182.168 IT, Italy 19/Jun/2025:23:30:01 /blog/2023/01/03-whats-up-with-my-social-media.html
46.175.130.248 RU, Russian Federation 19/Jun/2025:23:30:00 /blog/2023/01/03-whats-up-with-my-social-media.html
129.154.240.238 US, United States 19/Jun/2025:23:30:00 /blog/2023/01/03-whats-up-with-my-social-media.html
149.202.73.232 FR, France 19/Jun/2025:23:30:00 /blog/2023/01/03-whats-up-with-my-social-media.html
46.175.130.248 RU, Russian Federation 19/Jun/2025:23:30:00 /
185.242.182.168 IT, Italy 19/Jun/2025:23:30:00 /
99.110.187.42 US, United States 19/Jun/2025:23:29:59 /blog/2023/01/03-whats-up-with-my-social-media.html
149.202.73.232 FR, France 19/Jun/2025:23:29:59 /
129.154.240.238 US, United States 19/Jun/2025:23:29:59 /
99.110.187.42 US, United States 19/Jun/2025:23:29:59 /
80.208.64.246 DK, Denmark 19/Jun/2025:23:29:58 /blog/2023/01/03-whats-up-with-my-social-media.html
185.161.147.228 DE, Germany 19/Jun/2025:23:29:58 /blog/2023/01/03-whats-up-with-my-social-media.html
152.53.18.248 US, United States 19/Jun/2025:23:29:58 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
168.119.181.185 US, United States 19/Jun/2025:23:29:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
80.208.64.246 DK, Denmark 19/Jun/2025:23:29:57 /
185.161.147.228 DE, Germany 19/Jun/2025:23:29:57 /
143.198.79.65 US, United States 19/Jun/2025:23:29:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
148.251.28.156 DE, Germany 19/Jun/2025:23:29:57 /blog/2023/01/03-whats-up-with-my-social-media.html
72.66.25.21 US, United States 19/Jun/2025:23:29:56 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
72.84.104.199 US, United States 19/Jun/2025:23:29:56 /blog/2023/01/03-whats-up-with-my-social-media.html
129.80.112.139 US, United States 19/Jun/2025:23:29:56 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
148.251.28.156 DE, Germany 19/Jun/2025:23:29:56 /
72.84.104.199 US, United States 19/Jun/2025:23:29:55 /
49.12.134.190 IN, India 19/Jun/2025:23:29:55 /rss.xml
136.62.158.195 US, United States 19/Jun/2025:23:29:48 /travel/uk/scotland-pitlochry/?s=mb
51.222.253.10 FR, France 19/Jun/2025:23:29:46 /open-source/rhel-oracle-centos-6-7-8-9/network-services.html
46.22.99.207 IS, Iceland 19/Jun/2025:23:29:36 /travel/iceland/akureyri-siglufjordhur/?s=mb
82.64.119.229 FR, France 19/Jun/2025:23:29:34 /technical/wma-or-flac-to-mp3.html?s=mb
73.194.102.148 US, United States 19/Jun/2025:23:29:30 /travel/athens-to-paris/bucharest-gura-humorului.html?s=mb
78.46.85.77 DE, Germany 19/Jun/2025:23:29:14 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.161.119.157 FR, France 19/Jun/2025:23:29:12 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
143.223.185.181 US, United States 19/Jun/2025:23:29:10 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
116.202.226.222 IN, India 19/Jun/2025:23:29:08 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
217.76.60.188 SE, Sweden 19/Jun/2025:23:29:08 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
161.35.8.200 US, United States 19/Jun/2025:23:29:08 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
213.239.192.8 DE, Germany 19/Jun/2025:23:29:07 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
34.27.162.185 US, United States 19/Jun/2025:23:29:07 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.210.99.95 FR, France 19/Jun/2025:23:29:06 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
152.53.134.31 US, United States 19/Jun/2025:23:29:05 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
111.249.76.131 TW, Taiwan 19/Jun/2025:23:29:04 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
136.243.202.252 DE, Germany 19/Jun/2025:23:29:04 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
18.138.81.13 US, United States 19/Jun/2025:23:29:04 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
208.95.234.146 US, United States 19/Jun/2025:23:29:04 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
137.184.40.150 US, United States 19/Jun/2025:23:29:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
37.27.222.192 IR, Iran, Islamic Republic of 19/Jun/2025:23:29:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.79.96.87 FR, France 19/Jun/2025:23:29:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.207.107.5 DE, Germany 19/Jun/2025:23:29:03 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
199.126.215.62 CA, Canada 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
193.30.122.175 DE, Germany 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.75.251.148 IR, Iran, Islamic Republic of 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
68.252.16.184 US, United States 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
142.122.123.202 CA, Canada 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.21.186.144 US, United States 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
37.27.255.184 IR, Iran, Islamic Republic of 19/Jun/2025:23:29:02 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
195.201.164.180 DE, Germany 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
46.4.252.37 DE, Germany 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
24.144.94.223 US, United States 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
20.150.150.150 US, United States 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.9.120.74 DE, Germany 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
107.199.111.104 US, United States 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
82.67.136.59 FR, France 19/Jun/2025:23:29:01 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
144.217.69.38 CA, Canada 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.9.77.71 DE, Germany 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.118.108 BE, Belgium 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
46.38.239.248 DE, Germany 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
103.184.175.1 Unknown 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
49.12.66.111 IN, India 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.109.98.227 US, United States 19/Jun/2025:23:29:00 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
64.4.175.77 US, United States 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
75.167.24.141 US, United States 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
40.113.118.83 NL, Netherlands 19/Jun/2025:23:28:59 /
54.191.40.200 US, United States 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
199.192.16.81 US, United States 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.219.141.96 US, United States 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.173 BE, Belgium 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
93.92.199.194 RU, Russian Federation 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
116.203.63.138 IN, India 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.77.122.82 FR, France 19/Jun/2025:23:28:59 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
64.227.98.185 US, United States 19/Jun/2025:23:28:58 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
204.238.213.137 US, United States 19/Jun/2025:23:28:58 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
77.71.137.221 MT, Malta 19/Jun/2025:23:28:58 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.75.243.239 IR, Iran, Islamic Republic of 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
89.245.108.133 DE, Germany 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
162.19.87.99 US, United States 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
138.201.19.143 DE, Germany 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
78.47.204.93 DE, Germany 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
45.77.5.31 US, United States 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
94.130.53.86 DE, Germany 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
103.184.175.1 Unknown 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
213.255.246.184 GB, United Kingdom 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
176.28.55.227 DE, Germany 19/Jun/2025:23:28:57 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
203.129.31.244 AU, Australia 19/Jun/2025:23:28:56 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
85.114.140.116 DE, Germany 19/Jun/2025:23:28:56 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
52.167.144.136 US, United States 19/Jun/2025:23:28:56 /blog/2024/02/23-what-is-ai-artificial-intelligence.html
95.111.251.213 UA, Ukraine 19/Jun/2025:23:28:56 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
169.61.78.163 US, United States 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
49.12.191.254 IN, India 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.232.71.82 AT, Austria 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
199.167.29.8 US, United States 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
142.132.227.141 CA, Canada 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
142.132.189.194 CA, Canada 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.181 BE, Belgium 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
82.180.130.138 DK, Denmark 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.109.234.6 US, United States 19/Jun/2025:23:28:55 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
138.2.9.228 US, United States 19/Jun/2025:23:28:54 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
5.161.176.207 IR, Iran, Islamic Republic of 19/Jun/2025:23:28:54 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
79.116.86.13 RO, Romania 19/Jun/2025:23:28:54 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
192.210.203.52 US, United States 19/Jun/2025:23:28:54 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
37.27.162.26 IR, Iran, Islamic Republic of 19/Jun/2025:23:28:54 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
212.51.151.180 CH, Switzerland 19/Jun/2025:23:28:53 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
45.79.0.121 US, United States 19/Jun/2025:23:28:53 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
128.0.64.88 NL, Netherlands 19/Jun/2025:23:28:53 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
89.238.70.229 DE, Germany 19/Jun/2025:23:28:53 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
174.136.148.94 US, United States 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
185.206.232.42 NL, Netherlands 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
173.67.12.115 US, United States 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.21.135.163 US, United States 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
18.171.243.220 US, United States 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
78.143.68.141 DK, Denmark 19/Jun/2025:23:28:52 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
91.99.156.83 IR, Iran, Islamic Republic of 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
207.172.217.131 US, United States 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.79.78.172 FR, France 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
54.187.192.246 US, United States 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
133.18.101.92 JP, Japan 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.109.49.87 US, United States 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.210.99.95 FR, France 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
57.128.95.173 BE, Belgium 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
65.109.67.55 US, United States 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
216.252.162.162 US, United States 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
176.9.185.230 DE, Germany 19/Jun/2025:23:28:51 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
159.89.237.186 US, United States 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
45.142.232.124 Unknown 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
104.28.211.31 US, United States 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
51.68.203.250 FR, France 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
61.64.28.190 TW, Taiwan 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
78.46.181.125 DE, Germany 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
143.244.177.66 US, United States 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
134.22.73.80 CA, Canada 19/Jun/2025:23:28:50 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
93.119.5.133 RO, Romania 19/Jun/2025:23:28:49 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
88.198.1.113 DE, Germany 19/Jun/2025:23:28:49 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
23.188.56.97 Unknown 19/Jun/2025:23:28:49 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
144.48.38.94 AU, Australia 19/Jun/2025:23:28:49 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb
76.241.26.223 US, United States 19/Jun/2025:23:28:49 /travel/japan/tokyo-asakusa/senso-ji.html?s=mb

Here's what's going on.

Each line above is a request from a client, extracted from Nginx's /var/www/logs/httpd-access.log file. The client IP address, timestamp, and requested path were selected with awk and the client IP address converted to a country if possible with geoiplookup.

Geolocate IP

You can use a service such as Abstract's IP geolocation to check if the conversion was successful, or if the client IP address is the exit portal of a VPN.

The first 3 octets or first 24 bits of the IP address are used to specify the hue, with chroma at 75% and intensity at 100%. The resulting red, green, and blue values are scaled to the range of 0-255 and printed as two-character hexadecimal in an HTML style string.

Low-numbered /8 networks appear as red, 20.0.0.0/8 through 40.0.0.0/8 are orange shifting to yellow, 50.0.0.0/8 through 110.0.0.0/8 are shades of green, the /16 networks 130.0.0.0/16 through about 180.0.0.0/16 are shades of blue, then it's shades of purple into magenta for the /24 networks 192.0.0.0/24 and up through 223.255.255.0/24.

The HTML file on the server has a line where PHP uses passthru() to call the following shell script:

#!/bin/sh

# Initial pipeline:
# tail		Just the last 200 (or slightly less after the grep)
# grep		... just the requests out of that
# cat | sort	... put into reverse order
# sed		... remove the quotes and square brackets
# awk		... print the IP address twice, timestamp, and requested path
# sed		... remove the first 3 dots to split first version of IP
#			address into octets, and remove any characters that
#			could cause trouble when inserted into this page
# I need to use the client IP address, field #5 at that point, to call
# geoiplookup.  So, send the initial pipeline into a while loop that
# assigns variables, sets a new variable, and then echoes the resulting
# collection into awk.
tail -200 /var/www/logs/access_log |
	grep 'GET.*200' |
	cat -n | sort -nr |
	sed -e 's/"/ /g' -e 's/\[//g' -e 's/\]//g' |
	awk '{print $2, $2, $5, $8}' |
	sed -e 's/\./ /' -e 's/\./ /' -e 's/\./ /' -e 's/[<>]//g' |
	while read IP1 IP2 IP3 IP4 CLIENTIP TIMESTAMP URL
	do
		COUNTRY=$( geoiplookup $CLIENTIP |
				sed 's/.*Edition: //' |
				sed 's/IP Address not found/Unknown/' )
		echo $IP1 $IP2 $IP3 $IP4 $CLIENTIP $COUNTRY $TIMESTAMP $URL |
		awk '{
			ip1 = $1;
			ip2 = $2;
			ip3 = $3;
			chroma = 0.75;
			hue = 6*(ip1*255*255 + ip2*255 + ip3)/(255*255*255);
			if (hue%2 > 1) {
				x = chroma*(1.0 - (hue%2 - 1));
			} else {
				x = chroma*(1.0 - (1 - hue%2));
			}
			if (hue < 1.0) {
				r = chroma;
				g = x;
				b = 0;
			} else if (hue < 2.0) {
				r = x;
				g = chroma;
				b = 0;
			} else if (hue < 3.0) {
				r = 0;
				g = chroma;
				b = x;
			} else if (hue < 4.0) {
				r = 0;
				g = x;
				b = chroma;
			} else if (hue < 5.0) {
				r = x;
				g = 0;
				b = chroma;
			} else {
				r = chroma;
				g = 0;
				b = x;
			}
			r = (r + 0.25)*255;
			g = (g + 0.25)*255;
			b = (b + 0.25)*255;

			printf("<div class=\"col-12 textleft\" ");
			printf("style=\"color:#000; background:#%02x%02x%02x;\"> ", r, g, b);
			for (i = 5; i <= NF; i++) {
				printf("%s ", $i);
			}
			printf("</div>\n");
		}'
	done 

Other Pages