При парсинге логов важно понимать что их можно настроить и получать только ту информацию что нам надо, но если лог дефолтный, то вам подойтет вот этот скрипт ниже.
$f = "other_vhosts_access.log";
$s = file($f);
foreach ($s as $l) {
$a = explode(" ",$l);
$domen = preg_replace("#\:\d+$#", "", $a[0]);
$port = preg_replace("#^.+\:#", "", $a[0]);
$ip = $a[1];
$time = str_replace("[","",$a[4]); // [13/Nov/2022:08:31:47 +0300] a4-a5
$meth = str_replace("\"","",$a[6]); // a6
$uri = $a[7];
$code = $a[9];
$size = $a[10];
$ref = str_replace("\"","",$a[11]); // referrer
$ua = rtrim(@implode(" ", array_slice($a, 12) )); $ua = str_replace("\"","",$ua); // useragent
@$A[$ua]++;
}
arsort($A);
print_r($A);
Грубо говоря вам остается лишь выбрать какие параметры хотите получить.