一、ELK介紹
分析數據,日志,統計,聚合分析,了解用戶使用使用虛擬機情況。
openstack使用elk的原因:組件多日志多。排查定位問題方便,統一收集錯誤。創建虛擬機時會生成日志,若出錯會產生日志,及時建立模型,可以分析問題。在大量虛擬機環境下,可以對日志進行聚合分析,進行業務分析。估算vm創建的最大值,預知用戶在什么時候創建vm,創建vm失敗情況。
篩選有價值的日志塞到elasticsearck中,如果 沒有日志可以自己創造日志,通過腳本的方式。
下一代智能運維:智能報警,預測報警,在問題出現之前進行報警,當呈現某種趨勢時進行報警。

elasticsearch:elasticsearch來存儲日志信息.Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。做搜索和數據分析,實時的,只支持json格式。做數據分析價值更大。底層是lunce,是java編寫的。
版本要求:jdk1.8以上,目前版本5.2.2(6.0.0)
ELK二次開發價值比較大。
logstash;數據接口,為elasticsearch對接外面過來的log數據,它對接的渠道,有kafka,有log文件,有redis等等.Logstash是一個完全開源的工具,他可以對你的日志進行收集、過濾,並將其存儲供以后使用
kibana:主要用來做數據展現
預測報警+建模

二、如何安裝部署ELK
環境准備:
一共 七個vm,每個vm4C8G
前五個運行Elasticsearch,一個裝logstash,一個安裝k。插件bigdesk和head插件。
不能直接用root用戶
screen介紹:
http://man.linuxde.net/screen
管理elasticsh集群的兩個插件:bigdesk和head
部署步驟:
確保java安裝好:
下載java包,解壓縮,配置路徑,source /etc/profile
tar zxf jdk-8u161-linux-x64.tar.gz
[root@controller3 tools]# cat /etc/profile
export JAVA_HOME=/home/seagull/tools/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

[root@controller3 tools]# source /etc/profile
下載幾個包,並解壓縮
drwxr-xr-x. 8 root root 4096 Mar 13 18:08 elasticsearch-6.2.3
-rw-r--r--. 1 root root 921421 Apr 3 19:11 elasticsearch-head-master.zip
drwxr-xr-x. 8 10 143 4096 Apr 3 19:06 jdk1.8.0_161
drwxrwxr-x. 12 1000 1000 4096 Mar 13 18:25 kibana-6.2.3-linux-x86_64
drwxr-xr-x. 11 root root 4096 Apr 3 19:15 logstash-6.2.3
elasticsearch目錄結構層次:
elasticsearch-6.2.3/bin/elastcisearch 啟動文件,./elasticsearch -d可以直接啟動(需要配置好之后才能啟動)
elasticsearch-6.2.3/configure 配置文件
elasticsearch-6.2.3/lib jar包
elasticsearch-6.2.3/plugins 插件
打開最大文件打開數:
vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=1000000
sysctl -p

vim /etc/security/limits.conf
* soft nofile 655350
* hard nofile 655350
[root@controller3 tools]# ulimit -Hn
655350
修改之后如果沒有改變,可以考慮重新啟動。

vim /etc/systemd/system.conf
DefaultLimitNOFILE=1024000
DefaultLimitNPROC=1024000

新建用戶
[root@controller2 tools]# adduser elastic
[root@controller2 tools]# mkdir -p /var/log/elasticsearch #創建目錄
[root@controller2 tools]# mkdir -p /var/lib/elasticsearch/data #存儲elasticsearch數據
更改權限
[root@controller2 tools]# chown -R elastic:elastic /home/seagull/tools/elasticsearch-6.2.3
[root@controller2 tools]# chown -R elastic:elastic /var/log/elasticsearch
[root@controller2 tools]# chown -R elastic:elastic /var/lib/elasticsearch/data
[root@controller2 tools]# passwd elastic
cd /home/seagull/tools/elasticsearch-6.2.3/config
[root@controller2 config]# vim jvm.options
根據實際情況修改下列參數
-Xms4g
-Xmx4g

[elastic@controller2 config]$ vim elasticsearch.yml
配置文件,內容如下:
cluster.name: openstack_newton
node.name: master-node1 #如果不設置,會隨機生成一個名字
node.master:true #根據節點的情況設置
node.data:false
action.auto_create_index:true
path.data: /var/lib/elasticsearch/data
path.logs: /var/log/elasticsearch
network.host: 9.110.187.122
http.port: 9200
transport.host:9.110.187.122
transport.tcp.port:9300
discovery.zen.ping.unicast.hosts: ["9.110.187.123"] #綁定除自己之外的所有節點
discovery.zen.minimum_master_nodes: 1
http.cors.enabled:true
http.cors.allow-origin:"*"
注意:權限為elastic:elastic
啟動服務:
注意:不能在root下啟動,需要切換到elastic用戶下進行啟動。
[elastic@controller2 config]$ /home/seagull/tools/elasticsearch-6.2.3/bin/elasticsearch -d
檢查是否成功:



啟動時出現內存報錯,增加內存解決問題。
elasticsearch目錄下面有四個log后綴的文件
vim openstack_newton.log
tail -f openstack_newton.log
在瀏覽器輸入:ip:9200后有代碼出現
查詢節點狀態:

安裝head插件:
將插件放到master上面。
elasticsearch-head-master
yum install -y httpd #安裝httpd服務
systemctl restart httpd
mv elasticsearch-head-master head
cp -r head/ /var/www/html
在瀏覽器中輸入:ip/head/ #如果不改名,則輸入ip/elasticsearch-head-master
bigdesk的安裝相同。
安裝kibana(也可以yum安裝)
cd kibana-5.2.2
cd config
vi kinana.yml
server.port:80 #修改之前的端口,確保80沒有被占用
server.host:"0.0.0.0" #ip地址不是本地地址,如果此處選擇自己本地ip,則上面可以填5601
elasticsearch.url:"http://9.115.75.81:9200"
kibana.index:".kibana"
啟動:
cd bin
./kibana
screen的安裝和使用
先按ctrl+A,松開后再按D
安裝好kibana之后,進入web界面之后,點擊discover報錯,解決方式:需要映射,映射ES中的字段hypervisors_status-*
帶下划線的是默認的字段,不需要管。
拿到數據分析的是業務層面的,做成折現圖,可以看到趨勢。
Dev Tools中是一些API的編寫與調用。
三、Logstach介紹
是一個由JRuby語言編寫的運行在java虛擬機上的具有收集,分析和轉發數據流功能的工具。
采集的日志類型:Apache Logs,Nginx logs,Cloud logs,Event data。
安裝步驟:
1、安裝好JDK
2、源碼包方式安裝
直接下載logstash-1.5.5.tar.gz解壓運行
3、yum方式安裝
rpm --import http://
yum install all
yum install logstash
此處采用的是源碼包安裝方式
cd logstash-5.2.2/bin
./logstash -f
查看配置文件
在logstash-5.2.2目錄下新建conf目錄
使用工具分析日志:
下圖是通過腳本生成的一些創建虛擬機的信息

配置文件分為如下結構:input表示日志從哪里來,filter表示過濾,可以使用一些過濾規則。此處采用的是本地方式導入日志。

對於多種日志格式,可以在下面多寫幾種規則


安裝logstach
[root@controller3 ~]# cd /home/seagull/tools/logstash-6.2.3/bin
[root@controller3 bin]# ./logstash -f
常見pattern: