{"id":310423,"date":"2020-09-24T15:00:14","date_gmt":"2020-09-24T15:00:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=310423"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=310423","title":{"rendered":"\u0414\u0440\u0443\u0436\u0438\u043c ELK \u0438 Exchange. \u0427\u0430\u0441\u0442\u044c 2"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/520378\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ll\/jv\/aj\/lljvajgsr1rqmocexk5axw3-atg.png\"><\/p>\n<p>  \u042f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0432\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c Exchange \u0438 ELK (\u043d\u0430\u0447\u0430\u043b\u043e <a href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/516694\/\">\u0442\u0443\u0442<\/a>). \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u0431\u0435\u0437 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0433\u043e\u0432. \u041d\u0430 \u044d\u0442\u043e \u0440\u0430\u0437 \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 Exchange \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 Logstash \u0438 Kibana.<br \/>  <a name=\"habracut\"><\/a><br \/>  Logstash \u0432 \u0441\u0442\u0435\u043a\u0435 ELK \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u043e\u0432 \u0438 \u0438\u0445 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 Elastic \u0432 \u0432\u0438\u0434\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Kibana.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<p>  <b>\u0421\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u0442\u0430\u043f\u043e\u0432:<\/b><br \/>  \u2022 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 OpenJDK.<br \/>  \u2022 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 Logstash.<\/p>\n<p>  <b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 OpenJDK<\/b><br \/>  \u041f\u0430\u043a\u0435\u0442 OpenJDK \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 $env:Path \u0438 $env:JAVA_HOME \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Windows:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/db\/ba\/u5\/dbbau5vvkldtwlsztudkalngagw.png\"><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hc\/_d\/mb\/hc_dmbmw4uhnii8j1asdkcqoiqw.png\"><\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044e Java:<\/p>\n<pre><code class=\"plaintext\">PS C:\\&gt; java -version openjdk version &quot;13.0.1&quot; 2019-10-15 OpenJDK Runtime Environment (build 13.0.1+9) OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing) <\/code><\/pre>\n<p>  <\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 Logstash<\/h3>\n<p>  \u0424\u0430\u0439\u043b-\u0430\u0440\u0445\u0438\u0432 \u0441 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u043c Logstash \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 <a href=\"https:\/\/www.elastic.co\/downloads\/logstash\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>. \u0410\u0440\u0445\u0438\u0432 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0434\u0438\u0441\u043a\u0430. \u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 <code>C:\\Program Files<\/code> \u043d\u0435 \u0441\u0442\u043e\u0438\u0442, Logstash \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f. \u0417\u0430\u0442\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b <code>jvm.options<\/code> \u043f\u0440\u0430\u0432\u043a\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 Java. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0435\u0433\u043e \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 16 \u0413\u0431 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043a\u0438, \u0442\u043e \u043a\u043b\u044e\u0447\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"plaintext\">-Xms1g -Xmx1g <\/code><\/pre>\n<p>  \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430:<\/p>\n<pre><code class=\"plaintext\">-Xms8g -Xmx8g <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443<code> -XX:+UseConcMarkSweepGC<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/elastic\/elasticsearch\/issues\/36828\">\u0442\u0443\u0442<\/a>. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 logstash.conf:<\/p>\n<pre><code class=\"plaintext\">input {  stdin{} }   filter { }   output {  stdout {  codec =&gt; &quot;rubydebug&quot;  } } <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Logstash \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c Logstash. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435:<\/p>\n<pre><code class=\"plaintext\">PS C:\\...\\bin&gt; .\\logstash.bat -f .\\logstash.conf ... [2019-12-19T11:15:27,769][INFO ][logstash.javapipeline    ][main] Pipeline started {&quot;pipeline.id&quot;=&gt;&quot;main&quot;} The stdin plugin is now waiting for input: [2019-12-19T11:15:27,847][INFO ][logstash.agent           ] Pipelines running {:count=&gt;1, :running_pipelines=&gt;[:main], :non_running_pipelines=&gt;[]} [2019-12-19T11:15:28,113][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=&gt;9600} <\/code><\/pre>\n<p>  Logstash \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 9600.<\/p>\n<p>  \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438: \u0437\u0430\u043f\u0443\u0441\u043a Logstash \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Windows. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u0430 <a href=\"http:\/\/nssm.cc\/\">NSSM<\/a>:<\/p>\n<pre><code class=\"plaintext\">PS C:\\...\\bin&gt; .\\nssm.exe install logstash Service &quot;logstash&quot; installed successfully! <\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c<\/h2>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c Persistent Queues.<\/p>\n<h3>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h3>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u043e\u0432: input \u2192 queue \u2192 filter + output.<\/p>\n<p>  \u041f\u043b\u0430\u0433\u0438\u043d input \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043b\u043e\u0433\u043e\u0432, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f Logstash, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d output. \u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0442 output \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u0430 Logstash \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u043b\u043e\u0433 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0415\u0441\u043b\u0438 Logstash \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435, \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 Logstash \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h3>\n<p>  \u0420\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>C:\\Logstash\\config\\logstash.yml: <\/code><\/p>\n<p>  \u2022 <code>queue.type<\/code>: (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 <code>persisted<\/code> \u0438 <code>memory (default))<\/code>.<br \/>  \u2022 <code>path.queue<\/code>: (\u043f\u0443\u0442\u044c \u0434\u043e \u043f\u0430\u043f\u043a\u0438 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 C:\\Logstash\\queue).<br \/>  \u2022 <code>queue.page_capacity<\/code>: (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 64mb).<br \/>  \u2022 <code>queue.drain<\/code>: (true\/false \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\/\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c Logstash. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430).<br \/>  \u2022 <code>queue.max_events<\/code>: (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e)).<br \/>  \u2022 <code>queue.max_bytes<\/code>: (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 1024mb (1gb)).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b <code>queue.max_events<\/code> \u0438 <code>queue.max_bytes<\/code>, \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e Persistent Queues \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/persistent-queues.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0447\u0430\u0441\u0442\u0438 logstash.yml, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0439 \u0437\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438:<\/p>\n<pre><code class=\"plaintext\">queue.type: persisted queue.max_bytes: 10gb <\/code><\/pre>\n<p>  <\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h2>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Logstash \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0447\u0430\u0441\u0442\u0435\u0439, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0430\u0437\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043b\u043e\u0433\u043e\u0432: \u043f\u0440\u0438\u0451\u043c (\u0441\u0435\u043a\u0446\u0438\u044f input), \u043f\u0430\u0440\u0441\u0438\u043d\u0433 (\u0441\u0435\u043a\u0446\u0438\u044f filter) \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432 Elastic (\u0441\u0435\u043a\u0446\u0438\u044f output). \u041d\u0438\u0436\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<h3>Input<\/h3>\n<p>  \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u0441 \u0441\u044b\u0440\u044b\u043c\u0438 \u043b\u043e\u0433\u0430\u043c\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043e\u0442 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 filebeat. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u044b \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 input:<\/p>\n<pre><code class=\"plaintext\">input {   beats {     port =&gt; 5044   } } <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Logstash \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 5044, \u0438 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043b\u043e\u0433\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u0441\u0435\u043a\u0446\u0438\u0438 filter. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432 \u043e\u0442 filebit \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 SSL. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 beats \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-inputs-beats.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<h3>Filter<\/h3>\n<p>  \u0412\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Exchange, \u0438\u043c\u0435\u044e\u0442 csv-\u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043b\u043e\u0433\u043e\u0432 \u043f\u043e\u043b\u044f\u043c\u0438. \u0414\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 csv-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 Logstash \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0430\u043c \u0442\u0440\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430: <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-dissect.html\">dissect<\/a>, csv \u0438 grok. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u0441\u0430\u043c\u044b\u0439 <a href=\"https:\/\/www.elastic.co\/blog\/logstash-dude-wheres-my-chainsaw-i-need-to-dissect-my-logs\">\u0431\u044b\u0441\u0442\u0440\u044b\u0439<\/a>, \u043d\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043b\u043e\u0433\u043e\u0432. <br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u043d \u0440\u0430\u0437\u043e\u0431\u044c\u0451\u0442 \u043d\u0430 \u0434\u0432\u0435 (\u0438\u0437-\u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u044f \u0437\u0430\u043f\u044f\u0442\u043e\u0439), \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/p>\n<pre><code class=\"plaintext\">\u2026,&quot;MDB:GUID1, Mailbox:GUID2, Event:526545791, MessageClass:IPM.Note, CreationTime:2020-05-15T12:01:56.457Z, ClientType:MOMT, SubmissionAssistant:MailboxTransportSubmissionEmailAssistant&quot;,\u2026 <\/code><\/pre>\n<p>  \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u043b\u043e\u0433\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IIS. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0435\u043a\u0446\u0438\u044f filter \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">filter {   if &quot;IIS&quot; in [tags] {     dissect {       mapping =&gt; {         &quot;message&quot; =&gt; &quot;%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}&quot;       }       remove_field =&gt; [&quot;message&quot;]       add_field =&gt; { &quot;application&quot; =&gt; &quot;exchange&quot; }     }   } }  <\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Logstash \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/event-dependent-configuration.html#conditionals\">\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432 \u043f\u043b\u0430\u0433\u0438\u043d dissect \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b filebeat \u0442\u044d\u0433\u043e\u043c <code>IIS<\/code>. \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u044b \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0441 \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>message<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0437 \u043b\u043e\u0433\u0430, \u0438 \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u043e\u0433\u0438.<\/p>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0442\u0440\u044d\u043a\u0438\u043d\u0433\u0430 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d csv, \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f:<\/p>\n<pre><code class=\"plaintext\">filter {   if &quot;Tracking&quot; in [tags] {     csv {       columns =&gt; [&quot;date-time&quot;,&quot;client-ip&quot;,&quot;client-hostname&quot;,&quot;server-ip&quot;,&quot;server-hostname&quot;,&quot;source-context&quot;,&quot;connector-id&quot;,&quot;source&quot;,&quot;event-id&quot;,&quot;internal-message-id&quot;,&quot;message-id&quot;,&quot;network-message-id&quot;,&quot;recipient-address&quot;,&quot;recipient-status&quot;,&quot;total-bytes&quot;,&quot;recipient-count&quot;,&quot;related-recipient-address&quot;,&quot;reference&quot;,&quot;message-subject&quot;,&quot;sender-address&quot;,&quot;return-path&quot;,&quot;message-info&quot;,&quot;directionality&quot;,&quot;tenant-id&quot;,&quot;original-client-ip&quot;,&quot;original-server-ip&quot;,&quot;custom-data&quot;,&quot;transport-traffic-type&quot;,&quot;log-id&quot;,&quot;schema-version&quot;]       remove_field =&gt; [&quot;message&quot;, &quot;tenant-id&quot;, &quot;schema-version&quot;]       add_field =&gt; { &quot;application&quot; =&gt; &quot;exchange&quot; }     } } <\/code><\/pre>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u044b \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0441 \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>message<\/code> (\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u044f <code>tenant-id<\/code> \u0438 <code>schema-version<\/code>), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0437 \u043b\u043e\u0433\u0430, \u0438 \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u043e\u0433\u0438.<\/p>\n<p>  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0441\u0442\u0430\u0434\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Kibana. \u041d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e:<\/p>\n<p>  \u2022 \u0427\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043d\u0438\u043c\u0438. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u043f\u043e\u043b\u044f <code>time-taken<\/code> \u043b\u043e\u0433\u0430 IIS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u044f <code>recipient-count<\/code> \u0438 <code>total-bites<\/code> \u043b\u043e\u0433\u0430 Tracking.<br \/>  \u2022 \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0442\u0430\u043c\u043f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u0430, \u0430 \u043d\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<br \/>  \u2022 \u041f\u043e\u043b\u0435 <code>recipient-address<\/code> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u0441 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0438\u0441\u0435\u043c.<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0433\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u043e\u0432.<\/p>\n<h3>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439<\/h3>\n<p>  \u041f\u043b\u0430\u0433\u0438\u043d dissect \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u0446\u0438\u044e <code>convert_datatype<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"plaintext\">dissect {   \u2026   convert_datatype =&gt; { &quot;time-taken&quot; =&gt; &quot;int&quot; }   \u2026 } <\/code><\/pre>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 \u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443. Null-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u043e\u043f\u0446\u0438\u044f \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u043b\u043e\u0433\u043e\u0432 \u0442\u0440\u044d\u043a\u0438\u043d\u0433\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 convert \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u043b\u044f <code>recipient-count<\/code> \u0438 <code>total-bites<\/code> \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c\u0438. \u0414\u043b\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-mutate.html\">mutate<\/a>:<\/p>\n<pre><code class=\"plaintext\">mutate {   convert =&gt; [ &quot;total-bytes&quot;, &quot;integer&quot; ]   convert =&gt; [ &quot;recipient-count&quot;, &quot;integer&quot; ] } <\/code><\/pre>\n<p>  <\/p>\n<h3>\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 recipient_address \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439<\/h3>\n<p>  \u042d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 mutate:<\/p>\n<pre><code class=\"plaintext\">mutate {   split =&gt; [&quot;recipient_address&quot;, &quot;;&quot;] } <\/code><\/pre>\n<p>  <\/p>\n<h3>\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c timestamp<\/h3>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0442\u0440\u044d\u043a\u0438\u043d\u0433\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-date.html\">date<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 <code>timestamp<\/code> \u0434\u0430\u0442\u0443 \u0438 \u0432\u0440\u0435\u043c\u044f \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u0437 \u043f\u043e\u043b\u044f <code>date-time<\/code>:<\/p>\n<pre><code class=\"plaintext\">date {   match =&gt; [ &quot;date-time&quot;, &quot;ISO8601&quot; ]   timezone =&gt; &quot;Europe\/Moscow&quot;   remove_field =&gt; [ &quot;date-time&quot; ] } <\/code><\/pre>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 IIS \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0435\u0439 <code>date<\/code> \u0438 <code>time<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 mutate, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0437\u043e\u043d\u0443 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0442\u0430\u043c\u043f \u0432 <code>timestamp<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 date:<\/p>\n<pre><code class=\"plaintext\">mutate {    add_field =&gt; { &quot;data-time&quot; =&gt; &quot;%{date} %{time}&quot; }   remove_field =&gt; [ &quot;date&quot;, &quot;time&quot; ] } date {    match =&gt; [ &quot;data-time&quot;, &quot;YYYY-MM-dd HH:mm:ss&quot; ]   timezone =&gt; &quot;UTC&quot;   remove_field =&gt; [ &quot;data-time&quot; ] } <\/code><\/pre>\n<p>  <\/p>\n<h2>Output<\/h2>\n<p>  \u0421\u0435\u043a\u0446\u0438\u044f output \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a \u043b\u043e\u0433\u043e\u0432. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 Elastic \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-outputs-elasticsearch.html\">elasticsearch<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u043c\u0435\u043d\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430:<\/p>\n<pre><code class=\"plaintext\">output {   elasticsearch {     hosts =&gt; [&quot;127.0.0.1:9200&quot;, &quot;127.0.0.2:9200&quot;]     manage_template =&gt; false     index =&gt; &quot;Exchange-%{+YYYY.MM.dd}&quot;   } } <\/code><\/pre>\n<p>  <\/p>\n<h2>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h2>\n<p>  \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">input {   beats {     port =&gt; 5044   } }   filter {   if &quot;IIS&quot; in [tags] {     dissect {       mapping =&gt; {         &quot;message&quot; =&gt; &quot;%{date} %{time} %{s-ip} %{cs-method} %{cs-uri-stem} %{cs-uri-query} %{s-port} %{cs-username} %{c-ip} %{cs(User-Agent)} %{cs(Referer)} %{sc-status} %{sc-substatus} %{sc-win32-status} %{time-taken}&quot;       }       remove_field =&gt; [&quot;message&quot;]       add_field =&gt; { &quot;application&quot; =&gt; &quot;exchange&quot; }       convert_datatype =&gt; { &quot;time-taken&quot; =&gt; &quot;int&quot; }     }     mutate {        add_field =&gt; { &quot;data-time&quot; =&gt; &quot;%{date} %{time}&quot; }       remove_field =&gt; [ &quot;date&quot;, &quot;time&quot; ]     }     date {        match =&gt; [ &quot;data-time&quot;, &quot;YYYY-MM-dd HH:mm:ss&quot; ]       timezone =&gt; &quot;UTC&quot;       remove_field =&gt; [ &quot;data-time&quot; ]     }   }   if &quot;Tracking&quot; in [tags] {     csv {       columns =&gt; [&quot;date-time&quot;,&quot;client-ip&quot;,&quot;client-hostname&quot;,&quot;server-ip&quot;,&quot;server-hostname&quot;,&quot;source-context&quot;,&quot;connector-id&quot;,&quot;source&quot;,&quot;event-id&quot;,&quot;internal-message-id&quot;,&quot;message-id&quot;,&quot;network-message-id&quot;,&quot;recipient-address&quot;,&quot;recipient-status&quot;,&quot;total-bytes&quot;,&quot;recipient-count&quot;,&quot;related-recipient-address&quot;,&quot;reference&quot;,&quot;message-subject&quot;,&quot;sender-address&quot;,&quot;return-path&quot;,&quot;message-info&quot;,&quot;directionality&quot;,&quot;tenant-id&quot;,&quot;original-client-ip&quot;,&quot;original-server-ip&quot;,&quot;custom-data&quot;,&quot;transport-traffic-type&quot;,&quot;log-id&quot;,&quot;schema-version&quot;]       remove_field =&gt; [&quot;message&quot;, &quot;tenant-id&quot;, &quot;schema-version&quot;]       add_field =&gt; { &quot;application&quot; =&gt; &quot;exchange&quot; }     }     mutate {       convert =&gt; [ &quot;total-bytes&quot;, &quot;integer&quot; ]       convert =&gt; [ &quot;recipient-count&quot;, &quot;integer&quot; ]       split =&gt; [&quot;recipient_address&quot;, &quot;;&quot;]     }     date {       match =&gt; [ &quot;date-time&quot;, &quot;ISO8601&quot; ]       timezone =&gt; &quot;Europe\/Moscow&quot;       remove_field =&gt; [ &quot;date-time&quot; ]     }   } }   output {   elasticsearch {     hosts =&gt; [&quot;127.0.0.1:9200&quot;, &quot;127.0.0.2:9200&quot;]     manage_template =&gt; false     index =&gt; &quot;Exchange-%{+YYYY.MM.dd}&quot;   } } <\/code><\/pre>\n<p>  <b>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:<\/b><\/p>\n<p>  \u2022 <a href=\"https:\/\/stackoverflow.com\/questions\/52511778\/how-to-install-openjdk-11-on-windows\">How to install OpenJDK 11 on Windows?<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/downloads\/logstash\">Download Logstash<\/a><br \/>  \u2022 <a href=\"https:\/\/github.com\/elastic\/elasticsearch\/issues\/36828\">Elastic uses depricated option UseConcMarkSweepGC #36828<\/a><br \/>  \u2022 <a href=\"http:\/\/nssm.cc\/\">NSSM<\/a><br \/>  \u2022 <a href=\"http:\/\/https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/persistent-queues.html\">Persistent Queues<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-inputs-beats.html\">Beats input plugin<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/blog\/logstash-dude-wheres-my-chainsaw-i-need-to-dissect-my-logs\">Logstash Dude, where&#8217;s my chainsaw? I need to dissect my logs<\/a><br \/>  \u2022 <a href=\"http:\/\/https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-dissect.html\">Dissect filter plugin<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/event-dependent-configuration.html#conditionals\">Conditionals<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-mutate.html\">Mutate filter plugin<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-date.html\">Date filter plugin<\/a><br \/>  \u2022 <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-outputs-elasticsearch.html\">Elasticsearch output plugin<\/a><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/520378\/\"> https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/520378\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/520378\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ll\/jv\/aj\/lljvajgsr1rqmocexk5axw3-atg.png\"><\/p>\n<p>  \u042f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0432\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c Exchange \u0438 ELK (\u043d\u0430\u0447\u0430\u043b\u043e <a href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/516694\/\">\u0442\u0443\u0442<\/a>). \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u0431\u0435\u0437 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0433\u043e\u0432. \u041d\u0430 \u044d\u0442\u043e \u0440\u0430\u0437 \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 Exchange \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 Logstash \u0438 Kibana.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-310423","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/310423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=310423"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/310423\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=310423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=310423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=310423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}