EC2의 상태를 감시해 경보가 울렸을 때 Slack을 통해 알람을 받고 싶어서 모니터링을 구축하게 되었다. 이 방법을 통해 알람을 구축하면 AWS에서 제공하는 여러 지표들을 통해서 EC2의 상태가 불안정할 때 Slack을 통해 알람을 받을 수 있고, 그에 따라 적절한 조치를 취할 수 있게 된다. Slack이랑 웹훅 연동 Slack의 앱추가에서 incoming webhook을 검색해 추가 클릭 Slack에 추가를 누름 채널을 선택한 후에 수신 웹후크 통합 앱 추가 버튼을 클릭하면 채널에 추가됨 메시지가 뜸과 동시에 http 요청을 보낼 slack URL이 생성됨. 추가된 URL을 메모장에 잘 복사해둔다. AWS SNS로 주제 생성 주제 생성 클릭 표준 클릭, 이름을 입력하고 주제 생성 CloudWatch로..
분류 전체보기
docker-compose.yml stdin_open, tty: true 옵션을 넣어서 서버에 접속해서 스크립트를 실행할 수 있게 만듬 version: "3.9" services: recommend: container_name: recommend build: context: . volumes: - ./:/var/www # ports: # - 4000:4000 environment: - TZ=Asia/Seoul stdin_open: true tty: true Dockerfile requirements.txt 를 이용해서 디펜던시 관리 FROM python:3.9.15 WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -..
자바 설치 현재 사용하는 자바 버전은 19이므로 JDK 19.0.2 설치, 각자 사용하는 자바 버전을 찾아서 설치하면 됨. 라이센스 문제로 OpenJDK를 설치 링크: https://jdk.java.net/19/ 위 링크에서 각 OS에 맞는 버전 다운로드(윈도우는 Windows/x64) 자바 환경 변수 설정 시스템 변수에 JAVA_HOME을 아래와 같이 설정 폴더가 없으면 생성 시스템 변수 Path에 아래 클릭된 것 처럼 명령어도 등록해주기 CMD에 java --version 을 입력해 자바가 설치 되었는지 확인 항상 그렇듯 컴이 잘 못 알아 먹으므로 새로운 언어를 깔면 컴을 껐다 켜주기 VSCODE 익스텐션 설정 아 익스텐션 중 spring boot 와 Docker 등 필요한 익스텐션만 설치 Debug..
string 필드에서 원하는 값만 가져와서 다른 필드로 매핑하고 싶은 일이 생겼다. 그래서 elasticsearch의 runtime과 painless 스크립트를 이용해 string에서 원하는 값만 추출해서 다른 필드로 뺴는 방법을 이용했다. 로그스태시에서는 grok이라는 필터 플러그인을 지원하는데 painless 스크립트에서 또한 grok을 사용할 수 있다. kibana의 검색창에 dev라 검색하면 아래와 같이 dev tools가 뜨니 클릭해서 dev tools를 이용해 진행하자. dev tools에서 ip, uri, username을 아래와 같이 추출하였다. PUT log/_mapping { "runtime": { "ip": { "type": "keyword", "script": { "source": ..
Kafka Sink Connector + Elasticsearch + Kibana를 Docker-compose를 이용해 Xpack이 적용된 형태로 구축했다. 아래 스크립트는 카프카 싱크 커넥터를 설치하는 스크립트이다. #!/bin/bash FILE="./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3" curl -X DELETE http://localhost:8083/connectors/elasticsearch-sink if [ ! -e $FILE ]; then curl -o ./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3.zip https://d1i4a15mxbxib1..
elasticsearch는 ALTER와 같은 필드(컬럼)을 삭제하는 기능을 제공하지 않는다. 그렇기 때문에 사용하지 않는 필드는 비활성화 시키고 사용하는데 이것들이 남아서 매핑이 더러워 보이기 때문에 보기에 좋지 않다. 또한 필드에 계속 데이터가 들어가면 낭비되는 데이터가 쌓일 수 있다. POST /_reindex { "source": { "index": "log" }, "dest": { "index": "tmp" } } POST /tmp/_update_by_query { "script": { "source": "ctx._source.remove(\"field_name1\")" } } POST /tmp/_update_by_query { "script": { "source": "ctx._source.rem..