{
    "componentChunkName": "component---src-templates-blog-template-js",
    "path": "/elastic-intro/",
    "result": {"data":{"cur":{"id":"f5b461ae-e59d-5ffe-b13b-71f1e54f2e23","html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 496px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 21.666666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAtElEQVQY06WPwYqCUABF/bz5ob4iEU1bCqJLJ5qBIchCw0U1vHCj6EIY0SkI3NaqfCd6v+CFuzlcDlwNKeHYwqqE/IJkXDQpJV/LHdPZD9/rUsHPxYIo2tB1HXme43keVVXRNA1JklDXtWoYhhRFQdu2pGlK3/dv4ZOP7T+Tk484z5XwcNirsa7rxHGM67pYloXjOIoFQYAQAt/3MQwD0zSxbZssy9CQA79/D27XEu6CYeTnFw99Hh5OIyXqAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"the-elastic-stack.png\"\n        title=\"the-elastic-stack.png\"\n        src=\"/static/a9db969eb67ca22f846adad0fbf99b15/bb630/the-elastic-stack.png\"\n        srcset=\"/static/a9db969eb67ca22f846adad0fbf99b15/e9ff0/the-elastic-stack.png 180w,\n/static/a9db969eb67ca22f846adad0fbf99b15/f21e7/the-elastic-stack.png 360w,\n/static/a9db969eb67ca22f846adad0fbf99b15/bb630/the-elastic-stack.png 496w\"\n        sizes=\"(max-width: 496px) 100vw, 496px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<blockquote>\n<p><a href=\"https://www.elastic.co/\">Elastic 공식 페이지</a> 문서를 참고하여 작성하였습니다.</p>\n</blockquote>\n<h1 id=\"elastic-stack-\" style=\"position:relative;\"><a href=\"#elastic-stack-\" aria-label=\"elastic stack  permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Elastic Stack ??</h1>\n<p>모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화할 수 있는 Elastic의 오픈소스 프로젝트들을 하나로 묶어서 <strong>Elastic Stack</strong>이라고 한다.<br>\n원래는 검색 및 분석 엔진인 <strong>Elasticsearch</strong>, 수집 파이프라인인 <strong>Logstash</strong>, 시각화 도구인 <strong>Kibana</strong>의 앞글자만 따서 <strong>ELK Stack</strong>이라고 불렀으나 파일 추적을 위한 <strong>Beats</strong>를 추가하면서 <strong>Elastic Stack</strong>으로 이름이 바뀌었다.</p>\n<p><a href=\"https://www.elastic.co/kr/what-is/elk-stack\">https://www.elastic.co/kr/what-is/elk-stack</a></p>\n<hr>\n<h1 id=\"elastic-stack-구조\" style=\"position:relative;\"><a href=\"#elastic-stack-%EA%B5%AC%EC%A1%B0\" aria-label=\"elastic stack 구조 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Elastic Stack 구조</h1>\n<p><img src=\"/6bc245db3aed12d3419054acae53f980/elk-stack-elkb-diagram.svg\" alt=\"elk-stack-elkb-diagram.svg\"></p>\n<table>\n<thead>\n<tr>\n<th>SQL</th>\n<th>Elastic</th>\n<th>설명</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>column</td>\n<td>field</td>\n<td></td>\n</tr>\n<tr>\n<td>row</td>\n<td>document</td>\n<td></td>\n</tr>\n<tr>\n<td>table</td>\n<td>index</td>\n<td></td>\n</tr>\n<tr>\n<td>schema</td>\n<td>X</td>\n<td>SQL의 schema와 비슷한 기능을 따로 제공하지 X</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"1-beats\" style=\"position:relative;\"><a href=\"#1-beats\" aria-label=\"1 beats permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Beats</h2>\n<p><strong>[경량 데이터 수집기]</strong><br>\n<strong>Beats</strong>는 단일 목적의 데이터 수집기 무료 오픈 소스 플랫폼으로 수백 수천 개의 장비와 시스템으로부터 Logstash나 Elasticsearch에 데이터를 전송한다.</p>\n<ul>\n<li>Filebeat - 로그 파일</li>\n<li>Metricbeat - 메트릭</li>\n<li>Packetbeat - 네트워크 데이터</li>\n<li>Winlogbeat - Windows 이벤트 로그</li>\n<li>Auditbeat - 감사 데이터</li>\n<li>Heartbeat - 가동 시간 모니터링</li>\n<li>Functionbeat - 서버를 사용하지 않는 수집기</li>\n</ul>\n<p>다음과 같이 데이터 유형에 따라 여러 종류의 수집기를 제공하고 있고, 자신의 데이터 수집 환경에 맞게 원하는 수집기를 선택하여 편리하게 데이터를 수집할 수 있다.</p>\n<h2 id=\"2-logstash\" style=\"position:relative;\"><a href=\"#2-logstash\" aria-label=\"2 logstash permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Logstash</h2>\n<p><strong>[데이터 처리 파이프라인]</strong><br>\n무료 오픈 소스 서버의 데이터 처리 파이프라인인 Logstash는 다양한 소스에서 데이터를 수집하여 변환한 후 자주 사용하는 저장소로 전달한다.<br>\n<strong>Logstash</strong>는 입력/필터/출력 구조로 구성되어 있고, 모든 형태의 데이터를 수집해서 필터를 이용해 형식이나 복잡성에 관계없이 데이터를 동적으로 변환하고 원하는 곳으로 스태시를 선택하여 전송할 수 있다.<br>\n특히 필터에서는 <code class=\"language-text\">grok</code>을 이용해 비구조적 데이터에서 구조를 도출하여 IP 주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키며, 전반적인 처리를 손쉽게 할 수 있고, 플러그인을 이용해 원하는대로 파이프라인을 생성하고 구성할 수 있다.</p>\n<h2 id=\"3-elasticsearch\" style=\"position:relative;\"><a href=\"#3-elasticsearch\" aria-label=\"3 elasticsearch permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Elasticsearch</h2>\n<p><strong>[검색 및 분석 엔진]</strong><br>\n<strong>Elasticsearch</strong>는 <code class=\"language-text\">Apache Lucene</code>을 기반으로 하는 분산형 <strong>RESTful</strong> 검색 및 분석 엔진이다.<br>\nElastic Stack의 중심으로, Elasticsearch는 빠른 검색, 정교하게 조정된 정확도, 강력한 분석을 위해 데이터를 중앙에 저장하고 정형 데이터, 비정형 데이터, 위치 정보, 메트릭 등 다양한 유형의 데이터를 사용자가 원하는 방식으로 검색하고 결합할 수 있도록 지원한다.</p>\n<h2 id=\"4-kibana\" style=\"position:relative;\"><a href=\"#4-kibana\" aria-label=\"4 kibana permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Kibana</h2>\n<p><strong>[시각화 도구]</strong><br>\n<strong>Kibana</strong>는 Elasticsearch 데이터를 시각화하고 Elastic Stack을 탐색하게 해주는 무료 오픈 소스 인터페이스다.<br>\n히스토그램, 선 그래프, 원형 차트, 선버스트 등의 기본적인 요소로 구성되어 있고, 모든 문서에 걸쳐 검색이 가능하다.</p>\n<ul>\n<li><strong>위치 분석</strong><br>\n: <code class=\"language-text\">Elastic Maps</code>를 활용하여 위치 데이터를 탐색하거나 사용자 정의 레이어와 벡터 도형을 시각화할 수 있다.</li>\n<li><strong>시계열</strong><br>\n: <code class=\"language-text\">시계열 UI</code>를 통해 Elasticsearch 데이터에 대한 상세 시계열 분석을 할 수 있다.</li>\n<li><strong>머신러닝</strong><br>\n: 자율적인 <code class=\"language-text\">머신 러닝</code> 기능을 통해 Elasticsearch 데이터에 숨어 있는 이상 징후를 탐색하고 이에 영향을 미치는 근본 원인을 찾아낼 수 있다.</li>\n<li><strong>그래프와 네트워크</strong><br>\n: 검색 엔진의 연관성 기능과 <code class=\"language-text\">Graph 탐색</code>을 활용해 Elasticsearch 데이터에서 관계성을 발견할 수 있다.</li>\n</ul>\n<hr>\n<h2 id=\"-reference\" style=\"position:relative;\"><a href=\"#-reference\" aria-label=\" reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📎 Reference</h2>\n<p><a href=\"https://www.elastic.co/kr/what-is/elk-stack\">https://www.elastic.co/kr/what-is/elk-stack</a><br>\n<a href=\"https://www.elastic.co/guide/en/elasticsearch/reference/8.1/_mapping_concepts_across_sql_and_elasticsearch.html#\">https://www.elastic.co/guide/en/elasticsearch/reference/8.1/_mapping_concepts_across_sql_and_elasticsearch.html#</a><br>\n<a href=\"https://www.elastic.co/static-res/images/elk/elk-stack-elkb-diagram.svg\">https://www.elastic.co/static-res/images/elk/elk-stack-elkb-diagram.svg</a></p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#1-beats\">1. Beats</a></li>\n<li><a href=\"#2-logstash\">2. Logstash</a></li>\n<li><a href=\"#3-elasticsearch\">3. Elasticsearch</a></li>\n<li><a href=\"#4-kibana\">4. Kibana</a></li>\n<li><a href=\"#-reference\">📎 Reference</a></li>\n</ul>\n</div>","excerpt":"Elastic 공식 페이지 문서를 참고하여 작성하였습니다. Elastic Stack ?? 모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화할 수 있는 Elastic의 오픈소스 프로젝트들을 하나로 묶어서 Elastic Stack이라고 한다. 원래는 검색 및 분석 엔진인 Elasticsearch, 수집 파이프라인인 Logstash, 시각화 도구인 Kibana의 앞글자만 따서 ELK Stack이라고 불렀으나 파일 추적을 위한 Beats를 추가하면서 Elastic Stack으로 이름이 바뀌었다. https://www.elastic.co/kr/what-is/elk-stack Elastic Stack 구조 elk-stack-elkb-diagram.svg SQL Elastic 설명 column field  row document  table index  schema X SQL의 schema와 비슷한 기능을 따로 제공하지 X 1. Beats [경량 데이터 수집기] Beats는 단일 목적의 …","frontmatter":{"date":"April 06, 2022","title":"[Elastic] Elastic Stack(ELK Stack) 소개","categories":"Database","author":"JFe","emoji":"📚"},"fields":{"slug":"/elastic-intro/"}},"next":{"id":"6680d9d5-8931-5969-a431-fc39c6deb510","html":"<h2 id=\"문제\" style=\"position:relative;\"><a href=\"#%EB%AC%B8%EC%A0%9C\" aria-label=\"문제 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>문제</h2>\n<p><a href=\"https://programmers.co.kr/learn/courses/30/lessons/42885\">https://programmers.co.kr/learn/courses/30/lessons/42885</a></p>\n<p>무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.</p>\n<p>예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.</p>\n<p>구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.</p>\n<p>사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.</p>\n<hr>\n<h2 id=\"제한사항\" style=\"position:relative;\"><a href=\"#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD\" aria-label=\"제한사항 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>제한사항</h2>\n<ul>\n<li>무인도에 갇힌 사람은 1명 이상 50,000명 이하입니다.</li>\n<li>각 사람의 몸무게는 40kg 이상 240kg 이하입니다.</li>\n<li>구명보트의 무게 제한은 40kg 이상 240kg 이하입니다.</li>\n<li>구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없습니다.</li>\n</ul>\n<hr>\n<h2 id=\"입출력-예\" style=\"position:relative;\"><a href=\"#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88\" aria-label=\"입출력 예 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>입출력 예</h2>\n<table>\n<thead>\n<tr>\n<th>people</th>\n<th>limit</th>\n<th>return</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>[70, 50, 80, 50]</td>\n<td>100</td>\n<td>3</td>\n</tr>\n<tr>\n<td>[70, 80, 50]</td>\n<td>100</td>\n<td>3</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2 id=\"-algorithm\" style=\"position:relative;\"><a href=\"#-algorithm\" aria-label=\" algorithm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🔍 Algorithm</h2>\n<p><strong>Greedy</strong></p>\n<h2 id=\"-logic\" style=\"position:relative;\"><a href=\"#-logic\" aria-label=\" logic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>💻 Logic</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>people<span class=\"token punctuation\">,</span> limit<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    answer<span class=\"token punctuation\">,</span> left<span class=\"token punctuation\">,</span> right <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>people<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span>\n    <span class=\"token comment\"># 오름차순 정렬</span>\n    people<span class=\"token punctuation\">.</span>sort<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token comment\"># 전부 태울 때까지 반복</span>\n    <span class=\"token keyword\">while</span> left <span class=\"token operator\">&lt;=</span> right<span class=\"token punctuation\">:</span>\n        answer <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n        boat <span class=\"token operator\">=</span> people<span class=\"token punctuation\">[</span>right<span class=\"token punctuation\">]</span>\n        right <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n        <span class=\"token comment\"># 전부 태운 경우</span>\n        <span class=\"token keyword\">if</span> left <span class=\"token operator\">></span> right <span class=\"token punctuation\">:</span> <span class=\"token keyword\">break</span>\n        <span class=\"token comment\"># 제일 가벼운 사람(left)도 같이 태울 수 있는 경우</span>\n        <span class=\"token keyword\">if</span> boat <span class=\"token operator\">+</span> people<span class=\"token punctuation\">[</span>left<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> limit<span class=\"token punctuation\">:</span>\n            left <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">return</span> answer</code></pre></div>\n<ul>\n<li><strong>오름차순 정렬</strong><br>\n제일 무게가 나가는 사람을 기준으로 확인하면서 배에 태우기 위해</li>\n<li><strong>전부 태울 때까지 반복</strong><br>\n남아있는 제일 가벼운 사람의 위치인 <code class=\"language-text\">left</code>가 남아있는 제일 무거운 사람의 위치인 <code class=\"language-text\">right</code>보다 커질 때까지 반복</li>\n<li><strong>전부 태운 경우</strong><br>\n남아있는 제일 가벼운 사람의 위치인 <code class=\"language-text\">left</code>가 남아있는 제일 무거운 사람의 위치인 <code class=\"language-text\">right</code>보다 커진 경우</li>\n<li><strong>제일 가벼운 사람도 같이 태울 수 있는 경우</strong><br>\n남아있는 제일 가벼운 사람의 위치는 <code class=\"language-text\">left</code><br>\n<code class=\"language-text\">left</code> 위치에 있는 사람을 더한 무게가 <code class=\"language-text\">limit</code> 이하인 경우에는 <code class=\"language-text\">left</code> <strong>+1</strong></li>\n</ul>\n<hr>\n<h2 id=\"-code\" style=\"position:relative;\"><a href=\"#-code\" aria-label=\" code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🧩 Code</h2>\n<details><summary>전체 코드 확인</summary>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>people<span class=\"token punctuation\">,</span> limit<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    answer<span class=\"token punctuation\">,</span> left<span class=\"token punctuation\">,</span> right <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>people<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span>\n    <span class=\"token comment\"># 오름차순 정렬</span>\n    people<span class=\"token punctuation\">.</span>sort<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token comment\"># 전부 태울 때까지 반복</span>\n    <span class=\"token keyword\">while</span> left <span class=\"token operator\">&lt;=</span> right<span class=\"token punctuation\">:</span>\n        answer <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n        boat <span class=\"token operator\">=</span> people<span class=\"token punctuation\">[</span>right<span class=\"token punctuation\">]</span>\n        right <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n        <span class=\"token comment\"># 전부 태운 경우</span>\n        <span class=\"token keyword\">if</span> left <span class=\"token operator\">></span> right <span class=\"token punctuation\">:</span> <span class=\"token keyword\">break</span>\n        <span class=\"token comment\"># 제일 가벼운 사람(left)도 같이 태울 수 있는 경우</span>\n        <span class=\"token keyword\">if</span> boat <span class=\"token operator\">+</span> people<span class=\"token punctuation\">[</span>left<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> limit<span class=\"token punctuation\">:</span>\n            left <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">return</span> answer</code></pre></div>\n</details>\n<hr>\n<h2 id=\"-review\" style=\"position:relative;\"><a href=\"#-review\" aria-label=\" review permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📝 Review</h2>\n<p>pop()을 이용해서 해결하는 방식으로 구현했는데 효율성 첫 번째 테스트케이스에서 시간초과가 났다,,<br>\n그래서 pop()을 사용하지 않고 해결할 수 있는 방법을 생각해서 다시 풀었다.<br>\n대표적인 그리디 문제인 동전 문제처럼 제일 무게가 많이 나가는 사람을 기준으로 생각해야 함.</p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#%EB%AC%B8%EC%A0%9C\">문제</a></li>\n<li><a href=\"#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD\">제한사항</a></li>\n<li><a href=\"#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88\">입출력 예</a></li>\n<li><a href=\"#-algorithm\">🔍 Algorithm</a></li>\n<li><a href=\"#-logic\">💻 Logic</a></li>\n<li><a href=\"#-code\">🧩 Code</a></li>\n<li><a href=\"#-review\">📝 Review</a></li>\n</ul>\n</div>","frontmatter":{"date":"April 01, 2022","title":"[Programmers] 42885번: 구명보트 (Python)","categories":"Algorithm","author":"JFe","emoji":"💻"},"fields":{"slug":"/pg-42885/"}},"prev":{"id":"5b80011f-3dec-5ecf-ac2e-48a0a7d93009","html":"<h2 id=\"1-homebrew-설치\" style=\"position:relative;\"><a href=\"#1-homebrew-%EC%84%A4%EC%B9%98\" aria-label=\"1 homebrew 설치 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Homebrew 설치</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">/bin/bash -c <span class=\"token string\">\"<span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">curl</span> -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh<span class=\"token variable\">)</span></span>\"</span></code></pre></div>\n<p><strong>Homebrew</strong> 설치가 되어있지 않으면 터미널에서 위 명령어를 입력하여 설치할 수 있다.</p>\n<hr>\n<h2 id=\"2-elastic-tap-저장소-추가\" style=\"position:relative;\"><a href=\"#2-elastic-tap-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80\" aria-label=\"2 elastic tap 저장소 추가 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. elastic tap 저장소 추가</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew tap elastic/tap</code></pre></div>\n<p>터미널에서 위 명령어를 통해 elastic 패키지 저장소를 추가할 수 있다.</p>\n<hr>\n<h2 id=\"3-elasticsearch-설치-및-실행\" style=\"position:relative;\"><a href=\"#3-elasticsearch-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\" aria-label=\"3 elasticsearch 설치 및 실행 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Elasticsearch 설치 및 실행</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew <span class=\"token function\">install</span> elastic/tap/elasticsearch-full</code></pre></div>\n<p>위 명령어로 <strong>Elasticsearch</strong>를 설치할 수 있고</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">elasticsearch</code></pre></div>\n<p>설치 완료 후에는 <code class=\"language-text\">elasticsearch</code> 명령어를 통해 <strong>Elasticsearch</strong>를 실행할 수 있다.<br>\n백그라운드에서 실행하고 싶으면 <code class=\"language-text\">elasticsearch</code> 명령어 대신 다음과 같은 명령어로 실행할 수도 있다.<br>\n(중단할 경우에는 <code class=\"language-text\">start</code> 대신에 <code class=\"language-text\">stop</code> 사용)</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew services start elastic/tap/elasticsearch-full</code></pre></div>\n<p>실행 후에는 <a href=\"http://localhost:9200\">http://localhost:9200</a> 에 접속하여 제대로 실행되었는지 확인할 수 있다.<br>\n다음과 같은 화면이 보이면 제대로 실행중인 경우<br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.77777777777778%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAACEUlEQVQ4y5WS22sTURDG848o+GSFPihotZHin9iEpCYVDX1QyIOPeW5zD/iiNZcGNreGktvuJmuyu8ne8pNzZEOrIOTAd/acmTPffDOzkVdHUaJv3/Hm+ISnB4ccvY5yHD3h+YuXHDw75NHjJ3shUiyWqVSqlMsVSqUy1VqNarVGsVginy9wdZXf4fLyinyhSOE/iACYponvefh4LB0Dl40wE+DLfZ8V8TyPTqdDu92m2+0yuB2g9BXefzoj+TEhkcqkSGfSZLNZ9LnOdrtFxPm+/w8iYpvP54xGIwzDIAgCTMukUW/QbrUlWs0WzUaTRqOBbduSULy7D2ETiITZFEWh3+szmU7QDR0XR2KfJQnDDKqqMp1OGQ6HWJbFj+Z3at9qXF9fU/9Zp16vy69QGkLYhF+0TJDJHoYKe72exE3rBssy+fL1M7FkjOR5gng6RuI8wdmHM05Tp8RSp8TTcS4uLshkMuRyOSlKEv6t8O7ujvF4LJ2mBY63Z8nbbSCnIyYsJq10FFmCKL076NO97aHpGupMlUnX6zULc87KXsnKPM+V8buhhJfFYsFsNkNTNXRNZzqZMh6N0cVd1aVvMpnIP2C1WTK3dDRTw9yYO3WS0HVdmVnTNGzbYrleoq80DHvB0v6FYS3QViqu5+6CQgI/EGKCh4RCoSB1HEf2UjzyfFfiz9nD9Z0HROH5fu9Cwt8UkJoixaCYjQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"elasticsearch-running.png\"\n        title=\"elasticsearch-running.png\"\n        src=\"/static/207f7ba00a136cecf490655820d2c416/37523/elasticsearch-running.png\"\n        srcset=\"/static/207f7ba00a136cecf490655820d2c416/e9ff0/elasticsearch-running.png 180w,\n/static/207f7ba00a136cecf490655820d2c416/f21e7/elasticsearch-running.png 360w,\n/static/207f7ba00a136cecf490655820d2c416/37523/elasticsearch-running.png 720w,\n/static/207f7ba00a136cecf490655820d2c416/302a4/elasticsearch-running.png 1080w,\n/static/207f7ba00a136cecf490655820d2c416/62a6a/elasticsearch-running.png 1122w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<hr>\n<h2 id=\"4-kibana-설치-및-실행\" style=\"position:relative;\"><a href=\"#4-kibana-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\" aria-label=\"4 kibana 설치 및 실행 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Kibana 설치 및 실행</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew <span class=\"token function\">install</span> elastic/tap/kibana-full</code></pre></div>\n<p><strong>kibana</strong> 또한 위 명령어로 <strong>kibana</strong>를 설치할 수 있고</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">kibana</code></pre></div>\n<p>설치 완료 후에는 <code class=\"language-text\">kibana</code> 명령어를 통해 실행할 수 있고,<br>\n다음과 같은 명령어로 백그라운드에서 실행할 수도 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew services start elastic/tap/kibana-full</code></pre></div>\n<p>실행 후에는 <a href=\"http://localhost:5601\">http://localhost:5601</a> 에 접속하여 제대로 실행되었는지 확인할 수 있다.<br>\n다음과 같은 화면이 보이면 성공<br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAACv0lEQVQoz52S3WsUVxiH57J/gfTWRE0iUaQggopVK/W+IIXGm0JvtSJatVrwQktvFASpqAVv7EWRRCqKFZuo2ezOZklEY1a3Rnez2c1+ZOfbmZ2dOTPzlDnbm9564OGc874v78fvHGX3/gNs37Gb0a2fsXl0G0PDWxgYHJYMbhiR901Do/I8uHHzf4wwsKHP+sFhNg6NMjyylZ279qI8zGQYf/SYp0+myakFsrlZcrlZZrIq2VweNV/4nz2nzkr7TLZPVqKSmclJFADb7VKu1Gi1WqzUVnG9Hh+7lCCC7lqGD+rnmHNj2Pkv8RaPYl+ZxPzxTzo/P0ScucfEs+fsfJFl7HmefXMZjiy+5Lvflzh44w2HbpXY8+tr5qoOSpBA0PgDphTMV4cJ1XUkhRHMr39D/+om5dMTsP0Sv9z+C+XJON8UplH+nmAgM8knp+b59Pw8X1xdQPk2w6M3Rr/D0CniFk/gFM9iLxzHX76Of38B7doUjWuPCW/lyBcr/LBc4uTCPCf/ecXNWpXLz1ocu/ue78dL/PSgzFLbRQlCgYihrQvKKxaVukNPQI+EqtGm3GmgC68vkOvh1BsITYcohiTE1ZqYjRWIfUgSlFDEhKEgDHyCoCd3IUI8t4uhGViGhWXYdP0A3XbQTIs1w8IPQrqeh25YrOkWmmnTCyMUIWLcbo81zURLnR1DoukmabG0ERElBGHURySICBq2y1LbR/MiIhEThLH0K2mw63q0Vus063UqlSrL1Zr8PmlSw7QxTIcgEP1kvotpvePOahvlXIGL994CMV4QyQaUOE5oGi7TxTpqqUGt2aFj2FiOh2Y46KaDZbuyup+K3fOZrJbYv6gyNjXL8uULJI0KfoKUTkmFLDa7XJhscmWmTeeDwPEj3F6E3Y3ww3TsRI4USnkC6dNcH+IIu7KEaVjyYdOR/wV1gi4sXla38wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"kibana-running.png\"\n        title=\"kibana-running.png\"\n        src=\"/static/f8f9f6b6c93265cc6ad7dc4971908600/37523/kibana-running.png\"\n        srcset=\"/static/f8f9f6b6c93265cc6ad7dc4971908600/e9ff0/kibana-running.png 180w,\n/static/f8f9f6b6c93265cc6ad7dc4971908600/f21e7/kibana-running.png 360w,\n/static/f8f9f6b6c93265cc6ad7dc4971908600/37523/kibana-running.png 720w,\n/static/f8f9f6b6c93265cc6ad7dc4971908600/302a4/kibana-running.png 1080w,\n/static/f8f9f6b6c93265cc6ad7dc4971908600/07a9c/kibana-running.png 1440w,\n/static/f8f9f6b6c93265cc6ad7dc4971908600/8da59/kibana-running.png 2742w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<hr>\n<h2 id=\"5-logstash-설치-및-실행\" style=\"position:relative;\"><a href=\"#5-logstash-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\" aria-label=\"5 logstash 설치 및 실행 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Logstash 설치 및 실행</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew <span class=\"token function\">install</span> elastic/tap/logstash-full</code></pre></div>\n<p><strong>Logstash</strong>도 위 명령어를 통해 설치할 수 있고,<br>\n실행하기 전에 인덱싱하기 적절하게 필터링을 위한 설정 파일(<code class=\"language-text\">logstash-sample.conf</code>)을 수정하여 필터링 설정을 할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token builtin class-name\">cd</span> /opt/homebrew/etc/logstash</code></pre></div>\n<p><strong>Homebrew</strong>를 이용하여 설치한 경우에는 다음과 같은 경로에서 설정 파일들을 확인할 수 있고<br>\n여기서 <code class=\"language-text\">logstash-sample.conf</code> 설정 파일을 수정하면 된다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">vi</span> logstash-sample.conf</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># Sample Logstash configuration for creating a simple</span>\n<span class=\"token comment\"># Beats -> Logstash -> Elasticsearch pipeline.</span>\ninput <span class=\"token punctuation\">{</span>\n  beats <span class=\"token punctuation\">{</span>\n    port <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">5044</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\noutput <span class=\"token punctuation\">{</span>\n  elasticsearch <span class=\"token punctuation\">{</span>\n    hosts <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"http://localhost:9200\"</span><span class=\"token punctuation\">]</span>\n    index <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}\"</span>\n    <span class=\"token comment\">#user => \"elastic\"</span>\n    <span class=\"token comment\">#password => \"changeme\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>설정 파일을 열어보면 위와 같이 파일이 구성되어 있는데 여기서 <code class=\"language-text\">filter</code>를 추가하여 필터링 설정을 할 수 있다.<br>\n(filter 설정에 대한 예시는 이후 포스트에서 다룰 예정)<br>\n이렇게 설정한 후에는 해당 디렉토리에서 다음 명령어를 통해 <strong>Logstash</strong>를 실행할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">logstash -f logstash-sample.conf</code></pre></div>\n<hr>\n<h2 id=\"6-filebeat-설치-및-실행\" style=\"position:relative;\"><a href=\"#6-filebeat-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\" aria-label=\"6 filebeat 설치 및 실행 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. Filebeat 설치 및 실행</h2>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew <span class=\"token function\">install</span> elastic/tap/filebeat-full</code></pre></div>\n<p><strong>Filebeat</strong>도 위 명령어를 통해 설치할 수 있고,<br>\n실행하기 전에 설정 파일(<code class=\"language-text\">filebeat.yml</code>)을 수정하여 <strong>input</strong>과 <strong>output</strong>에 대한 설정을 할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token builtin class-name\">cd</span> /opt/homebrew/etc/filebeat\n<span class=\"token function\">vi</span> filebeat.yml</code></pre></div>\n<p><strong>Filebeat</strong> 설정에 대한 설명도 이후 포스트에서 예시를 통해 다룰 예정이다.<br>\n이렇게 설정한 후에는 해당 디렉토리에서 다음 명령어를 통해 <strong>Filebeat</strong>를 실행할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">filebeat -e                 <span class=\"token comment\"># 일반적으로 실행 하는 경우</span>\nfilebeat -e -c filebeat.yml <span class=\"token comment\"># -c 옵션은 configuration 파일을 특정할 때 사용 (-c 사용안하면 default는 filebeat.yml)</span></code></pre></div>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#1-homebrew-%EC%84%A4%EC%B9%98\">1. Homebrew 설치</a></li>\n<li><a href=\"#2-elastic-tap-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80\">2. elastic tap 저장소 추가</a></li>\n<li><a href=\"#3-elasticsearch-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\">3. Elasticsearch 설치 및 실행</a></li>\n<li><a href=\"#4-kibana-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\">4. Kibana 설치 및 실행</a></li>\n<li><a href=\"#5-logstash-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\">5. Logstash 설치 및 실행</a></li>\n<li><a href=\"#6-filebeat-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89\">6. Filebeat 설치 및 실행</a></li>\n</ul>\n</div>","frontmatter":{"date":"April 06, 2022","title":"[Elastic] Elastic Stack(ELK Stack) - Mac OS 설치 방법","categories":"Database","author":"JFe","emoji":"🍺"},"fields":{"slug":"/elastic-mac-install/"}},"site":{"siteMetadata":{"siteUrl":"https://jfelog.netlify.app","comments":{"utterances":{"repo":"Go-Jaecheol/Jfe_Blog"}}}}},"pageContext":{"slug":"/elastic-intro/","nextSlug":"/pg-42885/","prevSlug":"/elastic-mac-install/"}},
    "staticQueryHashes": ["1073350324","1956554647","2938748437"]}