簡單的經過源碼安裝 elk 平臺

編譯安裝日誌分析平臺 elk + filebeat

首發連接 [ https://system.out.println.or...]()

開始以前

假設您已經擁有一臺內存至少1G的 linux計算機或虛擬機而且安裝了screen命令
而且您應該瞭解 screen命令的使用 , 若是不瞭解您能夠粗略的看一下 screen簡明教程

下載安裝包

java http://www.oracle.com/technetwork/java/javase/downloads/index.html
elk https://www.elastic.co/cn/products
  • 下載安裝包

  • 傳輸到服務器中 , 若是是linux裏直接下載則能夠忽略這一步html

    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:/opt

準備安裝

接下來登錄到linux環境
ssh root@192.168.1.147

解壓剛纔傳輸的文件,並把刪除原文件java

cd /opt/ && ls | xargs -I {} tar xzvf {} && rm -f ./*.tar.gz

由於es是不能運行在root用戶的 , 即便能夠也不建議使用 root
所以, 咱們能夠單首創建一個用戶來運行elklinux

useradd elk

給elk的文件目錄變動用戶nginx

chown -R elk:elk ./*

開始安裝

請自行更換 /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.jar

使環境變量生效bash

source /etc/bashrc

驗證安裝是否成功服務器

java -version

此時java安裝成功oracle

elasticsearch

切換到elk用戶ssh

su elk

使用 screen 開始一個新會話curl

screen -S es

修改默認的配置文件

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.yml

啓動es

/opt/elasticsearch-6.3.2/bin/elasticsearch

若是遇到這個錯誤

執行命令:

su root
sysctl -w vm.max_map_count=262144
sysctl -a | grep vm.max_map_count
exit

再嘗試啓動 , 若是遇到這個錯誤

回到root帳戶 , 修改/etc/security/limits.conf 添加以下行並重啓計算機 :

elk        hard    nofile           262144
elk        soft    nofile           262144

再嘗試啓動 , 通常會看到這個東西

此時es啓動成功 , 而後咱們利用curl測試一下

curl 127.0.0.1:9200

若是返回這個東西說明真的成功了 , 返回別的這裏不討論 , 一概視爲失敗 , 請參考日誌進行排錯

若是須要在瀏覽器訪問, 還須要關閉防火牆和selinux

su root
systemctl stop firewalld.service
setenforce 0
exit

瀏覽器訪問

至此es安裝和啓動完畢

咱們用組合鍵回到默認會話

Ctrl A + d

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"]
    }
}
EOF

默認配置文件在 /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.conf

若是沒有error , 就啓動完成了

若是須要測試是否真的啓動完成 , natstat 和 telnet 這兩個命令均可以

telnet 127.0.0.1 9600 || netstat -anp | gerp 9600

至此logstash安裝和啓動完畢

咱們用組合鍵回到默認會話

Ctrl A + d

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.yml

啓動

/opt/kibana-6.3.2-linux-x86_64/bin/kibana

返回以下信息則說明啓動成功

打開瀏覽器 輸入http://192.168.1.147:5601 能夠看到以下畫面

至此kibana安裝和啓動完畢

咱們用組合鍵回到默認會話

Ctrl A + d

測試

若是順利的到了這裏 , 那麼elk其實已經可使用了 , filebeat不是必須的.
咱們找來一些日誌驗證一下前面工做的正確性

  • 上傳日誌到服務器 :

    scp ./dev.log root@192.168.1.147:/var/log/
  • 這是一份普通的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存放的位置 , 位置分隔符 / 須要用 \ 轉義
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.yml

咱們還須要修改 logstash 的配置文件才能使用 filebeat 來自動捕獲數據

修改logstash的輸入輸出配置

爲了不你已經手動修改了配置文件 , 咱們再也不使用sed爲改成手動修改配置文件

使用你喜好的編輯器打開 /opt/logstash-6.3.2/config/logstash-io.conf , 刪除掉input代碼塊並在原file代碼塊的位置 ,增長以下內容並保存

beats{
    port => 5044
}

最終配置文件大概會是這個樣子

input {
    beats{
        port => 5044
    }
}

output {    
    elasticsearch {        
        hosts => ["192.168.1.147:9200"]
    }
}

重啓logstash

screen -r logstash
^C^C^C^C....
/opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.conf

若是正常啓動並進入監聽狀態 , 咱們回到剛纔的會話

screen -r beats

啓動filebeat

/opt/filebeat-6.3.2-linux-x86_64/filebeat -e -c /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

若是配置正確 , 那麼通常不會遇到什麼問題

測試filebeat

由於咱們已經在 /var/log/dev.log 這份配置文件 , 那麼咱們就增長它的內容 , 來測試filebeat是否正常掃描和輸出到logstash

裏使用死循環來增長日誌內容 , 數據是重複的 , 僅可用於驗證filebeat的工做
第三行的 while 是每隔1秒就複製 tmp.log 的內容到 dev.log 的末尾
您隨時能夠用 ^C [Ctrl +c] 來終止複製過程
su root
cp /var/log/dev.log /tmp/tmp.log
while true ; do cat /tmp/tmp.log >> /var/log/dev.log ; sleep 1 ; done

而後咱們查看瀏覽器的kibana , 右上角倒數第二個按鈕, 開啓自動刷新並選擇五秒

若是一切無誤, 坐等5秒 , 就會發現有新的數據展現在頁面上

此時能夠明顯的觀察到 , 紅框的時間部分每隔5秒就會變化一次

由於咱們已經保證了沒有 filebeat 時elk平臺工做是正常的
那麼若是如今elk再也不正常工做了 , 就從 filebeat 大節檢查和排錯 ,問題最大多是sed在你的計算機中沒有生效
那麼就檢查配置文件開始 debug 吧
同時也歡迎您在本文章下留言說明你遇到的問題

大功告成


擴展部分

-- 未完待續

x-pack

-- 未完待續

ik分詞

-- 未完待續

elasticsearch query language

-- 未完待續

使用語言級軟件, 向logstash推送數據的方法

TCP

-- 未完待續

UDP

-- 未完待續

相關文章
相關標籤/搜索