ELK 是一套整體解決方案, 是Elasticsearch + Logstash + Kibana 這種架構的簡寫。是一種日誌分平臺析的架構。Elasticsearch: 負責日誌檢索和存儲,Logstash: 負責日誌的收集和分析,處理,Kibana: 負責日誌的可視化
功能:
分佈式日誌數據集中式查詢和管理
系統監控,包含系統硬件和應用各個組件的監控
故障排查
安全信息和事件管理
報表功能
---------------------------------------------------------------------------------------
軟件包下載地址:
關注並回復私信內容:ELK
----------------------------------------------------------------------------------------
環境: Centos7
關閉Iptables
關閉Selinux
部署規劃:
192.168.1.251 部署 Kibana6.6
192.168.1.242 部署 Elasticsearch6.6+jdk1.8
192.168.1.250 部署 Logstash6.6+jdk1.8
一、 JDK1.8環境搭建
(1)JDK二進制安裝:
[root@elasticsearch01 ~] tar -zxf jdk-8u201-linux-x64.tar.gz
[root@elasticsearch01 ~]mv jdk1.8.0_201 /usr/local/ # 解壓到對應安裝目錄/usr/local/
[root@elasticsearch01 ~] /usr/local/jdk1.8.0_201/bin/java -version #驗證安裝
(2)配置Java環境變量/etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_201/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
[root@elasticsearch01 ~] source /etc/profile
[root@elasticsearch01 ~] java -version #驗證環境變量
二、Elasticsearch 安裝
(1)Elasticsearch安裝:(Elasticsearch的tar包是已經編譯好的,下載後直接使用即可)
[root@elasticsearch01 ~] tar -zxf elasticsearch-6.6.0.tar.gz
[root@elasticsearch01 ~] mv elasticsearch-6.6.0 /usr/local/
(2)Elasticsearch配置文件修改:
[root@elasticsearch01 ~]cp /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml-bak
[root@elasticsearch01 ~]vim /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml
# 數據目錄
path.data: /usr/local/elasticsearch-6.6.0/data
# log 目錄
path.logs: /usr/local/elasticsearch-6.6.0/logs
#監聽地址(監聽在任意地址)
network.host: 0.0.0.0
#監聽端口
http.port: 9200
(3)JVM的內存限制更改:(內存不大,最好不要做限制,默認大小為1G內存)
[root@elasticsearch01 ~] vim /usr/local/elasticsearch-6.6.0/config/jvm.options
-Xms2048M
-Xmx2048M
(4)句柄數,進程數修改:
最大文件打開數調整
[root@elasticsearch01 ~] vim /etc/security/limits.conf
* - nofile 65536
最大打開進程數調整
[root@elasticsearch01 ~] vim /etc/security/limits.d/20-nproc.conf
* - nproc 10240
修改後添加如下一行,lougout 才能生效
[root@elasticsearch01 ~] vim /etc/pam.d/login
session required /lib/security/pam_limits.so
(5)修改內核參數調整
[root@elasticsearch01 ~]# Vim /etc/sysctl.conf
vm.max_map_count = 262144
[root@elasticsearch01 ~]# sysctl -p
(6) 創建啟動 用戶elk:
[root@elasticsearch01 ~] useradd -s /sbin/nologin elk
[root@elasticsearch01 ~] chown -R elk:elk /usr/local/elasticsearch-6.6.0/
[root@elasticsearch01 ~] su - elk -s /bin/bash
[root@elasticsearch01 ~]# nohup /usr/local/elasticsearch-6.6.0/bin/elasticsearch &
(7)驗證啟動是否成功:
[root@elasticsearch01 ~]#curl http://192.168.1.242 :9200
{
"name" : "6CbRLkm",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "NINwpaL_ReWp75be3QDV7g",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
(6)注意事項:
Elasticsearch啟動注意
Elasticsearch如果監聽在127.0.0.1的話,可以正常啟動成功
Elasticsearch如果要跨機器通訊,需要監聽在真實網卡上,監聽在0.0.0.0或者內網地址
需要調整系統參數才能正常啟動!!!!很重要
Elasticsearch監聽網卡建議
如果學習,建議監聽在127.0.0.1
如果是雲服務器的話,一定把9200和9300公網入口在安全組限制一下
自建機房的話,建議監聽在內網網卡,監聽在公網會被入侵
三、Kibana安裝
(1)、Kibana安裝:
[root@elasticsearch01 ~]# tar -zxf kibana-6.6.0-linux-x86_64.tar.gz
[root@elasticsearch01 ~]# mv kibana-6.6.0-linux-x86_64 /usr/local/kibana-6.6.0
(2)、修改Kibana配置文件:
[root@elasticsearch01 ~]# cp /usr/local/kibana-6.6.0/config/kibana.yml /usr/local/kibana-6.6.0/config/kibana.yml-bak
[root@elasticsearch01 ~]# vim /usr/local/kibana-6.6.0/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts:["http://192.168.1.242:9200"]
kibana.index: ".kibana"
logging.dest: /tmp/kibana.log
(3) 創建日誌文件:
[root@elasticsearch01 ~]# touch /tmp/kibana.log
[root@elasticsearch01 ~]# chmod 777 /tmp/kibana.log
(4)Kibana的啟動和訪問
後臺啟動Kibana:nohup /usr/local/kibana-6.6.0/bin/kibana
訪問Kibana,需要開放5601端口
(5)Kibana借用Nginx來實現簡單認證
Kibana的安全說明
默認無密碼,也是誰都能夠訪問
如果使用雲廠商,可以在安全組控制某個IP的訪問
建議借用Nginx實現用戶名密碼登錄
1、部署Nginx,使用Nginx來轉發
Nginx編譯安裝
[root@kibana01 ~]# yum install -y lrzsz wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
[root@kibana01 ~]# wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
[root@kibana01 ~]# tar -zxvf nginx-1.14.2.tar.gz
[root@kibana01 ~]# cd nginx-1.14.2
[root@kibana01 ~]# useradd -s /sbin/nologin nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
Nginx兩種限制:
限制源IP訪問,比較安全,訪問的IP得不變
使用用戶名密碼的方式,通用
修改nginx 配置文件
寫在location 中
root@kibana01 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
auth_basic "Input Password:"; #指定認證域的名字,隨便寫
auth_basic_user_file "/usr/local/nginx/pass"; #認證的密碼文件,寫絕對路徑
proxy_pass http://192.168.1.242:5601; #kibana地址,端口
proxy_read_timeout 60;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2)生成密碼文件,創建用戶及密碼
使用htpasswd命令創建賬戶文件,需要確保系統中已經安裝了httpd-tools。
[root@kibana01 ~]# yum -y install httpd-tools
[root@kibana01 ~]# htpasswd -c /usr/local/nginx/pass fxkj
#創建密碼文件,-C 是指定創建密碼文件 ,連續兩次輸入密碼,初次創建用戶必須加
New password:
Re-type new password:
Adding password for user tom
[root@kibana01 ~]# htpasswd /usr/local/nginx/pass jerry
#追加用戶,不能使用-c選項 不然會替換掉原先的用戶密碼
New password:
Re-type new password:
Adding password for user jerry
[root@kibana01 ~]# cat /usr/local/nginx/pass
[root@kibana01 ~]# /usr/local/nginx/sbin/nginx #啟動nginx
訪問測試: http://192.168.1.242
#地址訪問——進行用戶認證——跳轉到kibana頁
![ELK部署安裝以及配置](http://p2.ttnews.xyz/loading.gif)
四、Logstash安裝
依賴於Java環境
(1)JDK二進制安裝:
[root@logstash01 ~]# tar -zxf jdk-8u201-linux-x64.tar.gz
[root@logstash01 ~]#mv jdk1.8.0_201 /usr/local/ # 解壓到對應安裝目錄/usr/local/
[root@logstash01 ~]# /usr/local/jdk1.8.0_201/bin/java -version #驗證安裝
(2)配置Java環境變量/etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_201/
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
[root@logstash01 ~]# source /etc/profile
[root@logstash01 ~]# java -version #驗證環境變量
(3)安裝Logstash:
[root@logstash01 ~]# tar -zxf logstash-6.6.0.tar.gz
[root@logstash01 ~]# mv logstash-6.6.0 /usr/local/
(4) 配置Logstash的JVM配置文件(內存不大,最好不要做限制,默認大小為1G內存)
[root@logstash01 ~]# vim /usr/local/logstash-6.6.0/config/jvm.options
-Xms200M
-Xmx200M
Logstash支持
Logstash分為輸入、輸出
輸入:標準輸入、日誌等
輸出:標準輸出、ES等
Logstash最簡單配置
[root@logstash01 ~]# vim /usr/local/logstash-6.6.0/config/logstash.conf
input{
stdin{}
}
output{
stdout{
codec=>rubydebug
}
}
Logstash的啟動和測試
前臺啟動:/usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf
##Successfully started Logstash API endpoint {:port=>9600} 出現這邊表示允許成功,直接輸入就好
後臺啟動:nohup /usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf --config.reload.automatic &
##--config.reload.automatic自動重新加載配置文件,無需重啟logstash
Logstash讀取日誌/usr/local/logstash-6.6.0/config/logstash.conf
input {
file {
path => "/var/log/secure"
}
}
output{
stdout{
codec=>rubydebug
}
}
五、測試Elasticsearch 和 Logstash 來收集日誌數據
(1)創建測試文件:
(在 logstash 安裝目錄下創建一個用於測試 logstash 使用 elasticsearch 作為 logstash 的後端的測試文件 logstash-test.conf,
該文件中定義了stdout和elasticsearch作為output,這樣的“多重輸出”即保證輸出結果顯示到屏幕上,同時也輸出到elastisearch中。
前提要保證elasticsearch和logstash都正常啟動(需要先啟動elasticsearch,再啟動logstash)
[root@logstash01 ~]# vim /usr/local/logstash-6.6.0/config/logstash-test.conf
input { stdin { } }
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => ["http://192.168.1.242:9200"] ##指定elasticsearch 地址
index => "logstash-%{+YYYY-MM}"
}
}
(2)、開啟服務:
[root@logstash01 logstash-6.6.0]# /usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash-test.conf
---------------------------------------------------------------------------------------
軟件包下載地址:
關注並回復私信內容:ELK
----------------------------------------------------------------------------------------
閱讀更多 運維小弟 的文章