트래픽 로그(실시간?) 그래프로 보기? > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

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

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

본문

*nginx서버일 경우입니다


<?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
추천
0

댓글 0개

전체 8
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT