테스트 사이트 - 개발 중인 베타 버전입니다

트래픽 로그(실시간?) 그래프로 보기?

*nginx서버일 경우입니다

[code]

<?php
$logFilePath = '/var/log/nginx/access.log';

$logFile = fopen($logFilePath, 'r');

$trafficData = array();
while (!feof($logFile)) {
    $line = fgets($logFile);
    // 빈 줄은 건너뜁니다.
    if (trim($line) == '') {
        continue;
    }
    
    // 로그 라인 파싱 로직은 이전 예제와 동일하게 적용

    // 추출한 데이터를 연관 배열로 저장
    $logData = array(
        "ip" => $ipAddress,
        "time" => $accessTime,
        "method" => $requestMethod,
        "url" => $requestUrl,
        "status" => $statusCode,
        "bytes_sent" => $bytesSent,
        "referer" => $referer,
        "user_agent" => $userAgent
    );

    // 모든 라인의 데이터를 저장하는 배열에 추가
    $trafficData[] = $logData;
}

fclose($logFile);

// PHP에서 데이터를 JSON 형식으로 변환하여 JavaScript로 전달
$dataAsJson = json_encode($trafficData);
?>

<!DOCTYPE html>
<html>
<head>
    <title>Traffic Log Visualization</title>
    <!-- Chart.js 라이브러리 링크 -->
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <!-- 그래프를 그릴 캔버스 요소 -->
    <canvas id="trafficChart" width="800" height="400"></canvas>

    <script>
        // PHP에서 전달한 JSON 데이터를 JavaScript 객체로 변환
        var data = <?php echo $dataAsJson; ?>;

        // 그래프를 그리기 위한 데이터 준비
        var labels = data.map(item => item.time);
        var bytesSent = data.map(item => parseInt(item.bytes_sent));

        // 그래프 생성
        var ctx = document.getElementById('trafficChart').getContext('2d');
        var myChart = new Chart(ctx, {
            type: 'line',
            data: {
                labels: labels,
                datasets: [{
                    label: 'Bytes Sent',
                    data: bytesSent,
                    borderColor: 'rgba(75, 192, 192, 1)',
                    backgroundColor: 'rgba(75, 192, 192, 0.2)',
                    borderWidth: 1
                }]
            },
            options: {
                responsive: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
17191
17162
17160
17158
17156
17155
17153
17151
17145
17135
17131
17125
17114
17107
17099
17096
17089
17088
17082
17079
17078
17077
17070
17068
17067
17063
17060
17048
17045
17044