在上一篇 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 包,下載到本地
3. 通過xshell 上傳到CentOS服務器上
rz -y4. 在xshell中安裝rpm包(需要在上傳安裝包的目錄下)
rpm -ivh java8安裝包名稱5. 安裝完成,查看是否成功
java –version
出現下面內容就說明java安裝成功了
二, 安裝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
根據下面內容進行修改,i編輯,:wq 保存vi /etc/elasticsearch/elasticsearch.yml#設置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 是linux里邊的 系統軟件管理指令,常用的功能還有 : stop 停止服務;restart 重啟服務# 啟動 systemctl start elasticsearch # 設置開機啟動 systemctl enable elasticsearch # 查看狀態 systemctl status elasticsearch
2.7 Elasticsearch 默認的端口是9200 需要開啟服務器防火牆端口9200
因為我用的是騰訊雲服務器,開啟端口需要登錄雲服務管理面板設置,防火牆里邊添加tcp端口9200
自己的服務器,可以直接設置防火牆端口
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-logPS:管道配置文件 很重要,logstash本質就是一個數據處理過濾轉發的工具,內部實現是定義一個個管道,每個管道里邊包括輸入input,過濾處理filter,輸出output,接收消息處理消息,輸出消息給elasticsearch.
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:” 輸入任意字符回車
出現同樣的輸出 就說明成功了(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
在自己的主機環境下的話,可以通過防火牆命令開啟端口
firewall-cmd --add-port=5601/tcp --permanent firewall-cmd –reload
四, 測試ELK部署是否 成功
訪問kibana
能看到這個就說明成功了哈哈哈
按照kibana官方教程,需要先創建索引,再根據創建的索引查詢對應的數據
不過我在創建索引的時候發現無法在頁面上添加操作,一直報錯,大概意思是“沒有索引數據無法創建選擇索引”,查了好久才明白,原來是需要先寫一些日志進去到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轉發的日志信息
再打開kibana ,就可以配置索引了,創建完索引,打開查詢面板就能看到剛才發送的日志信息了
以上,我們的整個ELK環境已經部署成功了!當然了,要把生產環境的日志收集到elk中還要使用Nlog,FileBeat等工具。在下一篇中我將介紹 如何配置Nlog 將日志發送到elk中,以及網紅工具FileBeat。
馬上要過年了,提前祝福大家虎年行大運,代碼無bug!!
【騰訊雲】熱門雲產品首單特惠秒殺,1核2G雲服務器首年38元
【騰訊雲】代金券、域名提前享,更多爆品、新春好禮2月中旬開啟,敬請期待!
參考文檔:
https://blog.csdn.net/weixin_44062339/article/details/103221301