{"data":{"site":{"siteMetadata":{"author":{"name":"khtinsoft"},"disqusShortname":"khtinsoft","subtitle":"Blogs for developments and divings.","title":"Blog by khtinsoft","url":"https://blog.khtinsoft.xyz"}},"markdownRemark":{"id":"b700802e-91e1-5d32-8561-d3f921b85618","html":"<h2 id=\"introduction\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor\"><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>Introduction</h2>\n<p>현재 운영중인 서비스의 다양한 로그들을 모으고, 활용하기 위한 첫번째 단계로 ELK (ElasticSearch-Logstash-Kibana) 스택을 구축하게 되었다.\nUbuntu 18.04 EC2 Instance에 ELK Stack을 구축하는 방식으로 기록한다.</p>\n<p>우선 목표는, 구축된 ELK 스택을 통해, Amazon S3에 적재되고 있는 Load Balance의 Access Log를 Kibana에서 확인하는 것이다.</p>\n<h2 id=\"prerequisites\"><a href=\"#prerequisites\" aria-label=\"prerequisites permalink\" class=\"anchor\"><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>Prerequisites</h2>\n<p>ELK 스택 구축에 앞서, Ubuntu 18.04 EC2 인스턴스를 생성하고, 해당 인스턴스에 Oracle Java 8 버전을 설치한다.</p>\n<p>(참고 : <a href=\"https://linuxconfig.org/how-to-install-java-on-ubuntu-18-04-bionic-beaver-linux\">How to install Java on Ubuntu 18.04 Bionic Beaver Linux</a>)</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> add-apt-repository ppa:webupd8team/java\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt-get</span> update\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt-get</span> <span class=\"token function\">install</span> oracle-java8-set-default\n$ java --version <span class=\"token comment\"># Java 설치 확인</span></code></pre></div>\n<h2 id=\"install-and-configure-the-elasticsearch\"><a href=\"#install-and-configure-the-elasticsearch\" aria-label=\"install and configure the elasticsearch permalink\" class=\"anchor\"><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>Install and Configure the ElasticSearch</h2>\n<p>ElasticSearch는 현재 Ubuntu 공식 패키지 저장소에서 제공되지 않는다. 따라서, Debian Package를 직접 다운받아 설치하는 것과, Elastic의 Source List를 추가하여, apt를 통해 설치하는 방법이 있다.\n패키지 관리의 편의성을 위해 apt를 통해 설치하는 방법을 사용한다. </p>\n<p>우선은, ElasticSearch GPG key를 임포트 한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">wget</span> -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch <span class=\"token operator\">|</span> <span class=\"token function\">sudo</span> apt-key <span class=\"token function\">add</span> -\nOK</code></pre></div>\n<p>Elastic의 Source List를 sources.list.d 폴더에 추가한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token keyword\">echo</span> <span class=\"token string\">\"deb https://artifacts.elastic.co/packages/6.x/apt stable main\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">sudo</span> <span class=\"token function\">tee</span> -a /etc/apt/sources.list.d/elastic-6.x.list\ndeb https://artifacts.elastic.co/packages/6.x/apt stable main</code></pre></div>\n<p>APT 업데이트 및 elasticsearch를 설치</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> update\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> <span class=\"token function\">install</span> elasticsearch</code></pre></div>\n<p>Elastic Search에 대한 외부 Access를 제한하기 위해, Elastic Search의 Configuration 파일의 network.host 값을 아래와 같이 수정한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"yml\"><pre class=\"language-yml\"><code class=\"language-yml\"><span class=\"token key atrule\">network.host</span><span class=\"token punctuation\">:</span> localhost</code></pre></div>\n<p>Systemctl을 통해 elasticsearch 서비스를 실행하고, 서버 부팅 시 자동 실행되도록 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> systemctl start elasticsearch\n$ <span class=\"token function\">sudo</span> systemctl <span class=\"token function\">enable</span> elasticsearch\nSynchronizing state of elasticsearch.service with SysV <span class=\"token function\">service</span> script with /lib/systemd/systemd-sysv-install.\nExecuting: /lib/systemd/systemd-sysv-install <span class=\"token function\">enable</span> elasticsearch\nCreated symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.</code></pre></div>\n<p>Curl 명령어를 통해, elasticsearch의 동작 여부를 확인한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">curl</span> -X GET <span class=\"token string\">\"localhost:9200\"</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\"name\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"-cBxsVl\"</span>,\n  <span class=\"token string\">\"cluster_name\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"elasticsearch\"</span>,\n  <span class=\"token string\">\"cluster_uuid\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"zYITLxSjTo2Y_S6kUOvc6Q\"</span>,\n  <span class=\"token string\">\"version\"</span> <span class=\"token keyword\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">\"number\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"6.7.1\"</span>,\n    <span class=\"token string\">\"build_flavor\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"default\"</span>,\n    <span class=\"token string\">\"build_type\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"deb\"</span>,\n    <span class=\"token string\">\"build_hash\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"2f32220\"</span>,\n    <span class=\"token string\">\"build_date\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"2019-04-02T15:59:27.961366Z\"</span>,\n    <span class=\"token string\">\"build_snapshot\"</span> <span class=\"token keyword\">:</span> false,\n    <span class=\"token string\">\"lucene_version\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"7.7.0\"</span>,\n    <span class=\"token string\">\"minimum_wire_compatibility_version\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"5.6.0\"</span>,\n    <span class=\"token string\">\"minimum_index_compatibility_version\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"5.0.0\"</span>\n  <span class=\"token punctuation\">}</span>,\n  <span class=\"token string\">\"tagline\"</span> <span class=\"token keyword\">:</span> <span class=\"token string\">\"You Know, for Search\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"install-and-configure-the-kibana-dashboard\"><a href=\"#install-and-configure-the-kibana-dashboard\" aria-label=\"install and configure the kibana dashboard permalink\" class=\"anchor\"><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>Install and Configure the Kibana Dashboard</h2>\n<h3 id=\"install-kibana\"><a href=\"#install-kibana\" aria-label=\"install kibana permalink\" class=\"anchor\"><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>Install Kibana</h3>\n<p>이전에 추가한 Elastic 패키지의 Source를 통해, kibana를 설치할 수 있다. elasticsearch와 마찬가지로, systemctl을 통해 서비스를 실행하고, 서버 부팅시 자동 실행되도록 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> <span class=\"token function\">install</span> kibana\n$ <span class=\"token function\">sudo</span> systemctl start kibana\n$ <span class=\"token function\">sudo</span> systemctl <span class=\"token function\">enable</span> kibana</code></pre></div>\n<h3 id=\"install-and-configure-nginx\"><a href=\"#install-and-configure-nginx\" aria-label=\"install and configure nginx permalink\" class=\"anchor\"><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>Install and Configure Nginx</h3>\n<p>Kibana Dashboard를 Nginx를 통해 서빙할 것이므로, Nginx를 설치한다. 간단한 인증 기능을 함께 추가하기 위해 apache2-utils 패키지도 함께 설치한다.\nNginx에서 사용될 ID/Password를 설정한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt-get</span> <span class=\"token function\">install</span> -y nginx apache2-utils\n$ <span class=\"token function\">sudo</span> htpasswd -c /etc/nginx/htpasswd.users admin</code></pre></div>\n<p>Nginx의 Reverse Proxy를 설정한다. (여기서는 <strong>example.com</strong> 이라는 호스트명을 가정한다.)</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">vi</span> /etc/nginx/site-available/example.com\n\n/etc/nginx/site-available/example.com\nserver <span class=\"token punctuation\">{</span>\n    listen 80<span class=\"token punctuation\">;</span>\n\n    server_name example.com<span class=\"token punctuation\">;</span>\n\n    auth_basic <span class=\"token string\">\"Restricted Access\"</span><span class=\"token punctuation\">;</span>\n    auth_basic_user_file /etc/nginx/htpasswd.users<span class=\"token punctuation\">;</span>\n\n    location / <span class=\"token punctuation\">{</span>\n        proxy_pass http://localhost:5601<span class=\"token punctuation\">;</span>\n        proxy_http_version 1.1<span class=\"token punctuation\">;</span>\n        proxy_set_header Upgrade <span class=\"token variable\">$http_upgrade</span><span class=\"token punctuation\">;</span>\n        proxy_set_header Connection <span class=\"token string\">'upgrade'</span><span class=\"token punctuation\">;</span>\n        proxy_set_header Host <span class=\"token variable\">$host</span><span class=\"token punctuation\">;</span>\n        proxy_cache_bypass <span class=\"token variable\">$http_upgrade</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n$ <span class=\"token function\">sudo</span> <span class=\"token function\">ln</span> -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com\n$ <span class=\"token function\">sudo</span> nginx -t \nnginx: the configuration <span class=\"token function\">file</span> /etc/nginx/nginx.conf syntax is ok\nnginx: configuration <span class=\"token function\">file</span> /etc/nginx/nginx.conf <span class=\"token function\">test</span> is successful\n\n$ <span class=\"token function\">sudo</span> systemctl restart nginx</code></pre></div>\n<p>설치가 완료되면, <strong><a href=\"http://example.com/status\">http://example.com/status</a></strong> 로 접속해 kibana 동작 여부를 확인한다. 이때 로그인을 필요로 하는데, 위에서 생성한 아이디와 비밀번호를 사용한다.</p>\n<p><img src=\"https://lh3.googleusercontent.com/xpfcnJKJUnbJ38VBx6KURkIC6VwspJydmLaurp1EE81I52r6fx6jr8HiwZEwzI-sxyCeAFnFuM8AY1ZX5cy3aBWA7aBqSfmj78OFYGK8uanQ7OLwFbFY0qbL48YVpfW8sJ0xH74G6-VXmp9PC_tvsuDIcctBr5jLkD32xDBtoPUxINZxProIsFwIdqGNbzSPo-_APxkr99DqDwAj4YMr3iPTUw2MGlCvmSd6rMEYj3E06UB_kvy7645iTnZm_vorKh9N1taSgUpLBfx5y1lIMRhr8bvXj2cQhTVL3dtvG7c5ejACzJp6LCbw_PMdw_i_fQYYBTV5nTb94o7AVTHtPyvBH4KsGwYWMGtpG_D_1grNMZrLZuIgrBAoCsQf747bxJHyCAhlEodd05UwEab-s2fcEIxV7onx9g8KHuU1Td1GiOcZqVc4hPixayTF9Tu_6SOsOqaB6L8aHHEHEZa-u8CNfvuhveIe0T7OBmIdcyHh22hWfaov7Q92LimTB9FsPBkq4S3_KwtMw7oRIUnkzYlrWwNBXsiXKsVgb8CxvTltj_Otkc4fGxl_Mi-bROMjD5v0w2lU-B62Rb0JUNIBVWsvQ0nSaqKiWZjgylmKg4OqMVs6FZzc9tSir-MvzzwsYKM4PaEAG5PGZ_vtvmJLGp_Y8G3WdrA=w1487-h694-no\" alt=\"login\">\n<img src=\"https://lh3.googleusercontent.com/YsJCtkHvq7EVkksINDQRFzp9r81vz2_fwKQYqzMZFviVre6A50MxtaiVAJIop17KtTAa7zKznbpv4qvArcog_cWvN0n8X_6fZ7KZeqSvsqm4RnfEwt1cPUm2jPiOqGnzobWOxlGIG-AVPDJzzrUGH67rNgsGARMuGUybnSNLR2ZCSA7oZ71P4xJahqEad34J0lIbivi0uCiIozg0Xe6mtoRT79K-7-kIQI4E-yl_Azg8UTq8E5G0QiwPkDRtPCpOqRAFCgI_rfc2MVGEblTvD3XT_T8nzTSYbFhAkaXYITlOxVPuLHxTAFHD5Y7Gu9A64Pw_zNKnUymOIZJ0xqfFJ-8fcz9GIT3GV6V3zm9UeYk4P85FsUvW1E-_rmj1eaB0JV4M27XoKd0mAr5sr5G-9e2vgFL1Bg_auslG1fq5A3gEeINov1KghLlVYFnw4mECPYk1YInImNg7KX5y-d7tN-beWa8C4fXsLaUyhlSSx9hPKxfsQMq0yGPl1NxsslAAZDo9lLy07ylZccmaZw34s5AkfeHtifX_47zYbUgAorIYn9QZS3bxj4TKxR3Gw6W3Vuipc0F1MVXgx_dC8b75Ic7MNZlN_JP65Q5gP6_LL3_L9lYQsope8iyzjhSNGp_8pn9cfH-6YCyj-JZNSsQUWwUyLQL08RY=w1487-h945-no\" alt=\"kibana\"></p>\n<h2 id=\"install-and-configure-logstash\"><a href=\"#install-and-configure-logstash\" aria-label=\"install and configure logstash permalink\" class=\"anchor\"><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>Install and Configure Logstash</h2>\n<p>Logstash도 마찬가지로 APT를 통해 설치할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> <span class=\"token function\">install</span> logstash</code></pre></div>\n<p>Logstash를 아래와 같이 설정한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> <span class=\"token function\">vi</span> /etc/logstash/conf.d/s3.conf\n\n/etc/logstash/conf.d/s3.conf\ninput <span class=\"token punctuation\">{</span>\n\ts3 <span class=\"token punctuation\">{</span>\n\t\tbucket <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"BUCKET_NAME\"</span>\n\t\tregion <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"REGION\"</span>\n\t\taccess_key_id <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"ACCESS_KEY_ID\"</span>\n\t\tsecret_access_key <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"ACCESS_KEY_SECRET\"</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\nfilter <span class=\"token punctuation\">{</span>\n\tgrok <span class=\"token punctuation\">{</span>\n\t\tmatch <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span> <span class=\"token string\">\"message\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"%{COMBINEDAPACHELOG}\"</span> <span class=\"token punctuation\">}</span> \n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\noutput <span class=\"token punctuation\">{</span>\n\telasticsearch <span class=\"token punctuation\">{</span>\n\t\t\thosts <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"localhost:9200\"</span><span class=\"token punctuation\">]</span>\n\t\t\tindex <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token string\">\"elb_logs\"</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n$ <span class=\"token function\">sudo</span> -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t  <span class=\"token comment\"># Test Configure</span></code></pre></div>\n<p>Logstash 서버를 실행한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> systemctl start logstash</code></pre></div>\n<h2 id=\"validation\"><a href=\"#validation\" aria-label=\"validation permalink\" class=\"anchor\"><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>Validation</h2>\n<p>Logstash가 실행되고, 약간의 잠시 기다리면 kibana를 통해 로그 데이터가 elasticsearch에 반영되었음을 확인할 수 있다. </p>\n<p><strong>kibana > management > Index Patterns</strong> 메뉴에서, <strong>Create Index Pattern</strong>버튼을 누르고, Logstash에서 설정한 index 이름(elb_logs)를 입력한다.</p>\n<p><img src=\"https://lh3.googleusercontent.com/vv_HHuoEVI9QqkqwYa2V1SE0_VXebE2P537ekWBDDKdLgtekFikrNwxLFNz5CYWK6so5oxny6_jtjJO7xj6sLpSfztUa5xI2sVYq8CDbyNYtR7plqK3DaejSvGIRIKkUvT_Ql1bLr4aF0rnEYiarLt3muar33It6NirBQKXwtKDDyM4Q2lvfSegpfVgqma9aLFZIM-9XsqnI4IwbWXICG0O12ileDs5usbZs57hKdHulDPAqPzDDGKgJ8MJA-h9Wfy_DMBM_soLASKomOZeeDtvjni_eRAxXrvCT73S9f74LxHZPpyA52zVpbToTIrRMGHhIC6DKpC09O_7cXIsM4pLn9w72wwLPT1oR9PJ2WfSk9s5-88Wb3nGTqdRxiNk8Y2pTwUkzKTY3VhoFmaUuEHRInjNjDdxzMaR7R8pxePD-12_n3xFn1MFvNM9YsY4byWx1muRc8uQpO2C60zEzE0wO9Kt4uduwchFVphgDlErw-fzW0JdGwrsgWSkwQsrHUbAai-QxBSp8p0DK7SfX9k_XiWuVY5_1o9EJUegdqe7_ZlmIGj4CtkUQYMwljZ5yhbqSDE5qn85RLv1p09r17nFhyYten4Tu7S4URB1PsTU4JNkinL8LYN72xveB-V4HVYnAzncZMgg1r9Cnsu1q7yygPi_8dPk=w1735-h946-no\" alt=\"kibana2\">\nIndex Pattern 생성</p>\n<p><img src=\"https://lh3.googleusercontent.com/pScUo4s9k4l3kQ19Cd6yeix6pGpzE8DdIgsO9teGuaZCYYhE-dOgWVZftvwfFQ38OxYfjhKHmnCcS5Gyg7cN6949zuTxIkBhLqvh-qCLxhZTGbVB8qflFQEpHsQIsy0w_wkIDYfKqvc1jjP0n6UcXjXmaJ6KUnhhIpsV4PSm-Ro02189cTSKnJUag2-p_1Jb2CI5RmstyQh9FReMqMQXjccUx4Zc58Z-8_ttiqFW6J3IZLBJWUibZE_4Mxxe-AGNnM7U6M4_uOClNqBEMOMuPZ_RM1zP9WouLiC1nGS3qv3hs6N56bcBdXqvHDp3Xf8wOyqgOKE2RrlyGLs367ke3m00-nPOCJuEduHrKQvOKbgGmE_hkKOt2LCyirSt4AVC0DFAVm_ef8jVBH0HIXqVALmCJ8gOACFe7bNsb9ddXojNi0vQG6_PsTfMvI9JCwxRkfWrFr8_BIRYL59FbuiA9OTQ21XcR_u5FUkBogHKKmIDjRrD0OziArE6B6Oyyc4H-BTNYuTkFYxvzE21SrMKJvmFQXRT0SdL6vfRLangbA5YCYqUjxAqAUasYe0bx-y1BnOb9uRaK8IudiJjsyr8OnIgIjHATIoZzTrX1mFiX5mwmfEi5QlTFTRooaN4wQeE0iOHzDLzf1IZBYvPvw4w6ruzN6TyWRE=w1748-h947-no\" alt=\"kibana3\">\nTimestamp 필드 설정 </p>\n<p><img src=\"https://lh3.googleusercontent.com/gHW4sQbtOXD8hkYlQUqfNKXmVxWs9eY-faDQ6f9Y7W_3m2AAJKpjrXUodM_WzFUU4CgK1O-tIsb-vqIu_lOAP5bWZ4dPukmjkgt-08oV7MT3kzMSd4Chj0JJ-89iatp9fsP6sArfk7Q8ammuFK08FqOSrgPHst8fq85FlmPcMiBee7fWdgX25dfNHO_W2-J_ihvIF9COeIw1OblAnHwB94VYBCEslktfsqj-7l7alI04QhgvdyS2zTCIw_h3zgytB4n3jJzIswS3qSPcssKTNtCTNMBsgP2OE7Aseea9W1rbRPsq4K0fqkuzKnKu-BJPSRxj19XA7FNnaj71ygbtxfKc1_a41ol45Wqyuvdxjdwn10LWBbQmp4o_rkzHwPzzUuY48k7pzq-AWDsvFL4N42dpr7QgZBkkTPSY6ou2jaUczJm0xTy43pjD0IX3EmsrJ8S5nOr1ZJCGMglhnjk3ob-xXdMgjiQTzTWZayCjEtBju9BNlN4zcAw-dovYqYsqHeaJ9lmHow0NGFoHw_9PCK51QkQUQ0JRa-DxaZ_w9eR4gpoU6JV4JjdI7O-sS9FjkMGmJ7adGFwtfv3t53rEgH7_0cF3sNhHUeFWAZ47k-ZmMmdCenBYlc9ZQKfrjKamxQY91GV845xqx7eOi6P2qIt8VtTrU1M=w1763-h946-no\" alt=\"kibana4\">\n<strong>Discover</strong> 메뉴에서 로그 데이터 확인</p>\n<h2 id=\"references\"><a href=\"#references\" aria-label=\"references permalink\" class=\"anchor\"><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>References</h2>\n<p><a href=\"https://medium.com/sharmin-anee/aws-elb-logs-from-s3-on-elk-stack-c463e2e2ec0\">AWS ELB Logs from S3 on ELK stack</a>,<br>\n<a href=\"https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-ubuntu-18-04\">How To Install Elasticsearch, Logstash, and Kibana on Ubuntu 18.04</a></p>\n<h2 id=\"trouble-shooting\"><a href=\"#trouble-shooting\" aria-label=\"trouble shooting permalink\" class=\"anchor\"><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>Trouble Shooting</h2>\n<h3 id=\"forbidden12index-read-only--allow-delete-api-오류\"><a href=\"#forbidden12index-read-only--allow-delete-api-%EC%98%A4%EB%A5%98\" aria-label=\"forbidden12index read only  allow delete api 오류 permalink\" class=\"anchor\"><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>[FORBIDDEN/12/index read-only / allow delete (api)] 오류</h3>\n<p>kibana에서 Index Pattern을 추가하려고 할 때, 아무런 반응이 일어나지 않는 경우, Chrome Developer 메뉴의 Console 출력을 보니 위와 같은 메세지가 있었다.\nkibana에서 Index Pattern을 삭제하려고 할 때, 마찬가지의 메세지가 kibana 상에 출력되었다.</p>\n<p>이 메세지는, 현재 인스턴스의 Disk Space가 특정 Threshold를 넘어가면, elasticsearch가 Read-Only 모드로 바뀌게 되어 발생하는 메세지로, 인스턴스의 디스크 크기를 늘려주고 아래와 같은 명령어를 <strong>kibana > dev tool</strong>에서 실행시켜줘야 한다. </p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">PUT _all/_settings\n{\n  &quot;index&quot;: {\n    &quot;blocks&quot;: {\n      &quot;read_only_allow_delete&quot;: false\n    }\n  }\n}</code></pre></div>\n<h3 id=\"grok-filter-customization\"><a href=\"#grok-filter-customization\" aria-label=\"grok filter customization permalink\" class=\"anchor\"><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>grok Filter Customization</h3>\n<p>사전의 정의된 grok filter 외에도, 정규표현식/grok pattern 등을 활용 하여 필터링을 수행할 수 있다. 이때 <a href=\"http://grokconstructor.appspot.com/do/match\">Grok Constructor</a>를 활용하여 쉽게 테스트해볼 수 있다.</p>","fields":{"slug":"/posts/build-elk-on-ubuntu/","tagSlugs":["/tag/elk/","/tag/elastic-search/","/tag/logstash/","/tag/kibana/","/tag/ubuntu/"]},"frontmatter":{"date":"2019-04-08","description":"Ubuntu 18.04 서버에 ELK (ElasticSearch-LogStash-Kibana) 스택을 구성한다. S3에 적재되고 있는 Load Balance의 로그 파일을 확인한다.","tags":["ELK","ElasticSearch","Logstash","Kibana","Ubuntu"],"title":"Ubuntu 18.04 ELK Stack 구축"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/posts/build-elk-on-ubuntu/"}}