본문 바로가기

분류 전체보기50

[Kafka/Flink] CDC 복구 스크립트 데이터의 정합성의 문제, CDC 관련하여 빠른 대응 및 복구가 필요한 경우를 대비하여 start, stop 등의 자동화 스크립트를 구성하였다. ▷ 스크립트 더보기#!/bin/bash# 초기화 수정본# 프로젝트 루트 디렉토리 설정 (스크립트가 있는 디렉토리)PROJECT_ROOT="$(cd "$(dirname "$0")" && pwd)"# 로그 파일 설정LOG_DIR="${JENKINS_HOME}/schedule-flink/logs"LOG_FILE="${LOG_DIR}/flink_connector_manager.log"# 서버 구분을 위한 환경 변수 (R, B, 또는 S1)SERVER_TYPE=${SERVER_TYPE:-"release"} # 기본값은 R 서버JENKINS_USER=${JENKINS_US.. 2025. 6. 10.
[Kafka] Source connect API 민감 정보 숨기기! https://docs.confluent.io/platform/7.1/connect/security.html Kafka Connect Security Basics | Confluent DocumentationYou can use the ConfigProvider class interface to prevent secrets from appearing in cleartext in connector configurations. The ConfigProvider class interface allows you to use variables in your worker configuration that are dynamically resolved upon startudocs.confluent.io 민감 정보를 파.. 2025. 6. 4.
[Kafka] Message Size 이슈 개선 https://dev-junhee.tistory.com/90 [Kafka] Message size 제한 이슈 대응기connector 요청에서 에러가 발생했습니다.{"name":"connector","connector":{"state":"RUNNING","worker_id":"ip:port"},"tasks":[{"id":0,"state":"FAILED","worker_id":"ip:port","trace":"org.apache.kafka.connect.errors.ConnectException: Unrecoverable edev-junhee.tistory.com 위 글에서 이어지며, 트러블 슈팅에 대한 개선 포인트를 발견하고 개선 방식에 대해 설명하려 합니다. 다방면에서 CDC를 도입하여 사용하고 있으나,.. 2025. 3. 13.
[K8S] Threshold & Garbage Collect 서비스 운영 중 Node Disk 사용량이 과도하다는 알림을 받게 되었고, 모니터링 시스템을 통해 디스크 점유율 지표를 확인하였다. 디스크 사용량이 93% > 31% 로 떨어진 것을 확인하였고, 약 62G가 확보된 것을 확인하게 되었다. 과도한 디스크 정리가 발생하였다고 판단하였고, 궁금증을 해소하기 위해 노드에 접근하여 확인을 진행하였고,원인 분석을 통해 다음과 같은 예상을 할 수 있었다.큰 이미지 사이즈로 인해 디스크 사용량이 증가하고, 디스크 사용 임계를 넘어서면서 GC 동작으로 인해 디스크 정리가 이루어진 것이 아닐까?디스크 사용량이 증가한 원인으로 파악되는 이미지를 확인하였고, 무려 3.4기가의 이미지였다. jounalctl을 통해 system 서비스 로그를 확인하였고 다음과 같았다.journa.. 2025. 3. 9.
로그 모니터링 시스템 개발기 예외 및 오류에 대한 Error 레벨 로그를 stderr 와 stdout 으로 출력하면, Promtail이 이를 수집하여 Loki로 전달하고 로그를 관리합니다. 이후, 에러 로그 모니터링 기능을 통해 해당 에러를 관리하며, 알림을 발송하는 시스템이 구축하였습니다. 로그 구성이와 같은 프로세스를 수행하기 위해서는 일정한 포맷과 규칙에 맞춰 로그를 출력해야 합니다. 화면 구성을 위한 값에 해당하는 키는 아래와 같습니다.  포맷위 화면을 구성하기 위해 로그 출력 데이터 포맷은 다음 같습니다. (순서 무관)[apm_check_error]:%s;[apm_stack_trace]:%s;[apm_key]:%s;[apm_error_point]:%s;%s 는 원본 값에서 “\n” → “\t” , “\r” → ““ 으로 치.. 2025. 2. 13.
[CSAP] NGINX Header Hide 웹 서버로 nginx를 사용할 때, 기본 설정 상태에서는 응답 헤더에 nginx의 버전 정보가 포함됩니다. 이러한 정보는 악의적인 사용자에게 서버의 버전을 알리게 되어, 특정 버전에 존재하는 보안 취약점을 이용한 공격 대상으로 지정될 수 있습니다. 따라서, nginx의 버전 정보를 숨기는 것은 보안상의 권장 사항입니다.https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens Module ngx_http_core_moduleModule ngx_http_core_module Directives Syntax: absolute_redirect on | off; Default: absolute_redirect on; Context: http, .. 2025. 1. 31.
[Locust] 대시보드 커스텀 (feat. websocket 부하테스트) AI 솔루션의 한 종류인 speech to text (stt) 의 경우 websocket을 통해 응답을 주고 받는 구조로 구성되어 있었다.대시보드가 구성되지 않는 현상이 발생하였고, 직접 구성하는 방법에 대해 공유해 보려한다. 문제 현상  • 파일 사이즈가 1mb이상 넘어가면 수신 측(stt) payload가 크다는 오류 발생 • chunk로 분류하면 utf-8 디코딩 불가하다는 오류 발생 • websocket 수신을 정의하지 않아 오류 발생 (영향은 없음) • 파일 자체를 보내 (file, stream, chunk 등) 이슈 발생 -> text로 decode하여 전송으로 해결• 오류는 잡았으나, dashboard가 나오지 않는 현상 발생 • event에 데이터를 직접 삽입하여 dashboard 구성 h.. 2025. 1. 31.
[K8S] Pod Health Check (feat. 부하테스트) Readiness ProbeAPP 구동 순간에 트래픽 실패를 막기 위한 장치Sometimes, applications are temporarily unable to serve traffic. For example, an application might need to load large data or configuration files during startup, or depend on external services after startup (K8S Document)Container 는 Running 이지만 APP 이 Running 이 아닐 수도 있다 (Booting 같은 경우)Probe Fail 시 Service 의 Endpoint 에서 제거 (사용자가 해당 Pod로 연결 X) Liveness Prob.. 2025. 1. 31.
[Rclone] 파일 동기화 시스템 구축 중앙 시스템의 데이터를 주변 시스템에서 가공하여 서비스하는 구조를 가지고 있었고, 이를 위해 파일 데이터에 대한 동기화가 필요하였다. 이를 처리하기 위해 AWS CLI 를 활용하였고, 처리 속도의 한계점을 발견하고 Rclone을 활용하여 구축했던 과정을 기술하였다.  AWS-CLI CUSTOMIZATIONs3 = max_concurrent_requests = 100 max_queue_size = 10000 multipart_threshold = 64MB multipart_chunksize = 128MB 파일 사이즈는 작으나 파일 개수가 무수히 많고, Remote 와 Local 의 비교 시간이 오래 걸렸다.AWS-CLI CUSTOMIZATION 은 Upload, Download 의 속.. 2025. 1. 31.
[Kafka] CDC 인프라 구축 (feat. ksql) kafka의 경우 cloud data streaming service를 이용하였다. Apache Kafka를 설치하고 설정하여 클러스터 형태로 제공해 주고, CMAK을 이용하여 클러스터 토픽 생성 및 변경 등 kafka 클러스터 관리 기능을 제공한다.가이드를 베이스로 커스텀하여 구성하였다.https://guide-gov.ncloud-docs.com/docs/ko/cdss-cdssoverview설정한 브로커 수량만큼 서버가 생기고 (기본 3개), 생성 된 서버는 Target Group에서 가시적으로 확인 할 수 있다. Broker ACG브로커에 접근이 가능하도록 다음과 같이 브로커 포트에 대해 ACG 허용해 주었다.아래는 적용한 ACG 목록이다.[ K8S node ] Source Connector (Deb.. 2025. 1. 18.
[Kafka] CDC 초기화 Script 개발 환경에 붙어 여러 테스트를 진행하며, connector가 kafka의 connector의 설정 정보를 포함한 connect-* topic을 읽어 올 수 없어 이슈가 자주 발생하여 문의에 대한 대응이 어려웠고 자동 초기화 기능을 구성하여 제공하였다. reset.sh> 카프카 토픽, 컨슈머 제거 스크립트#!/bin/bash$HOME/mysql-connector/stg/bin/scale.sh 0set -eNAMESPACE="infra"LABEL="app=stg-mysql-source-connector"KAFKA_BROKERS="10.105.90.26:9092,10.105.90.27:9092,10.105.90.33:9092"DATE=$(date +'%Y-%m-%d')LOG_DIR="/var/lib/jenk.. 2025. 1. 18.
[Kafka] Message size 제한 이슈 대응기 connector 요청에서 에러가 발생했습니다.{"name":"connector","connector":{"state":"RUNNING","worker_id":"ip:port"},"tasks":[{"id":0,"state":"FAILED","worker_id":"ip:port","trace":"org.apache.kafka.connect.errors.ConnectException: Unrecoverable exception from producer send callback\n\tat org.apache.kafka.connect.runtime.WorkerSourceTask.maybeThrowProducerSendException(WorkerSourceTask.java:290)\n\tat org.apache.. 2025. 1. 18.