크롤링, 모니터링 도구 조사

·2024년 8월 8일

just공부

목록 보기
1/47

최근 공부하고 있는 프로젝트와 관련하여 알게 된 기술 스택에 대해 간단하게 적어보고자 한다.

Selenium

chromedriver를 제어하거나 원하는 정보를 얻기 위해 사용되며,
크롤링에 사용되는 모듈로, 2세대 크롤링 모듈이라고 한다.
파이썬에 최적화되어 많이 사용된다고 함.
크롤링을 하다보면 입력하거나 특정 버튼을 눌러야 하는 액션이 필요할 때 컴퓨터가 대신 할 수 있도록 해주는 패키지

설치 방법

pip install selenium

패키지 사용을 위해서는 추가적인 모듈 import 가 필요

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 페이지 로딩 시 필요
import time

참고
https://wikidocs.net/137914
https://ppoble.tistory.com/26

Puppeteer

3세대 크롤링 모듈인 Puppeteer를 Selenium과 함께 GPT가 추천해주어서 찾아 보았다.
구글 크롬 개발팀에서 개발한 NodeJS 라이브러리로, Selenium이 못하는 많은 기능이 포함되어 있다.
기본적으로 Headless(표시되는 UI가 없음)에서 실행되지만 Headfull 브라우저에서 실행되도록 구성된다.
특징으로는 아래와 같다 (https://pptr.dev/guides/what-is-puppeteer 참고)

  • 결과 export 기능, UI 테스트, 키보드 입력 자동화
  • 최신 Javascript와 브라우저 기능을 사용하여 자동화된 테스트 환경
  • 사이트의 타임라인 추적 캡쳐 기능
  • Chrome 확장 프로그램 테스트
  • 페이지의 스크린샷과 PDF 생성
  • SPA(단일 페이지 애플리케이션)를 크롤링하고 사전 랜더링된 콘텐츠 생성

설치 방법

npm i puppeteer

사용 할 때는 아래와 같다.
두 가지 패키지를 제시하는데
puppeteer의 경우, 브라우저 자동화를 위한 제품으로, 설치 시 Chrome 버전을 다운로드 한 후 puppeteer-core를 사용하여 이 브라우저를 제어한다.

puppeteer-core의 경우, DevTools 프로토콜을 지원하는 모든 것을 제어하는 데에 도움을 주는 라이브러리로, 전적으로 프로그램 인터페이스를 통해 제어되며, 기본 설정이 적용되지 않으며 설치 시 Chrome을 다운로드하지 않는다.

원격 브라우저에 연결하거나 브라우저를 직접 관리하는 경우 puppeteer-core를 사용해야 하며, 브라우저를 직접 관리하는 경우, puppeteer.launch를 호출할 때 명시적으로 executablePath를 지정해야 한다.
puppeteer-core를 사용할 때는 import 구문을 다음과 같이 변경해야 한다.

import puppeteer from 'puppeteer-core';

이제는 위의 내용과 결이 다른 모니터링을 위한 툴들을 정리하고자 한다.

Grafana 오픈소스

실시간 모니터링을 위한 도구를 찾아보다가 알게 되었다.
시각화 및 분석을 위한 오픈 소스 소프트웨어로, 다양한 위치에 저장된 metrics, 로그, 추적 데이터를 쿼리하고 시각화하며 경고를 설정하고 탐색 가능하도록 해준다. 이를 통해 시계열 데이터베이스(TSDB) 데이터를 유용한 그래프와 시각화로 변환하는 도구를 제공한다.

Grafana의 공식 홈페이지인 https://grafana.com/docs/grafana/latest/ 에 들어가면 더 많은 도구를 확인 가능하다.
deb 패키지 설치 방법

# Ubuntu 및 Debian
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/oss/release/grafana_11.1.3_amd64.deb
sudo dpkg -i grafana_11.1.3_amd64.deb

참고
https://medium.com/finda-tech/grafana%EB%9E%80-f3c7c1551c38
공홈은 위에 언급되어 있습니다.

Prometheus

Grafana와 함께 언급되어 간단하게 서술해보도록 하겠습니다 ..
Soundcloud에서 구축한 오픈소스 시스템 모니터링 툴이다.
독립형 오픈소스 프로젝트로 독립적으로 유지 관리된다.
Grafana와 마찬가지로 측정 항목을 시계열 데이터로 수집하고 저장한다.
측정 항목 정보는 기록된 타임 스탬프와 함께 저장되며, 레이블이라고 하는 선택적 키-값 쌍이 함께 저장된다.
Prometheus의 구성 요소는 Go 언어로 작성되어 있으며 정적 바이너리로 쉽게 빌드하고 배포할 수 있게 해준다.
특징

  • 다차원 데이터 모델 : 매트릭 이름과 키/값 쌍으로 식별되는 시계열 데이터를 다룸
  • PromQL : 다차원성을 활용 가능한 쿼리 언어 사용
  • 분산 저장소에 의존하지 않음 : 자율적으로 작동하는 단일 서버 노드
  • HTTP를 통한 Pull 모델 : 시계열 데이터 수집은 HTTP를 통해 Pull 모델로 이뤄짐
  • 게이트웨이를 통한 Push 모델 지원 : 푸시 방식으로 시계열 데이터를 전송하는 것이 가능
  • 타겟은 서비스 디스커버리나 정적 구성을 통해 발견됨
  • 다양한 그래프 및 대시보드 모드 지원

다운로드 페이지를 가면 도커 이미지를 제공해준다.

https://prometheus.io/download/#prometheus
자세하게 설명해주시는 분의 블로그 남깁니다
https://medium.com/finda-tech/prometheus%EB%9E%80-cf52c9a8785f

다양한 기술 블로그를 보니 Prometheus와 Grafana를 동시에 연동하여 사용하는 듯 했다.
자세한 방법은 이후에 추가해보도록 .. 하겠습니다. ㅎㅎ

profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글