사용자 도구

사이트 도구


database:mysql:anemometer

Box Anemometer

설치 주의점

  • Anemometer README 에 따라 설치 진행
  • php-bcmath 패키지 필요.
  • /etc/php.inidate.timezone = Asia/Seoul 설정 필요.

로그 분석해서 DB에 넣기

  • pt-query-digest를 사용한다.
  • 기본적인 쿼리 분석해서 DB 넣기 스크립트
    pt-query-digest --user=anemometer --password=superSecurePass \
                      --review h=db.example.com,D=slow_query_log,t=global_query_review \
                      --history h=db.example.com,D=slow_query_log,t=global_query_review_history \
                      --no-report --limit=0% \ 
                      --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" \ 
                      slow_query_log_file.log
    • $HOSTNAME 부분은 분석대상 쿼리의 호스트이름을 넣어주면 global_query_review_history.hostname_max 컬럼에 hostname 값으로 입력이 되게 되며 검색 조건으로 해당 hostname을 지정할 수 있게 된다.
    • slow_query_log_file.log를 자신의 Slow query log 파일로 변경한다.
    • 분석 결과 DB 관련 정보는 자신이 설정한대로 바꿔 넣는다.
  • pt-query-digest 구 버전에서는 –review-history 였지만, 2.2.1 버전에서는 –history로 옵션이 바뀐 것 같음.

nginx에 설치

  • php-fpm 패키지 설치.
  • nginx와 php-fpm을 패키지로 설치하면 /etc/nginx/fastcgi_params 파일이 생성된다.
  • 잘 안될경우 nginx log를 통해 php-fpm 관련된 $document_root, $fastcgi_script_name 변수들을 찍어보고 비교해 본다. 보통은 root,alias등의 경로 지정이 잘못돼서 안 되는 경험을 했다.
  • php-fpm 설정에서, usergroup이 실제 PHP 파일들이 있는 디렉토리와 파일에 대한 권한과 동일하도록 변경해야 한다.
  • /var/www/html/anemometer에 설치했다고 할 때,
    server {
        listen 80;
        server_name example.com;
        
        location /anemometer {
            root   /var/www/html;
            index  index.html index.htm;
        }
    
       # *.php 파일만 php-fpm 이 처리한다.
       location ~ ^/anemometer/.+\.php$ {
            root   /var/www/html;
            index  index.html index.htm;
    
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
       }
    }

결과 화면 컬럼 설명

  • checksum : 쿼리 체크섬. 퍼머링크로 사용되어 다른 사람들과 쿼리 URL을 공유할 수 있음.
  • snippet : 쿼리 문자열
  • query_time_avg : 평균 쿼리 시간 - 초(sec)
  • rows_sent_avg : 평균 결과 행 수
  • ts_cnt : 쿼리 실행 갯수(sloq query로 떨어진 것만)
  • Query_time_sum : 총 쿼리 시간 합.
  • Rows_sent_sum : 총 결과 행 수
database/mysql/anemometer.txt · 마지막으로 수정됨: 2013/04/22 18:55 저자 kwon37xi