본문 바로가기
Sever/AWS

[AWS]EK Stack & Filebeat

by seeker00 2023. 9. 24.

EK (ElasticSearch / Kibana) & Filebeat

  • 로컬에서는 ELK + Filebeat로 세팅해서 테스트를 해보았는데, 아무래도 단순 로깅 작업에 logstash를 쓸 필요성이 그다지 없는 듯 하고 리소스(프리티어) 절약 차원에서 logstash는 구성에서 제외했다.
  • EK 는 AWS 오픈서치 프리티어로 간단히 구성했다.

Filebeat

  • 도커를 사용해서 구성했다.
    • 서버에서 바로 시스템을 설치하는 것이... 굉장히 부담스럽게 느껴진다.
    • 실제로 서버에 시스템 설치를 하다보면 환경설정이 꼬일 수도 있고, 부담스러운 작업은 맞는 듯. 그리고 도커가 그런 문제를 해소해주는 아주 훌륭한 역할을 수행하지 않나.
    • 그래서 도커를 이용해서 일단 실행해보고 테스트해보고 지우고 난리를...ㅎㅎ 여튼 아주 편리하다.
      • 도커 컴포즈 파일로 구성했다.
      • 볼륨 설정 잡는데 아주 편리하기 때문에...!

docker-compose.yml

 services: 
     filebeat: 
        container_name: filebeat 
        image: docker.elastic.co/beats/filebeat-oss:7.10.0 
        user: root 
        volumes: 
            - ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml # filebeat.yml 설정 파일 세팅 
            - /var/log/nginx:/var/log/nginx 
            - ../back/logs/spring.log.json:/var/log/spring/spring.log.json 
            - ./logs:/usr/share/filebeat/logs # filebeat 로그 가져오는 용도 
        command: ["--strict.perms=false"]
  • opensearch 버전에 맞추어 filebeat를 구성한다.
    • 프리티어 사용을 위해서 오픈서치는 구버전인 7.10.0으로 세팅했고, filebeat도 이를 따라간다.
      • -oss버전을 굳이 사용하지 않아도 실행엔 문제가 없는 듯 했다.
  • filebeat 로그파일은 /usr/share/filebeat/logs 이하 filebeat 파일로 생성된다.

filebeat.yml 파일

  • 이 파일은 권한 설정을 잘 해주어야 한다!
  • 도커 파일을 쓰는 경우엔 아래와 같이 작성하는 듯 했다.
    • 조금씩 다른 구성으로 파일을 작성하는데 아래와 같이 작업하면 되는 듯 하다. (테스트 해보지 않았다.)
      • 도커 컴포즈를 이용해 아래 파일로 이미지를 빌드하는 경우에는 여전히 에러가 해소가 되지 않아서 나는 도커 파일 없이 작업했다.
        # Dockerfile 
        FROM docker.elastic.co/beats/filebeat:7.10.0 
        COPY /config/filebeat.yml /usr/share/filebeat/filebeat.yml 
        USER root 
        RUN chmod go-w /usr/share/filebeat/filebeat.yml 
        RUN chown -R root /usr/share/filebeat

filebeat.yml

  • 로그 파일 위치를 세팅하고, 엘라스틱 서치로 전송하도록 구성했다.
    # ============================== Filebeat inputs =============================== 
    filebeat.inputs: 
    - type: log 
        id: api-log # API 로그 
        fields: 
            index_name: "api-log" 
            enabled: true 
        paths: - /var/log/spring/*.json 
        json.keys_under_root: true 
        json.overwrite_keys: true 
        json.add_error_key: true 
        json.expand_keys: true 
     - type: log 
         id: api-log # API 로그 
         fields: 
             index_name: "nginx-log" 
             enabled: true 
         paths: - /var/log/nginx/*.log 
    # ================================== Outputs =================================== 
    # ------------------------------ OpenSearch Output ------------------------------ 
    output.elasticsearch: 
     hosts: ["{대충 주소}.es.amazonaws.com:443"] # 443 포트로 연결 / 포트 안 넣어두면 자동으로 9200 포트로 전송하니 꼭 포트 정보도 적는다. 
     protocol: "https" 
     username: "{username}" 
     password: "{password}" 
     index: "{}" # 인덱스 설정이 없으면, filebeat-yyyymmdd 대충 이런 형태로 기본 설정된다. 
    # 
    setup.ilm.enabled: false 
    setup.pack.security.enabled: false 
    setup.xpack.graph.enabled: false 
    setup.xpack.watcher.enabled: false 
    setup.xpack.monitoring.enabled: false 
    setup.xpack.reporting.enabled: false
  • 아래 setup 관련해서 false로 지정을 해야 오픈서치와 잘 커넥션이 이루어진다.

키바나

  • 결과물 확인
    • 대강 아래와 같이 로그를 확인해볼 수 있다.
    • 로그 생성 로직은 더 수정할 예정

참고 문서

'Sever > AWS' 카테고리의 다른 글

[AWS]OpenSearch 프리티어 생성해보기  (0) 2023.09.24
[AWS]Elastic IP 주소 할당 + Route53 호스팅  (0) 2023.07.09