php에서 트래픽 로그 그래프로 확인 (nginx만 가능) > 코딩 스토리

php에서 트래픽 로그 그래프로 확인 (nginx만 가능)

페이지 정보

작성자 이름으로 검색 (192.♡.0.1) 작성일 23-07-22 17:31 조회 9,685 댓글 1

본문

<?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>


사용법: 루트 폴더에 본 파일을 원하는 이름.php로 저장시킨 후, /var/log/nginx/access.log를 심볼릭링크합니다.

심볼릭 링크? 거는법: ln -s /var/log/nginx/access.log /웹서버 주소

ex.) ln -s var/log/nginx/access.log /var/www/html


*심볼릭 링크한 var/log/nginx/access.log과 위의 코드가 작성된 파일이 한 디렉토리 안에 위치해야 합니다.

좋아요121 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

카테고리 분류 학습 시스템 (총 0개 학습됨)

예측 카테고리: 엔터테인먼트 (랜덤 - 학습 데이터 없음)

이 분류가 맞나요? 학습시켜주세요!

2kat님의 댓글

no_profile 2kat쪽지보내기 자기소개 아이디로 검색 전체게시물 아이피 (220.♡.000.000) 작성일

좋은 자료 감사합니다.

😶
❤️
😂
😅
😮
😡
🥵
  • RSS
  • _  글쓰기 글쓰기
전체 302건
게시물 검색

접속자집계

오늘
2,587
어제
3,897
최대
42,418
전체
940,815