環境信息
系統:AWS Centos7
IP:172.29.0.159
版本信息:

前話
去年下半年鄰居介紹了一當兵的對象,當時是用生命拒絕的,然后過年回去居然鬼使神差的在一起了?過完年來,已經莫名失聯十多天了,畢竟剛開始傳說中的熱戀就分開,心里難受!!!每天猜測這人是干嘛去了,患得患失,對於我這種一分鍾不回復我消息我都覺得對方在出軌(這是被劈腿后遺症,越來越嚴重)。。。 這跟這篇博文有什么關系呢,沒關系!
做運維也有兩年余載,一直只知道ELK,從未去用過和研究過,現在公司有用到它,迫在眉睫需要學習他。在我的運維知識體系中,感覺所有的東西都只是入個門,沒有系統的學習,沒有深層次的去研究。以前一直是感覺有很多東西要學Docker、K8s、Python、微服務......,今天看一點這個明天看一點那個,到頭來什么都還是原點。學這個ELK的時候本來想只是搭建完知道用然后就可以了,但是這真的是浪費時間,學習東西還是得系統的學習,你不系統的學,下次又是這個步驟,你要是系統的學習完,下次就是查漏補缺了,直接漲經驗的時候了。不要貪心嘛,不要給自己定的目標太高了,不要想着今天就把他全部看完,全部看懂,一點一點來,不要急,努力和那XXX一樣,要持久。
簡單的了解一下EFK三個工具是干啥的?(不要問我為什么喜歡用綠色,以毒攻毒,治療自己)
Elasticsearch:Elasticsearch是一個開源的高擴展全文搜索和分析引擎。它可以存儲、搜索、快速的和實時的分析大量數據。他通常用作底層技術或者底層引擎,為具有復雜搜索特性和需求的應用程序提供支持。
Kibana:Kibana是設計用於Elasticsearch的一個開源和可視化的工具。你可以用Kibana搜索、查看和交互存在Elasticsearch索引中的數據。你可以執行數據分析和通過圖表、表格、地圖查看數據。
Filebeat:是一個輕量級的收集日志和傳輸日志的工具(一直以為Filebeat是存儲數據,並不是的他只是做一個收集傳輸功能);Filebeat安裝在每一個你想要收集日志的服務器上,相當於客戶端。Filebeat監控你指定的日志文件或者路徑,收集日志事件向Elasticsearch或者Logstach進行索引。
我無數次看ELK的博文的時候,開頭都是看到上面這個介紹,看到就有心理抵觸了,這里是我完成后面的實際操作步驟后,根據官方文檔總結的,所以可以跳過,先用起來,再看他具體是干什么的,再看他的高級用法。
一、安裝Elasticsearch
1、關閉防火牆
yum -y install firewalld yum -y install iptables-services systemctl stop firewalld systemctl stop iptables systemctl disable firewalld.service systemctl disable iptables.service sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2、JDK環境的配置(
Elasticsearch要求至少Java 8,推薦使用Oracle JDK version 1.8.0_131)
1)下載解壓
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local mv /usr/local/jdk1.8.0_131 /usr/local/java
2)vim /etc/profile
export JAVA_HOME=/usr/local/java export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:{JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
使其馬上生效:
source /etc/profile
測試是否加入環境變量:
[root@rilo ~]# echo $PATH /usr/local/java/bin:/usr/local/java/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@ip-172-29-0-159 ~]# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
3 、elasticsearch安裝
1)下載、安裝、啟動elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz tar -xvf elasticsearch-6.6.0.tar.gz cd elasticsearch-6.6.0/bin ./elasticsearch
注一:
啟動的時候會報錯,是因為不能用root賬號啟動elasticsearch,解決辦法就是先創建一個賬號,然后給elasticsearch文件夾授權,切換到創建的賬號啟動
useradd ela chown -R ela.ela elasticsearch-6.6.0 nohup ./elasticsearch &

注二:
啟動的時候不一會兒進程會掛掉,查看日志發現如下:(這是elasticsearch的啟動用戶擁有的內存太小)

解決辦法:
vim /etc/sysctl.conf 添加這一行
vm.max_map_count = 262144
並使其生效:
sysctl -p
4、訪問
默認端口為:9200(可以通過配置文件修改);因為我需要外網訪問,所以修改配置文件 vim config/elasticsearch.yml

二、安裝Kibana
1、下載安裝
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz tar -zxvf kibana-6.6.0-linux-x86_64.tar.gz cd kibana-6.6.0-linux-x86_64
2、啟動
nohup ./bin/kibana &
3、查看Kibana進程
注:使用ps -ef | grep kibana是查不到的
[root@ip-172-29-0-159 ~]# ps -ef |grep node root 21374 19694 0 02:27 pts/0 00:01:00 ./../node/bin/node --no-warnings ./../src/cli root 21817 19694 0 05:57 pts/0 00:00:00 grep --color=auto node
或者根據netstat根據對應的端口查看到進程號
[root@ip-172-29-0-159 ~]# netstat -anltp |grep 5601 tcp 0 0 127.0.0.1:5601 0.0.0.0:* LISTEN 21374/./../node/bin
4、訪問kibana
默認情況下是只能
http://127.0.0.1:5601
外網訪問的話,需修改配置文件 vim config/kibana.yml;
server.host: "0.0.0.0"
重啟kibana后,就可以在瀏覽器訪問,記得把安全組的端口打開(我的這里測試了很久都訪問不到,后來發現是自己打開了翻牆)


注一:當出現這個問題的時候,我的測試是因為要先安裝elasticsearch,並且要是通的

三、安裝FileBeats
1、下載安裝
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gz tar xzvf filebeat-6.6.0-linux-x86_64.tar.gz
2、修改配置文件 vim filebeat.yml
filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log setup.kibana: host: "localhost:5601" output.elasticsearch: hosts: ["localhost:9200"]
3、啟動
nohup ./filebeat &
四、查看
這里如果沒有顯示出任何的數據,那么把時間的范圍擴大一點
