天天看點

ELK日志分析平台搭建全程

環境:

    OS:Centos 6.6 

elasticsearch-5.6.3.tar.gz

jdk-8u151-linux-x64.tar.gz

kibana-5.6.3-linux-x86_64.tar.gz

logstash-5.6.3.tar.gz

node-v6.11.4-linux-x64.tar.xz

一、準備環境:

1、建立使用者,并給安裝目錄設定權限

<code>[root@1inux ~]# groupadd elk</code>

<code>[root@1inux ~]# useradd -g elk elk</code>

<code>[root@1inux ~]# mkdir /elk</code>

<code>[root@1inux ~]# chown -R elk:elk /elk</code>

修改系統某些參數值:【如不修改啟動時會報錯】

<code>[root@1inux ~]# vim /etc/security/limits.conf  </code><code>//添加一下内容</code>

<code>---------------------------</code>

<code>* soft nofile </code><code>65536</code>

<code>* hard nofile </code><code>65536</code>

<code>* soft nproc </code><code>2048</code>

<code>* hard nproc </code><code>4096</code>

<code>----------------------------</code>

<code>[root@bogon elk]# vim /etc/security/limits.d/</code><code>90</code><code>-nproc.conf  </code><code>//添加如下内容</code>

<code>*          soft    nproc     </code><code>2048</code>

<code>[root@1inux ~]# vim /etc/sysctl.conf </code><code>// 添加以下内容</code>

<code>------------------</code>

<code>fs.file-</code><code>max</code><code>=</code><code>65536</code>

<code>vm.max_map_count=</code><code>655360</code>

<code>----------------------</code>

<code>[root@1inux ~]# sysctl -p     </code><code>// 檢視vm.max_map_count 值是否修改成功</code>

<code>修改程序數:</code>

<code>[root@1inux ~]# ulimit -u </code><code>2048</code>

安裝Java

[root@1inux elk]# mkdir /usr/local/Java

[root@1inux elk]# tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/Java

添加環境變量:

[root@1inux jdk1.8.0_151]# vim /etc/profile

添加如下:

<code>export JAVA_HOME=/usr/local/Java/jdk1.8.0_151</code>

<code>export PATH=$PATH:$JAVA_HOME/bin</code>

<code>exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPAT</code>

重新加載

[root@1inux jdk1.8.0_151]# source /etc/profile

檢視是否安裝成功:

<code>[root@1inux jdk1</code><code>.8.</code><code>0_151]# java -version</code>

<code>java version "</code><code>1.8.</code><code>0_151"</code>

<code>Java(TM) SE Runtime Environment (build </code><code>1.8.</code><code>0_151-b12)</code>

<code>Java HotSpot(TM) </code><code>64</code><code>-Bit Server VM (build </code><code>25.151</code><code>-b12, mixed mode)</code>

二:安裝ELK

1、安裝elasticsearch

<code># tar -zxvf elasticsearch-5.6.3.tar.gz</code>

<code>修改配置檔案:</code>

<code>vim ./elasticsearch-5.6.3/config/elasticsearch.yml</code>

<code>//設定監聽IP及監聽端口:</code>

<code>network.host: 0.0.0.0    //   設定監聽IP</code>

<code>http.port: 9200    //設定監聽端口</code>

注:elasticsearch不能使用root使用者啟動

啟動elasticsearch    //第一次啟動有點慢:

<code>[elk@1inux root]$ cd /elk/elasticsearch-5.6.3/bin</code>

<code>[elk@1inux bin]$ ./elasticsearch</code>

<code>然後檢視端口:</code>

<code>[root@1inux ~]# ss -tnl | grep 9200</code>

<code>LISTEN     0      128      ::ffff:192.168.159.130:9200                    :::*     </code>

<code>[root@1inux ~]#</code>

1.1安裝部署head

編輯elasticsearch配置檔案做如下修改:

<code># vim /elk/elasticsearch-5.6.3/config/elasticsearch.yml</code>

<code>node.name: node-1inux    //修改叢集名字</code>

<code>cluster.name: my-1inux    //修改節點名字</code>

<code>//增加新的參數,這樣head插件可以通路es</code>

<code>http.cors.enabled: true</code>

<code>http.cors.allow-origin: </code><code>"*"</code>

1)安裝git

<code>[root@</code><code>1</code><code>inux /]# yum -y install git</code>

下載下傳代碼:

<code>[root@</code><code>1</code><code>inux elk]# git clone git://github.com/mobz/elasticsearch-head.git</code>

修改head目錄權限:

<code>[root@1inux elk]# chown -R elk:elk elasticsearch-head</code>

2)下載下傳安裝node

<a href="https://nodejs.org/en/download/" target="_blank">https://nodejs.org/en/download/</a>

然後下載下傳xz進行解壓

<code># yum -y install xz</code>

<code>[root@1inux elk]# xz -d node-v6.11.4-linux-x64.tar.xz</code>

<code>[root@1inux elk]# tar -xvf node-v6.11.4-linux-x64.tar</code>

添加node的環境變量

<code>[root@</code><code>1</code><code>inux node-v</code><code>6.11</code><code>.</code><code>4</code><code>-linux-x</code><code>64</code><code>]# vim /etc/profile</code>

<code>添加如下:</code>

<code>export NODE_HOME=/elk/node-v</code><code>6.11</code><code>.</code><code>4</code><code>-linux-x</code><code>64</code>

<code>export PATH=$PATH:$NODE_HOME/bin</code>

<code>重新加載</code>

<code>[root@</code><code>1</code><code>inux node-v</code><code>6.11</code><code>.</code><code>4</code><code>-linux-x</code><code>64</code><code>]# source /etc/profile</code>

檢視是否生效:

<code>[root@1inux node-v6.11.4-linux-x64]# echo $NODE_HOME</code>

<code>/elk/node-v6.11.4-linux-x64</code>

<code>[root@1inux node-v6.11.4-linux-x64]# node -v</code>

<code>v6.11.4</code>

<code>[root@1inux node-v6.11.4-linux-x64]# npm -v</code>

<code>3.10.10</code>

<code>切換國内鏡像源:</code>

<code>npm config </code><code>set</code> <code>registry https:</code><code>//registry.npm.taobao.org</code>

<code>npm config </code><code>set</code> <code>disturl https:</code><code>//npm.taobao.org/dist</code>

3)安裝grunt

<code>[root@1inux node_modules]# npm install -g grunt</code>

<code>[root@1inux node-v6.11.4-linux-x64]# npm install grunt-cli -g</code>

<code>[root@1inux node-v6</code><code>.11.4</code><code>-linux-x64]# grunt -version</code>

<code>grunt-cli v1</code><code>.2.0</code>

修改伺服器監聽位址

<code>[root@1inux elk]# vim /elk/elasticsearch-head/Gruntfile.js</code>

<code>hostname: '*',</code>

<a href="https://s4.51cto.com/oss/201710/26/b6856438dccecb866b7961551b3b77da.png-wh_500x0-wm_3-wmp_4-s_2069812016.png" target="_blank"></a>

修改連結位址:

<code>[root@1inux elk]# vim /elk/elasticsearch-head/_site/app.js </code>

<code>this</code><code>.base_uri = </code><code>this</code><code>.config.base_uri || </code><code>this</code><code>.prefs.get(</code><code>"app-base_uri"</code><code>) || "</code>

<code>修改為:</code>

<code>this</code><code>.base_uri = </code><code>this</code><code>.config.base_uri || </code><code>this</code><code>.prefs.get(</code><code>"app-base_uri"</code><code>) || </code><code>"http://192.168.159.130:9200"</code><code>;</code>

運作head

<code>在head目錄中執行</code>

<code>[root@1inux elasticsearch-head]# npm install</code>

<code>啟動:</code>

<code>[root@1inux elasticsearch-head]# grunt server</code>

2、安裝kibana

[root@1inux elk]# tar -zxvf kibana-5.6.3-linux-x86_64.tar.gz 

<code>解壓後編輯配置檔案;</code>

<code>[root@</code><code>1</code><code>inux bin]# vim ../config/kibana.yml    //修改為 elasticsearch 的通路位址及端口如下</code>

<code>#server.host: </code><code>"localhost"</code>

<code>server.host: </code><code>"192.168.159.130"</code>

<code>#elasticsearch.url: </code><code>"http://localhost:9200"</code>

<code>elasticsearch.url: "</code>

然後儲存啟動如下;

<code>[root@1inux bin]# ./kibana</code>

<code>  </code><code>log</code>   <code>[15:45:26.952] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready</code>

<code>  </code><code>log</code>   <code>[15:45:27.067] [info][status][plugin:[email protected]] Status changed from uninitialized to yellow - Waiting for Elasticsearch</code>

<code>  </code><code>log</code>   <code>[15:45:27.118] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready</code>

<code>  </code><code>log</code>   <code>[15:45:27.136] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready</code>

<code>  </code><code>log</code>   <code>[15:45:27.566] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready</code>

<code>  </code><code>log</code>   <code>[15:45:27.697] [info][listening] Server running at http://localhost:5601</code>

<code>  </code><code>log</code>   <code>[15:45:27.699] [info][status][ui settings] Status changed from uninitialized to yellow - Elasticsearch plugin is yellow</code>

3、安裝 logstash-5.6.3.tar.gz

<code>[root@</code><code>1</code><code>inux elk]# tar -zxvf logstash</code><code>-5.6</code><code>.</code><code>3</code><code>.tar.gz</code>

<code>解壓後編輯配置檔案,然後就可以使用了</code>

編寫檔案

<code>編輯檔案 # vim /config/test.conf </code>

<code>input {</code>

<code>        </code><code>file {</code>

<code>                </code><code>type =&gt; </code><code>"nginx_log"</code>

<code>                </code><code>path =&gt; </code><code>"/var/log/nginx/access.log"</code>

<code>                </code><code>start_position =&gt; </code><code>"beginning"</code>

<code>                </code><code>}</code>

<code>}</code>

<code>output {</code>

<code>        </code><code>elasticsearch {</code>

<code>                </code><code>hosts =&gt; </code><code>"192.168.159.130"</code>

<code>                </code><code>index =&gt; </code><code>"1inux"</code>

<code>        </code><code>}</code>

<code>           </code><code>stdout{codec =&gt; rubydebug}</code>

<code>root@1inux bin]# ./logstash -f ../config/test.conf</code>

<a href="https://s4.51cto.com/oss/201710/26/9b7593a9fc94bf83b79322db8284d2d2.png-wh_500x0-wm_3-wmp_4-s_4003986616.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/2766b0401eb7b47255df7dab59c75c04.png-wh_500x0-wm_3-wmp_4-s_2486083621.png" target="_blank"></a>

報錯:

1、

<code>[root@bogon elk]# ./elasticsearch-</code><code>5.6.3</code><code>/bin/elasticsearch</code>

<code>[</code><code>2017</code><code>-</code><code>10</code><code>-25T06:</code><code>29</code><code>:</code><code>04</code><code>,</code><code>996</code><code>][WARN ][o</code><code>.</code><code>e</code><code>.</code><code>b</code><code>.</code><code>ElasticsearchUncaughtExceptionHandler] [] uncaught exception </code><code>in</code> <code>thread [main]</code>

<code>org</code><code>.</code><code>elasticsearch</code><code>.</code><code>bootstrap</code><code>.</code><code>StartupException: java</code><code>.</code><code>lang</code><code>.</code><code>RuntimeException: can </code><code>not</code> <code>run elasticsearch </code><code>as</code> <code>root</code>

解決方案:使用elk使用者啟動

問題二、

<code>ERROR: [4] bootstrap checks failed</code>

<code>[1]: max file descriptors [4096] </code><code>for</code> <code>elasticsearch process </code><code>is</code> <code>too low, increase to at least [65536]</code>

<code>[2]: max number of threads [1024] </code><code>for</code> <code>user [elk] </code><code>is</code> <code>too low, increase to at least [2048]</code>

<code>[3]: max </code><code>virtual</code> <code>memory areas vm.max_map_count [65530] </code><code>is</code> <code>too low, increase to at least [262144]</code>

<code>參考上面系統修改</code>

問題三、

<code>編輯elasticsearch配置檔案</code>

<code>[</code><code>4</code><code>]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk</code>

<code>在  bootstrap.memory_lock 下面 添加:</code>

<code>bootstrap.system_call_filter: false</code>

本文轉自 1inux 51CTO部落格,原文連結:http://blog.51cto.com/1inux/1976229