서버의 로그 시스템

3395 단어

로그 기반


우선 우리가 명확하게 해야 할 것은 이른바 서버 로그 시스템이 도대체 우리가 무엇을 할 수 있도록 도와주는 것인지이다. 사실 이것은 말할 것도 없다. 로그는 우리가 서버에서 발생하는 오류나 문제를 신속하게 포지셔닝하는 데 도움을 주는 것이 아니다. 물론 이것은 로그의 많은 목적 중 가장 중요한 것이다. 간단하게 말하면 우리가 어떻게 깨끗하고 유용한 로그를 써야 하는지이다.

일지를 기록해야 할 곳

  • 외부 인터페이스 호출 전후
  • 시스템 상태가 바뀔 때
  • 비정상적인 오류가 발생했을 때/업무 이상
  • 시스템의 입구와 출구
  • 예기치 않은 집행
  • 아주 드물게 나타나는else

  • 몇몇 원칙

  • 로그를 출력할 때 오류가 발생하지 않도록 합니다
  • 과도한 로그는 시스템을 늦출 수 있다
  • 로그는 최소한 설명과 데이터를 포함해야 한다
  • 중요한 로그는 특별한 검색 가능한 문자를 추가해야 합니다
  • 비밀번호, 개인정보, 신용카드 정보 등 민감한 데이터를 출력하지 마세요
  • 중요한 방법의 매개 변수와 반환 값을 출력합니다
  • 출력의 중요한 방법의 시작과 끝 (이상 시 출력 종료 로그?)
  • 외부 시스템과 연결할 경우 INPUT 및 OUTPUT를 출력해야 합니다
  • 이상 정보를 합리적으로 출력한다(이상을 주동적으로 출력하지 말고 프레임워크, 공통 코드를 통해 합리적으로 출력한다. 이상이 여러 번 출력되는 것을 피한다)
  • 데이터의 출력 형식을 고려하여 여러 가지 형식을 출력하는 것은 사람이 보거나 도구를 이용하여 분석하는 것이 가장 좋다
  • 바이너리 파일 정보(name,size)를 합리적으로 출력합니다
  • 순환 중에 로그를 기록하지 마세요

  • 로그 형식


    일반적으로 키 값 쌍과 json 두 가지로 나뉘는데 당연히 항목에 따라 다르다
    apache  
    192.168.56.6 - - [24/Sep/2012:11:11:11 +0900] "GET /info.php HTTP/1.0" 200 9 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.7) Gecko/20120829 Firefox/10.0.7"
    ngnix  
    192.168.21.198 - - [06/Mar/2015:18:19:06 +0900] "GET /index.php HTTP/1.1" 200 87243 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36"
    

    로그 수준


    로그 등급은 서로 다른 로그 시스템, 등급에 따라 크게 5가지로 나뉘는데 다른 블로그에서 본 총결산 각 등급의 오류는 대략 이렇게 설명할 수 있다
  • ERROR: 시스템에 심각한 오류가 발생했습니다. 즉시 처리해야 합니다. 그렇지 않으면 시스템이 계속 실행될 수 없습니다.예를 들어, NPE, 데이터베이스 사용 불가 등.
  • WARN: 시스템은 계속 작동할 수 있지만 반드시 관심을 불러일으켜야 한다.존재하는 문제는 일반적으로 두 가지로 나눌 수 있다. 하나는 시스템에 뚜렷한 문제(예를 들어 데이터를 사용할 수 없음)가 존재하고 다른 하나는 시스템에 잠재적인 문제가 존재하기 때문에 주의를 끌거나 조언을 해야 한다(예를 들어 시스템이 안전 모드에서 실행되거나 방문 전 시스템의 계정에 안전 위험이 존재한다).한마디로 시스템은 여전히 사용할 수 있지만, 검사와 조정을 하는 것이 가장 좋다
  • INFO: 중요한 비즈니스 논리적 처리 완료.이상적인 상황에서 INFO의 로그 정보는 고급 사용자와 시스템 관리자가 이해하고 로그 정보에서 시스템의 현재 운행 상태를 알 수 있도록 해야 한다.예를 들어 한 비행기표 예약 시스템에 대해 말하자면 한 사용자가 비행기표 예약 작업을 끝낸 후에'누가 A에서 B까지의 비행기표를 예약했는가'를 알려야 한다.또 다른 INFO 정보를 출력해야 하는 곳은 하나의 시스템 조작으로 인해 시스템의 상태에 중대한 변화가 생겼다(예를 들어 데이터베이스 업데이트, 과도한 시스템 요청)
  • DEBUG: 주로 개발자에게 보여 줍니다. 다음은 더 이야기할 것입니다
  • TRACE: 시스템의 상세한 정보는 주로 개발자에게 사용되는데 일반적으로 온라인 시스템이라면 임시 출력이라고 생각할 수 있고 언제든지 스위치를 통해 닫을 수 있다.때때로 우리는 DEBUG와 TRACE를 구분하기 어렵다. 일반적인 상황에서 이미 개발 테스트가 끝난 시스템이라면 시스템에 로그 출력을 추가해야 한다. 그러면 TRACE 등급으로 설정해야 한다

  • 로그 시스템


    좋은 로그 시스템에는 많은 기존 해결 방안이 있다. 좋은 로그 시스템은 로그 시스템의 기초 기능(빠른 기록 수집 로그, 서로 다른 등급에 따라 로그를 출력하고 성능이 높음)을 포함할 뿐만 아니라 빠른 분석 로그(분석/패턴 일치/관련 분석)와 마지막 모니터링과 경보 기능 로그 시스템은 크게 세 가지로 나눌 수 있다. 그것이 바로 집중 로그 시스템/분포식 로그 시스템/개원 로그 시스템이다.

    분산 로그 시스템


    분산 로그 PPT

    개원 일지


    소스 오픈 로그 시스템 비교

    Scribe


    facebook의 소스 오픈 로그 시스템은 분포식 파일 시스템을 저장할 수 있고 데이터베이스를 저장할 수 있는 비교적 큰 장점은 용착성이 좋다는 것이다. 데이터베이스가 끊어지면 로컬에 저장할 수 있는thriftclient 프로필 초기 엿보기

    ChukWa


    Yahoo가 개발한 Hadoop의 로그 분석 시스템

    Flume


    로그 수집 시스템

    Kafka


    Linkin의 소스 정보 시스템

    kids: 로그 시스템


    키즈가 어떤 걸 만들고 싶은지.
  • 분포식 수집
  • 중앙 집중식 스토리지
  • 실시간 구독
  • 잃어버리지 않는다(또는 최대한 잃어버리지 않는다)
  • 응용 성능에 대한 영향은 최대한 적다
  • 좋은 웹페이지 즐겨찾기