编译安装日志分析平台 elk + beats(个人感觉不错1)
這是elk系列的第1篇文章
本文主要描述如何安裝和配置elk, 并利用beats來取出數據推送到logstash,使之正常提供服務
流程圖
開始之前
假設您已經擁有一臺內存至少1G的linux計算機或虛擬機并且安裝了screen命令
并且您應該了解screen命令的使用 , 如果不了解您可以粗略的看一下?screen簡明教程
下載安裝包
java?http://www.oracle.com/technetwork/java/javase/downloads/index.html
elk?https://www.elastic.co/cn/products
- 下載安裝包
-
傳輸到服務器中 , 如果是linux里直接下載則可以忽略這一步
scp .\jdk-8u181-linux-x64.tar.gz \.\kibana-6.3.2-linux-x86_64.tar.gz \ .\logstash-6.3.2.tar.gz \.\elasticsearch-6.3.2.tar.gz \root@192.168.1.147:/optBash
準備安裝
接下來登陸到linux環境
ssh root@192.168.1.147
解壓剛才傳輸的文件,并把刪除原文件
cd /opt/ && ls | xargs -I {} tar xzvf {} && rm -f ./*.tar.gzBash
因為es是不能運行在root用戶的 , 即使可以也不建議使用 root
因此, 我們可以單獨創建一個用戶來運行elk
Bash
給elk的文件目錄變更用戶
chown -R elk:elk ./*Bash
開始安裝
請自行更換 /opt 為你的實際目錄
java 8
把以下幾行添加到 /etc/bashrc 的末尾
export JAVA_HOME=/opt/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarBash
使環境變量生效
source /etc/bashrcBash
驗證安裝是否成功
java -versionBash
此時java安裝成功
elasticsearch
切換到elk用戶
su elkBash
使用 screen 開始一個新會話
screen -S esBash
修改默認的配置文件
sed -i "s/#\ network.host:\ 192.168.0.1/network.host:\ 0.0.0.0/" /opt/elasticsearch-6.3.2/config/elasticsearch.yml sed -i "s/#\ http.port/http.port/" /opt/elasticsearch-6.3.2/config/elasticsearch.ymlBash
啟動es
/opt/elasticsearch-6.3.2/bin/elasticsearchBash
如果遇到這個錯誤
執行命令:
su root sysctl -w vm.max_map_count=262144 sysctl -a | grep vm.max_map_count exitBash
再嘗試啟動 , 如果遇到這個錯誤
回到root賬戶 , 修改/etc/security/limits.conf 添加如下行并重啟計算機 :
elk hard nofile 262144 elk soft nofile 262144Bash
再嘗試啟動 , 一般會看到這個東西
此時es啟動成功 , 然后我們利用curl測試一下
curl 127.0.0.1:9200Bash
如果返回這個東西說明真的成功了 , 返回別的這里不討論 , 一律視為失敗 , 請參考日志進行排錯
如果需要在瀏覽器訪問, 還需要關閉防火墻和selinux
su root systemctl stop firewalld.service setenforce 0 exitBash
瀏覽器訪問
至此es安裝和啟動完畢
我們用組合鍵回到默認會話
Ctrl A + dBash
logstash
logstash 安裝和配置比較簡單 , 但是需要創建一個文件
創建輸入輸出配置文件
tee /opt/logstash-6.3.2/config/logstash-io.conf <<-'EOF' input {file {path => "/var/log/dev.log"start_position => "beginning"} }output { elasticsearch { hosts => ["192.168.1.147:9200"]} } EOFnginx
默認配置文件在 /opt/logstash-6.3.2/config/logstash.yml 可以按需修改*
嘗試啟動logstash
screen -S logstash /opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.confBash
如果沒有error , 就啟動完成了
如果需要測試是否真的啟動完成 , natstat 和 telnet 這兩個命令都可以
telnet 127.0.0.1 9600 || netstat -anp | gerp 9600Bash
至此logstash安裝和啟動完畢
我們用組合鍵回到默認會話
Ctrl A + dBash
kibana
kibana 只需要修改基礎配置文件即可啟動 , 并進行瀏覽器測試
修改配置文件
sed -i "s/#elasticsearch.url:\ \"http:\/\/localhost:9200\"/elasticsearch.url:\ \"http:\/\/192.168.1.147:9200\"/" /opt/kibana-6.3.2-linux-x86_64/config/kibana.yml sed -i "s/#server.host:\ \"localhost\"/server.host:\ \"192.168.1.147\"/" /opt/kibana-6.3.2-linux-x86_64/config/kibana.ymlBash
啟動
/opt/kibana-6.3.2-linux-x86_64/bin/kibana返回如下信息則說明啟動成功
打開瀏覽器 輸入http://192.168.1.147:5601 可以看到如下畫面
至此kibana安裝和啟動完畢
我們用組合鍵回到默認會話
Ctrl A + dBash
測試
如果順利的到了這里 , 那么elk其實已經可以使用了 , filebeat不是必須的.
我們找來一些日志驗證一下前面工作的正確性
- 上傳日志到服務器 : scp ./dev.log root@192.168.1.147:/var/log/
Bash
- 這是一份普通的nginx日志
-
用screen -r回到logstash會話
-
界面一閃而過 , 回到了這里
-
ctrl +c 停止它按上方向鍵 , 再啟動它
-
稍候片刻啟動完成, 回到kibana
-
在首頁創建通配符索引 logstash*
-
如果next是可點擊的 , 那就到了這里
-
選擇@timestamp 繼續下一步
-
然后就開啟ELK的世界了
- 首頁如下
filebeat
取得安裝包
和準備工作一樣 , 從官網獲得filebeat的安裝包并解壓
修改配置
修改filebeat的配置文件 , 和上面一樣我們使用sed修改配置文件
# 開啟log輸入 sed -i "s/enabled: false/enabled: true/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml# log存放的位置 , 位置分隔符 / 需要用 \ 轉義 , dev.log 可以修改為 *.log 來掃描目錄 sed -i "s/-\ \/var\/log\/*.log/\/var\/log\/dev.log/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml# 關閉默認的輸出到es sed -i "s/output.elasticsearch:/# output.elasticsearch:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml sed -i "s/hosts:/# hosts:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml# 打開輸入到logstash sed -i "s/#output.logstash:/output.logstash:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml sed -i "s/##\ hosts:/hosts:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.ymlBash
我們還需要修改 logstash 的配置文件才能使用 filebeat 來自動捕獲數據
修改logstash的輸入輸出配置
為了避免你已經手動修改了配置文件 , 我們不再使用sed為改為手動修改配置文件
使用你喜愛的編輯器打開 /opt/logstash-6.3.2/config/logstash-io.conf , 刪除掉input代碼塊并在原file代碼塊的位置 ,增加如下內容并保存
beats{port => 5044 }nginx
最終配置文件大概會是這個樣子
input {beats{port => 5044} }output { elasticsearch { hosts => ["192.168.1.147:9200"]} }nginx
重啟logstash
screen -r logstash ^C^C^C^C.... /opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.confBash
如果正常啟動并進入監聽狀態 , 我們回到剛才的會話
screen -r beatsBash
啟動filebeat
/opt/filebeat-6.3.2-linux-x86_64/filebeat -e -c /opt/filebeat-6.3.2-linux-x86_64/filebeat.ymlBash
如果配置正確 , 那么一般不會遇到什么問題
測試filebeat
因為我們已經在 /var/log/dev.log 這份配置文件 , 那么我們就增加它的內容 , 來測試filebeat是否正常掃描和輸出到logstash
里使用死循環來增加日志內容 , 數據是重復的 , 僅可用于驗證filebeat的工作
第三行的 while 是每隔1秒就復制 tmp.log 的內容到 dev.log 的末尾
您隨時可以用 ^C [Ctrl +c] 來終止復制過程
Bash
然后我們查看瀏覽器的kibana , 右上角倒數第二個按鈕, 開啟自動刷新并選擇五秒
如果一切無誤, 坐等5秒 , 就會發現有新的數據展示在頁面上
此時可以明顯的觀察到 , 紅框的時間部分每隔5秒就會變化一次
因為我們已經保證了沒有 filebeat 時elk平臺工作是正常的
那么如果現在elk不再正常工作了 , 就從 filebeat 大節檢查和排錯 ,問題最大可能是sed在你的計算機中沒有生效
那么就檢查配置文件開始 debug 吧
同時也歡迎您在本文章下留言說明你遇到的問題
大功告成
來源:https://system.out.println.org/?p=1118
總結
以上是生活随笔為你收集整理的编译安装日志分析平台 elk + beats(个人感觉不错1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P2P爆雷后董事长开直播怎么回事 回应爱
- 下一篇: ELK自动安装脚本