LoggerModule

• log 파일의 경로를 설정해준다.

기존 설정 값

 <bean id="loggerModule"
   class="org.archive.crawler.reporting.CrawlerLoggerModule">
  <!-- <property name="path" value="${launchId}/logs" /> -->
  <!-- <property name="crawlLogPath" value="crawl.log" /> -->
  <!-- <property name="alertsLogPath" value="alerts.log" /> -->
  <!-- <property name="progressLogPath" value="progress-statistics.log" /> -->
  <!-- <property name="uriErrorsLogPath" value="uri-errors.log" /> -->
  <!-- <property name="runtimeErrorsLogPath" value="runtime-errors.log" /> -->
  <!-- <property name="nonfatalErrorsLogPath" value="nonfatal-errors.log" /> -->
  <!-- <property name="logExtraInfo" value="false" /> -->
 </bean>


• [property에 대한 설명]

1.path : 로그파일의 root 경로

2.crawlLogPath : Heritrix가 fetch 하는 각각의 URI에 대한 로그 파일 경로

3.alertsLogPath : 크롤링할 때 발생한 문제점들에 대한 alert에 대한 로그 파일 경로

4.progressLogPath : StatisticsTracker bean에 의해 쓰여지는 log. 크롤링에 대한 상세 진척 정보들에 대한 로그 파일 경로

5.uriErrorsLogPath : URI Fetch 할 때의 에러 로그 파일 경로

6.runtimeErrorsLogPath : 크롤링 중 예상하지 못한 예외 혹은 에러에 대한 로그 파일 경로

7.nonfatalErrorsLogPath : 크롤링 중 발생한, 심각하지 않은 에러에 대한 로그 파일 경로

8.logExtraInfo : 이 값이 true 이면 crawl.log 파일 마지막 필드값에 extra info 필드가 추가 된다. json 형식으로 타깃이 되는 ARC/WARC 파일에서 각 URI에 대한 내용이 어느 부분에 쓰여져 있는지에 대한 정보를 담고 있다.


Posted by Righ
,

StatisticsTracker

• 통계 및 리포팅 기능을 수행한다.
각각의 스냅샷 마다 'progress-statistics.log' file에 해당 정보가 남는다.

기존 설정 값
<bean id="statisticsTracker" class="org.archive.crawler.reporting.StatisticsTracker" autowire="byName">
  <!-- <property name="reports">
        <list>
         <bean id="crawlSummaryReport" class="org.archive.crawler.reporting.CrawlSummaryReport" />
         <bean id="seedsReport" class="org.archive.crawler.reporting.SeedsReport" />
         <bean id="hostsReport" class="org.archive.crawler.reporting.HostsReport" />
         <bean id="sourceTagsReport" class="org.archive.crawler.reporting.SourceTagsReport" />
         <bean id="mimetypesReport" class="org.archive.crawler.reporting.MimetypesReport" />
         <bean id="responseCodeReport" class="org.archive.crawler.reporting.ResponseCodeReport" />
         <bean id="processorsReport" class="org.archive.crawler.reporting.ProcessorsReport" />
         <bean id="frontierSummaryReport" class="org.archive.crawler.reporting.FrontierSummaryReport" />
         <bean id="frontierNonemptyReport" class="org.archive.crawler.reporting.FrontierNonemptyReport" />
         <bean id="toeThreadsReport" class="org.archive.crawler.reporting.ToeThreadsReport" />
        </list>
       </property> -->
  <!-- <property name="reportsDir" value="${launchId}/reports" /> -->
  <!-- <property name="liveHostReportSize" value="20" /> -->
  <!-- <property name="intervalSeconds" value="20" /> -->
  <!-- <property name="keepSnapshotsCount" value="5" /> -->
 </bean>
•[property에 대한 설명]
1.reports : reporting 할 목록을 적어준다. 각 리포트 마다 관리하는 bean이 다르다.     1.CrawlSummaryReport : 전반적인 크롤 사이즈에 대한 요약
(ex)
crawl name: basic
crawl status: Finished
duration: 15s8ms

seeds crawled: 2
seeds uncrawled: 0

hosts visited: 11

URIs processed: 81
URI successes: 81
URI failures: 0
URI disregards: 0

novel URIs: 81

total crawled bytes: 813450 (794 KiB)
novel crawled bytes: 813450 (794 KiB)

URIs/sec: 5.4
KB/sec: 52

2.SeedsReport : 각 seed들에 대한 결과
[code] [status] [seed] [redirect]

3.HostsReport : 각 host에 의한 기록들
[#urls] [#bytes] [host] [#robots] [#remaining] [#novel-urls] [#novel-bytes] [#dup-by-hash-urls] [#dup-by-hash-bytes] [#not-modified-urls] [#not-modified-bytes]

4.SourceTagsReport : 각 host의 source tag들에 대한 기록을 담는다.(대개의 경우 seed임)
[source] [host] [#urls]


5.MimetypesReport : MIME 타입에 대한 기록들
[#urls] [#bytes] [mime-types]


6.ResponseCodeReport : response/disposition code 당 발견된 url 개수
[#urls] [rescode]

7.ProcessorsReport : CrawlController에 있는 각 processor들이 대표하는 class들과, 자신들의 목적에 부합하는 결과를 남긴다.
(ex)
CandidateChain - Processors report - 201608050647
  Number of Processors: 2
Processor: org.archive.crawler.prefetch.CandidateScoper
Processor: org.archive.crawler.prefetch.FrontierPreparer
FetchChain - Processors report - 201608050647
  Number of Processors: 9
Processor: org.archive.crawler.prefetch.Preselector
Processor: org.archive.crawler.prefetch.PreconditionEnforcer
Processor: org.archive.modules.fetcher.FetchDNS
Processor: org.archive.modules.fetcher.FetchHTTP
  Function:          Fetch HTTP URIs
  CrawlURIs handled: 71
  Recovery retries:   0
Processor: org.archive.modules.extractor.ExtractorHTTP
  4 links from 71 CrawlURIs
Processor: org.archive.modules.extractor.ExtractorHTML
  1063 links from 26 CrawlURIs
Processor: org.archive.modules.extractor.ExtractorCSS
  15 links from 9 CrawlURIs
Processor: org.archive.modules.extractor.ExtractorJS
  7 links from 8 CrawlURIs
Processor: org.archive.modules.extractor.ExtractorSWF
  0 links from 0 CrawlURIs
DispositionChain - Processors report - 201608050647
  Number of Processors: 3
Processor: org.archive.modules.writer.WARCWriterProcessor
  Function:          Writes WARCs
  Total CrawlURIs:   81
  Revisit records:   0
  Crawled content bytes (including http headers): 813450 (794 KiB)
  Total uncompressed bytes (including all warc records): 994111 (971 KiB)
  Total size on disk (compressed): 363358 (355 KiB)
Processor: org.archive.crawler.postprocessor.CandidatesProcessor
Processor: org.archive.crawler.postprocessor.DispositionProcessor

8.FrontierSummaryReport : 크롤링 중간에 보통 확인하는 파일로, 각 queue의 종류 별 상황을 요약해서 보여준다.
(ex)
Frontier report - 201608050647
 Job being crawled: basic

 -----===== STATS =====-----
 Discovered:    81
 Queued:        0
 Finished:      81
  Successfully: 81
  Failed:       0
  Disregarded:  0

 -----===== QUEUES =====-----
 Already included size:     81
               pending:     0

 All class queues map size: 11
             Active queues: 0
                    In-process: 0
                         Ready: 0
                       Snoozed: 0
           Inactive queues: 0 (p3: 0)
            Retired queues: 0
          Exhausted queues: 11

             Last state: EMPTY
 -----===== MANAGER THREAD =====-----
Java Thread State: RUNNABLE
Blocked/Waiting On: NONE
    java.lang.Thread.getStackTrace(Thread.java:1479)
    org.archive.crawler.framework.ToeThread.reportThread(ToeThread.java:484)
    org.archive.crawler.frontier.WorkQueueFrontier.reportTo(WorkQueueFrontier.java:1304)
    org.archive.crawler.reporting.FrontierSummaryReport.write(FrontierSummaryReport.java:39)
    org.archive.crawler.reporting.StatisticsTracker.writeReportFile(StatisticsTracker.java:910)
    org.archive.crawler.reporting.StatisticsTracker.dumpReports(StatisticsTracker.java:938)
    org.archive.crawler.reporting.StatisticsTracker.stop(StatisticsTracker.java:342)
    org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:236)
    org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:213)
    org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:213)
    org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:213)
    org.springframework.context.support.DefaultLifecycleProcessor.access$2(DefaultLifecycleProcessor.java:206)
    org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:352)
.
.
.
 -----===== 11 LONGEST QUEUES =====-----
LONGEST#0:
:
:

LONGEST#1:
:
:

 -----===== IN-PROCESS QUEUES =====-----

 -----===== READY QUEUES =====-----

 -----===== SNOOZED QUEUES =====-----

 -----===== INACTIVE QUEUES =====-----

 -----===== RETIRED QUEUES =====-----

9.FrontierNonemptyReport : 보통 크롤링 마지막에 덤핑되는 파일로 empty 상태가 아닌 frontier queue에 대한 정보를 담는다.

10.ToeThreadsReport : toe thread의 call-stack에 대한 리포트

2.reportsDir : 리포트를 저장할 디렉토리

3.liveHostReportSize : 현재 진행중인 host에 대한 리포트를 남기기 위하여 쓰는 stack 포인터를 위한 변수이다.

4.intervalSeconds : 진행 정보를 남길 시에 interval 값

5.keepSnalshotsCount : 통계를 내기 위한 샘플 스냅샷 개수 설정.



Posted by Righ
,

DiskSpaceMonitor

  • 특정 path의 disk 공간이 최소 임계값 아래로 떨어지면 크롤링을 중단하게 끔, 디스크 공간을 모니터링 하는 모듈
    path가 네트워크를 통해 연결된 저장공간이라면(network attached storage) 종종 공간이 남아있더라도 잘못 판단하는 경우가 있다.

기존 설정 값


 <bean id="diskSpaceMonitor" class="org.archive.crawler.monitor.DiskSpaceMonitor">

   <property name="pauseThresholdMiB" value="500" />

   <property name="monitorConfigPaths" value="true" />

   <property name="monitorPaths">

     <list>

       <value>PATH</value>

     </list>

   </property>

 </bean>

  • [property에 대한 설명]
    1. pauseThresholdMiB : 모니터링 중인 path에 남아있어야 하는 최소 공간을 설정해준다.
    2. monitorConfigPaths : true인 경우 Heritrix의 모든 설정 path경로들을 포함하여 모니터링한다.
    3. monitorPaths : 모니터링할 경로를 적어준다.


Posted by Righ
,

CheckpointService

  • checkpoint에 관련한 사항을 관리하는 모듈이다.

기존 설정 값

 <bean id="checkpointService" 
   class="org.archive.crawler.framework.CheckpointService">
  <!-- <property name="checkpointIntervalMinutes" value="-1"/> -->
  <!-- <property name="checkpointsDir" value="checkpoints"/> -->
  <!-- <property name="forgetAllButLatest" value="true"/> -->
 </bean>
  • [property에 대한 설명]
    1. checkpointIntervalMinutes : 자동으로 checkpoint를 생성하도록 할 때 그 텀을 설정한다. '-1'은 자동으로 checkpoint를 생성하지 않겠다는 뜻이다.
    2. checkpointsDir : checkpoint 정보를 저장할 디렉토리 설정
    3. forgetAllButLatest : true 시에 오직 가장 최근의 checkpoint만 저장한다.


Posted by Righ
,

CrawlLimiter

  • 이곳에 설정된 제한 값들에 도달하면 크롤링을 중단한다.

기존 설정 값

 <bean id="crawlLimiter" class="org.archive.crawler.framework.CrawlLimitEnforcer">
       <property name="maxBytesDownload" value="0" />       
       <property name="maxDocumentsDownload" value="0" /> <property name="maxTimeSeconds" value="0" />
</bean>
  • [property에 대한 설명]
    1. maxBytesDownload : 총 다운로드한 byte가 이 값을 초과하면 크롤링이 중단 된다.
    2. maxDocumentsDownload : 총 다운로드한 문서의 개수가 이 값을 초과 하면 크롤링이 중단 된다.
    3. maxTimeSeconds : 총 크롤링한 시간이 이 값을 초과 하면 크롤링이 중단 된다.


Posted by Righ
,