728x90

DevOps 47

[DevOps] Slack으로 서버 디스크 사용량 알림 받기

서버 관리 시 중요한 지표 중 하나가 디스크 사용량입니다. 이번 글에서는 간단한 Bash 스크립트를 이용해 디스크 사용량을 체크하고, Slack을 통해 실시간으로 알림을 받는 방법을 소개합니다.1. Slack에서 Incoming Webhook 설정Slack 워크스페이스에서 Slack API에 접속해 새로운 앱을 생성하거나 기존 앱을 선택합니다.'Incoming Webhooks' 기능을 활성화하고 새로운 Webhook URL을 생성합니다.생성된 Webhook URL은 다음과 같은 형태입니다.https://hooks.slack.com/services/TXXXXX/BXXXXX/XXXXXXXX이 URL은 추후 스크립트 작성 시 사용할 예정입니다.2. 디스크 사용량 체크 스크립트 작성스크립트를 /usr/local..

DevOps 2025.03.25

[K8S] Traefik을 이용한 경로 기반 라우팅 (Path-Based Routing)

개요Traefik은 Kubernetes에서 동적인 경로 기반 라우팅을 수행하는 경량의 Ingress Controller 및 Reverse Proxy입니다.Ingress Controller 없이도 IngressRoute와 Middleware를 조합하여 강력한 트래픽 관리가 가능합니다.Kubernetes에서 API Gateway 없이도 서비스별 라우팅을 간단하게 설정할 수 있는 점이 큰 장점입니다.1. Traefik 설치Traefik을 Kubernetes 클러스터에 설치하려면 Helm을 사용하는 것이 가장 간편합니다.Helm을 이용한 Traefik 설치helm repo add traefik https://traefik.github.io/chartshelm repo updatehelm install traef..

DevOps/K8S 2025.03.06

[Container]Podman 및 CRI-O의 오래된 컨테이너 자동 삭제 정책

컨테이너 기술의 발전으로 인해, 많은 기업과 개발자들이 Podman과 CRI-O를 사용하여 컨테이너를 관리하고 있습니다. 이 두 도구는 Docker와 유사한 기능을 제공하지만, 각기 다른 방식으로 컨테이너를 처리하고 관리합니다. 하지만 장기간 운영하면서 오래된 컨테이너들이 쌓이면 시스템 리소스가 낭비될 수 있습니다. 이를 방지하기 위해 오래된 컨테이너를 자동으로 삭제하는 정책을 설정하는 것이 중요합니다.1. Podman의 오래된 컨테이너 자동 삭제Podman은 Docker와 유사한 CLI(Command Line Interface)를 제공하며, rootless 방식으로 컨테이너를 실행할 수 있다는 장점이 있습니다. Podman은 컨테이너를 관리하는 데 있어 다양한 방법을 제공하며, 오래된 컨테이너를 자동으..

DevOps/Container 2025.03.05

로그 로테이트(Logrotate)

로그 로테이트(Logrotate)는 리눅스 시스템에서 로그 파일을 자동으로 관리해 주는 유틸리티입니다. 서버에서 생성되는 다양한 로그 파일을 주기적으로 압축, 삭제, 또는 백업하여 저장 공간을 절약하고 관리 효율성을 높여줍니다. 대부분의 리눅스 시스템에 기본적으로 설치되어 있으며, cron 작업으로 자동 실행되어 관리자의 개입 없이 로그 파일을 유지보수할 수 있습니다.로그 로테이트의 주요 기능로그 파일 주기 관리: 설정에 따라 매일, 매주, 매달 등의 주기로 로그 파일을 새로 생성합니다.백업 및 압축: 오래된 로그 파일을 gzip 등으로 압축해 저장 공간을 절약하고, 지정한 개수만큼만 보관합니다.자동 삭제: 설정된 개수를 초과하는 오래된 로그 파일은 자동으로 삭제해 불필요한 로그 파일이 누적되지 않도록 ..

DevOps 2024.11.12

[ElasticSearch] 클러스터와 노드

1. 엘라스틱서치 클러스터 개념클러스터 (Cluster)여러 개의 엘라스틱서치 인스턴스(노드)들이 모여서 하나의 클러스터를 구성합니다. 모든 노드는 클러스터 이름을 공유하며, 같은 클러스터 이름을 가진 노드들만이 클러스터의 일부로 간주됩니다.클러스터 ID 및 이름각 클러스터는 고유한 클러스터 ID를 가지며, 이름은 클러스터를 식별하기 위해 사용됩니다. 클러스터 이름은 설정 파일에서 정의할 수 있습니다 (elasticsearch.yml).2. 노드 유형엘라스틱서치 클러스터는 다양한 역할을 수행하는 여러 노드로 구성됩니다. 각각 하나의 역할만 할 수 있는 게 아니라 한 번에 여러 개의 역할을 할 수 있습니다.마스터 노드 (Master Node)클러스터의 상태를 관리하고 클러스터의 메타데이터(예: 인덱스, 노..

[ElasticSearch]모니터링: Prometheus와 X-Pack

Prometheus를 이용한 모니터링Prometheus는 오픈 소스 시계열 데이터베이스로, 메트릭 수집과 모니터링에 최적화된 도구입니다. Grafana와의 연동을 통해 시각화도 용이하게 할 수 있습니다. Elasticsearch 8과 통합하여 클러스터의 성능과 상태를 실시간으로 모니터링할 수 있습니다.Prometheus의 장점• 확장성: 대규모 클러스터에서도 성능 저하 없이 대량의 메트릭을 효율적으로 처리할 수 있습니다. • 경고 기능: Prometheus Alertmanager를 통해 다양한 조건의 경고를 설정하고 관리할 수 있습니다. • 강력한 시각화: Grafana와의 통합을 통해 고도화된 대시보드를 구축할 수 있습니다.Prometheus의 단점• 설치 및 설정 복잡성: Prometheus, Exp..

[ElasticSearch] 인덱스, 샤드, 세그먼트, 타입, 매핑

인덱스인덱스는 데이터를 저장하는 가장 큰 논리적 단위로, 각 인덱스는 샤드로 나누어져 저장됩니다. 인덱스는 관계형 데이터베이스의 테이블과 유사하게, 각 인덱스는 특정 유형의 데이터를 저장하며 여러 문서 (document)의 집합으로 이루어져 있습니다. 각 문서는 JSON 형식으로 저장됩니다.인덱스의 구조와 설정인덱스는 클러스터 내에서 유일해야 하며, 중복된 이름의 인덱스를 생성할 수 없습니다. 이는 데이터 관리와 검색의 효율성을 높이기 위한 것입니다.만일 nginx의 액세스 로그를 수집한다면 nginx-access-log-YYYY.MM.DD 식의 이름을 사용하는 것을 추천합니다.타입과거 엘라스틱서치에서는 하나의 인덱스에 여러 타입 (Type)을 정의할 수 있었습니다. 타입은 서로 다른 데이터 유형을 하나..

[K8S] 테인트와 톨러레이션

테인트(Taints)테인트는 특정 노드에 파드가 스케줄링되지 않도록 노드 자체에 부여하는 속성입니다. 테인트는 일반적인 파드가 해당 노드에 스케줄링되는 것을 방지합니다. 테인트는 다음과 같은 세 가지 속성으로 구성됩니다:Key: 테인트의 키를 지정합니다.Value: 테인트의 값을 지정합니다.Effect: 테인트가 파드 스케줄링에 미치는 영향을 정의합니다.Effect는 다음 중 하나일 수 있습니다:NoSchedule: 톨러레이션이 없는 파드는 해당 노드에 스케줄링되지 않습니다.PreferNoSchedule: 가능하면 해당 노드에 스케줄링하지 않지만, 불가피할 경우 스케줄링됩니다.NoExecute: 해당 노드에 이미 스케줄 된 파드는 즉시 퇴거되며, 톨러레이션이 없는 새로운 파드는 스케줄 되지 않습니다.톨러..

DevOps/K8S 2024.10.14

[K8S] StatefulSet

StatefulSet은 Kubernetes에서 상태가 있는 애플리케이션을 관리하기 위한 리소스이다. StatefulSet은 각 파드가 고유한 네트워크 ID와 영구적인 스토리지를 유지하도록 보장하며, 파드의 생성 및 삭제 순서를 관리한다. 이는 데이터베이스, 분산 파일 시스템, 캐시 시스템 등과 같은 애플리케이션에 매우 유용하다.주요 특징고유한 네트워크 ID: 각 파드는 고유한 DNS 이름을 가지며, 이는 재시작 후에도 유지된다. 예를 들어, StatefulSet 이름이 mysql이고 replicas가 3인 경우, 파드 이름은 mysql-0, mysql-1, mysql-2로 고정된다.고유한 영구 스토리지: 각 파드에 대해 고유한 PersistentVolumeClaim을 생성하여, 파드가 삭제되거나 재시작되..

DevOps/K8S 2024.10.10
728x90