728x90

카카오테크 부트캠프/프로젝트 14

서버 모니터링을 위한 Prometheus, Grafana, Node Exporter 설치

구성 요소역할 설명Node Exporter시스템(CPU, 메모리, 디스크, 네트워크 등)의 로컬 리소스 사용량을 메트릭으로 수집하여 노출함 (기본 포트: 9100)Prometheus다양한 Exporter(Node Exporter 포함)의 메트릭 데이터를 **정기적으로 수집(scraping)**하고 저장하는 시간 시계열 DB 역할 수행 (기본 포트: 9090)GrafanaPrometheus에 저장된 메트릭 데이터를 시각화 대시보드로 표시함 (기본 포트: 3000) 프로메테우스 설치# 설치cd /tmpwget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gztar xvf p..

웹서비스 부하 테스트

부하 테스트 시나리오 구성시나리오 1: 10초간 150명의 사용자가 해설 요청API: GET /api/problems/:id/solution목적: 동시에 많은 사용자가 특정 문제의 해설을 요청할 때, 응답 지연이나 병목이 있는지 확인설정 방식: Classic Thread Group으로 num_threads=150, ramp_time=10 설정 → 적절함개선 제안:실제 요청에 :id 대신 특정 문제 ID (예: /api/problems/123/solution)를 고정하거나, CSV Data Set Config를 통해 ID 목록을 랜덤 요청하도록 개선 가능 시나리오 2: 10초간 150명의 사용자가 로그인 요청API: (추가 필..

백엔드 서버에 오류가 떴을 때 디스코드로 알람 연동 자동화 기능 연결

1. 디스코드 채팅 채널 웹후크 생성웹후크 URL 복사 해서 application.yml 파일에 추가 🗂️ 디렉토리 구조수정해야 하는 파일 / 생성해야 하는 파일koco/├── .gradle/├── build/├── gradle/├── src/│ ├── main/│ │ ├── java/│ │ └── resources/│ │ ├── application.yml│ │ ├── console-appender.xml│ │ ├── discord-error-appender.xml│ │ └── logback-spring.xml│ └── test/├── .gitattributes├── .gitignore├── build.gradle├── g..

데이터 베이스 백업 파일 작성

db_backup.sh 코드#!/bin/bash# 1. 백업 설정DB_USER="user"DB_PASS="yourpassword"DB_NAME="db"# 2. 경로 설정BACKUP_DIR="/home/ubuntu/db-backup"LOG_FILE="/home/ubuntu/db-backup/cron_backup.log"DATE=$(date +%Y%m%d_%H%M%S)BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql"NOW=$(date "+%Y-%m-%d %H:%M:%S")# 3. 백업 디렉토리 생성mkdir -p "$BACKUP_DIR"# 4. 백업 시작echo "[${NOW}] 백업 시작: $BACKUP_FILE" >> "$LOG_FILE"mysqldump -u "..

수동 SQL 삽입시 발생한 트러블 슈팅

문제 1. 배포를 오늘 진행하기로 했지만 ai 담당자가 휴가로 인해 오늘 해설집을 추가를 못하고 배포를 해야하는 상황 발생. 따라서 오늘의 코딩 해설을 직접 sql 삽입하기로 진행했다. 하지만 기존에 들어가있던 해설 문제와 동일한 문제를 올려버리는 실수를 저질렀다. 기존에 설문을 진행했던 내용이 겹처 2가지 문제에 대해 모두 설문을 해야하지만 한가지 설문이 겹처 설문 데이터가 저장이 되지 않는 오류 가 발생하게 됨. 설문조사 테이블을 지우고 싶었지만, 건드리면 유저 정보를 건드려 엉킬 것 같기에 이를 해결하기 위해 문제 해설 테이블에 중복되지 않는 해설로 update 변경. 새로운 문제들로 구성됐기에 설문이 정상적으로 작동되야 했지만, 여전히 오류가 발생했다. 혹시나 하는 마음에 나머지 하나의 문제도 ..

React 프로젝트에 Google Analytics 4 연동하기

개요React 프로젝트에 Google Analytics 4(GA4)를 연동하여 사용자 행동을 추적하고 분석하는 방법을 소개합니다. 이 글에서는 Vite 기반의 React 프로젝트를 기준으로 설명하지만, 다른 React 프로젝트에서도 동일한 방식으로 적용할 수 있습니다.목표페이지뷰 자동 추적사용자 행동 데이터 수집마케팅 성과 측정트래픽 소스 파악구현 방법1. GA4 기본 스크립트 추가먼저 index.html 파일의 섹션에 GA4 스크립트를 추가합니다:2. 페이지뷰 추적을 위한 커스텀 훅 생성src/hooks/useGAPageView.ts 파일을 생성하여 페이지뷰 추적 로직을 구현합니다:import { useEffect } from 'react';import { useLocation } from 'reac..

데일리 스크럼 봇 생성기

1. discord 봇 생성https://discord.com/developers/applications 에 접속해 new application 선택bot tab을 누르고 다음과 같이 설정Server Members Intent, Message Content Intent를 허용.reset token을 눌러 토큰 발급 (복사해서 가지고 계셔야 합니다! 추후 사용 예정)oauth2 tab을 누르고 다음과 같이 설정권한(Scopes) → bot, applications.commands권한(Permissions) → Send Messages, Read Message History, Manage Threads, Send Messages in Threads발급받은 url로 채널에 봇 설치, 이후 봇이 활동할 채널 I..

EC2에서 크롬 자동 로그인 이후 데이터 크롤링 트러블 슈팅

로컬에서 백준 자동 로그인 이후 매일 새롭게 생성되는 코테 그룹의 문제를 가져오기 위한 시도 먼저 크롬과 크롬드라이버를 리눅스 버전에 맞게 설치한다.cd ~mkdir chrome && cd chrome# 1. Chrome 다운로드 및 압축 해제wget https://storage.googleapis.com/chrome-for-testing-public/132.0.6834.110/linux64/chrome-linux64.zipunzip chrome-linux64.zip# 2. 크롬드라이버 다운로드 및 압축 해제wget https://storage.googleapis.com/chrome-for-testing-public/132.0.6834.110/linux64/chromedriver-linux64.zipun..

백준 문제 데이터 크롤링 트러블슈팅

트러블 슈팅1. Solved.ac API를 통한 태그별 문제 목록 수집문제Solved.ac API 호출 시 한 번에 너무 많은 문제를 요청하거나, rate limit에 걸리는 경우가 있었음.해결API 문서를 참고하여 pagination 적용 (page, size 파라미터 사용)https://solvedac.github.io/unofficial-documentation/#/ sleep(1)을 넣어 요청 간 딜레이 설정X-RateLimit-Remaining 헤더를 참고하여 요청량 조절 가능하도록 로직 개선2. 백준 각 문제 페이지 크롤링 (문제 설명, 입출력 등)문제BeautifulSoup을 이용해 HTML 파싱 중 일부 문제 페이지에서 NoneType 오류 발생→ 특정 문제는 설명이나 예시가 비어있거나 구..

728x90