Centos7上搭建ELK


     在上一篇 ELK系列之理論篇 中介紹了ELK,以及Elasticsearch,Logstash,Kibana之間的相互關系,優勢。大家腦海中應該有了一定的認識,接下來我將用一台全新的CentOS7系統來安裝ELK環境,我將盡可能的列出詳細的安裝步驟,以及在安裝過程中遇到的問題和處理方案,供大家學習借鑒。如果有不妥之處還請指教。


環境准備

  •  騰訊雲服務器

           系統:Centos7  2核 4G

  • Xshell7

           用來連接服務器的工具,網上有綠色版,在這里我就不放連接了,相信大家都會在度娘里找到


一, 安裝Java jdk

     由於Logstash 僅支持java8 所以我們安裝Java 8的版本

          1.  打開Oracle 官網,https://www.oracle.com/java/technologies/downloads/

          2. 找到Java8 需要的rpm 包,下載到本地

java8x64rpm

          3. 通過xshell 上傳到CentOS服務器上

rz -y

          4. 在xshell中安裝rpm包(需要在上傳安裝包的目錄下)

rpm -ivh java8安裝包名稱

          5. 安裝完成,查看是否成功

java –version

         出現下面內容就說明java安裝成功了

         image


二, 安裝Elasticsearch

      2.1  下載rpm安裝包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.rpm

    

      2.2  安裝rpm

rpm -ivh elasticsearch-6.1.0.rpm

            查看安裝目錄,記住這個目錄后面會經常用  (一般會安裝在/usr/share/elasticsearch/

rpm -ql elasticsearch


     2.3 設置elasticsearch 數據存放的目錄

# 返回根目錄
cd /

# 創建/data/es-data 文件夾
mkdir -p /data/es-data

# 給文件夾 設置應用所有者權限
chown -R elasticsearch:elasticsearch /data/es-data


     2.4  設置elasticsearch 日志log存放目錄

# 返回根目錄
cd /

# 創建/log/es-log 文件夾
mkdir -p /log/es-log

# 給文件夾 設置應用所有者權限
chown -R elasticsearch:elasticsearch /log/es-log


     2.5 修改elasticsearch 的配置文件elasticsearch.yml

vi /etc/elasticsearch/elasticsearch.yml
           根據下面內容進行修改,i編輯,:wq 保存
#設置data存放的路徑為/data/es-data
path.data: /data/es-data

#設置logs日志的路徑為/log/es-log
path.logs: /log/es-log

#設置內存不使用交換分區
bootstrap.memory_lock: false
#配置了bootstrap.memory_lock為true時反而會引發9200不會被監聽,原因不明

#設置允許所有ip可以連接該elasticsearch
network.host: 0.0.0.0

#開啟監聽的端口為9200
http.port: 9200

#增加新的參數,為了讓elasticsearch-head插件可以訪問es (5.x版本,如果沒有可以自己手動加)
http.cors.enabled: true
http.cors.allow-origin: "*"


      2.6  systemctl 命令啟動Elasticsearch 服務,並設置為開機啟動

# 啟動
systemctl start elasticsearch

# 設置開機啟動
systemctl enable elasticsearch

# 查看狀態
systemctl status elasticsearch
           systemctl 是linux里邊的 系統軟件管理指令,常用的功能還有 : stop 停止服務;restart 重啟服務


     2.7  Elasticsearch 默認的端口是9200 需要開啟服務器防火牆端口9200

             因為我用的是騰訊雲服務器,開啟端口需要登錄雲服務管理面板設置,防火牆里邊添加tcp端口9200

             image

             自己的服務器,可以直接設置防火牆端口

firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --reload

      

       2.8  測試端口是否正常啟動

              * xshell 下可以用curl:

curl http:127.0.0.1:9200

              * 也可以在windows 下用 telnet

# 在cmd中 輸入   成功后會跳轉到另外一個窗口
telnet ip 9200



三, 安裝Logstash

      3.1, 下載logstatsh 的rpm包


      3.2,安裝

rpm -ivh logstash-6.1.0.rpm


      3.3,創建logstash 的數據存放目錄 和  日志log 存放目錄

# 進入根目錄
cd /

# data存放目錄 /data/ls-data
mkdir -p /data/ls-data
#授權目錄權限給logstash
chown -R logstash:logstash /data/ls-data

# log 存放目錄 /log/ls-log
mkdir -p /log/ls-log
#授權目錄權限給logstash
chown -R logstash:logstash /log/ls-log


      3.4,修改logstash 的配置文件,設置數據文件目錄 log目錄

vi /etc/logstash/logstash.yml

              設置如下內容

# 設置數據的存儲路徑為/data/ls-data
path.data: /data/ls-data

# 設置管道配置文件路徑為/etc/logstash/conf.d
path.config: /etc/logstash/conf.d

# 設置日志文件的存儲路徑為/log/ls-log
path.logs: /log/ls-log

             PS:管道配置文件 很重要,logstash本質就是一個數據處理過濾轉發的工具,內部實現是定義一個個管道,每個管道里邊包括輸入input,過濾處理filter,輸出output,接收消息處理消息,輸出消息給elasticsearch.

             Logstash中文文檔


      3.5,添加一個管道配置文件

            在目錄/etc/logstash/conf.d 下 新建一個test.conf,寫入如下內容

input {
    tcp {
      port => "5044"
      codec => "json_lines"
    }
}
filter {
    grok {
      match => {
        "message" => "%{HTTPDATE:mydate}\s+%{IP:myIP}"
      }
    }

    mutate {
      # 更新字段值 字段沒有則新增
      replace => {
        "addField" => "老板真帥"
      }
    }



}
output {
   elasticsearch {
   hosts => "localhost:9200"
   index => "logstash-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }   # 這是將輸出打印在屏幕上,可以注釋掉
}

      test.conf管道配置文件包含了標准的 輸入,過濾,輸出。logstash在啟動的時候默認會加載/etc/logstash/conf.d目錄下的conf文件,管道配置文件可以有多個。


      3.6,啟動服務

# 啟動
systemctl start logstash
#設置開機啟動
systemctl enable logstash
#查看狀態
systemctl status logstash


      3.7,測試是否部署成功

# 查看安裝目錄  默認在/usr/share/logstash
rpm -ql logstash
# 在系統命令目錄下創建一個 logstash的軟連接
ln -s /usr/share/logstash/bin/logstash /bin/
#測試 logstash
logstash -e 'input  { stdin {} } output  { stdout {} }'

          一兩秒鍾后等出現“waiting for input:” 輸入任意字符回車


         image

         出現同樣的輸出 就說明成功了(PS:上面的命令 就是接收輸入stdin 並且不做處理直接輸出原信息到控制台 stdout

         可以同時按 Ctrl+C 退出當前測試 到主機環境

 


三, 安裝Kibana

      3.1, 下載kibana 的rpm包

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.1.0-x86_64.rpm

     

      3.2,安裝

rpm -ivh kibana-6.1.0-x86_64.rpm


      3.3,修改配置文件

# kibana 默認安裝在 /usr/share/kibana
# 配置文件默認放在 /etc/kibana/
vi /etc/kibana/kibana.yml
  •    修改端口號為 5601  
  •    允許所有ip可訪問 0.0.0.0   
  •     配置連接的elasticsearch地址  http://localhost:9200
  •     配置索引名稱 .kibana
server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://localhost:9200"

kibana.index: ".kibana"


      3.4,啟動服務

systemctl start kibana
systemctl enable kibana

            通過命令查看kibana運行狀態  systemctl status kibana


      3.5,開啟端口5601

             雲服務器登錄控制台,添加tcp 端口 5601

             image

             在自己的主機環境下的話,可以通過防火牆命令開啟端口

firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd –reload



四, 測試ELK部署是否 成功

      訪問kibana

      kibana首頁

      能看到這個就說明成功了哈哈哈

      按照kibana官方教程,需要先創建索引,再根據創建的索引查詢對應的數據

      image

      不過我在創建索引的時候發現無法在頁面上添加操作,一直報錯,大概意思是“沒有索引數據無法創建選擇索引”,查了好久才明白,原來是需要先寫一些日志進去到elasticsearch中,kibana才能去創建索引,

       解決辦法:

        通過命令的方式先寫入一些日志(通過logstash 接受控制台輸入,並發送輸入信息到elasticsearch,elasticsearch連接地址為 localhost:9200)

logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug }}'

    

   等待控制台上出現“The stdin plugin is now waiting for input”時輸入 hello ,下面會跳出logstash轉發的日志信息

    image

    再打開kibana ,就可以配置索引了,創建完索引,打開查詢面板就能看到剛才發送的日志信息了

    image



     以上,我們的整個ELK環境已經部署成功了!當然了,要把生產環境的日志收集到elk中還要使用Nlog,FileBeat等工具。在下一篇中我將介紹 如何配置Nlog 將日志發送到elk中,以及網紅工具FileBeat。

      馬上要過年了,提前祝福大家虎年行大運,代碼無bug!!


【騰訊雲】熱門雲產品首單特惠秒殺,1核2G雲服務器首年38元

【騰訊雲】代金券、域名提前享,更多爆品、新春好禮2月中旬開啟,敬請期待!


參考文檔:

centos7 部署ELK日志系統

https://blog.csdn.net/weixin_44062339/article/details/103221301

logstash中文文檔

https://www.jianshu.com/p/266352af1f81


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM