2015年01月30日 17:32:29?i_chips?閱讀數:24252
https://blog.csdn.net/i_chips/article/details/43309415
ELK套件(ELK stack)是指ElasticSearch、Logstash和Kibana三件套。這三個軟件可以組成一套日志分析和監控工具。
日志審計服務器搭建?由于三個軟件各自的版本號太多,建議采用ElasticSearch官網推薦的搭配組合:http://www.elasticsearch.org/overview/elkdownloads/
本文把ELK套件部署在一臺CentOS單機上。
具體的版本要求如下:
為了正常使用HTTP服務等,需要關閉防火墻:
# service iptables stop
# systemctl stop firewalld.service
nginx查看日志?或者可以不關閉防火墻,但是要在iptables中打開相關的端口:
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9292 -j ACCEPT
# service iptables restart
ElasticSearch和Logstash依賴于JDK,所以需要安裝JDK:
# yum -y install java-1.7.0-openjdk*
# java -version
ElasticSearch默認的對外服務的HTTP端口是9200,節點間交互的TCP端口是9300。
下載ElasticSearch:
# mkdir -p /opt/software && cd /opt/software
# sudo wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.tar.gz
# sudo tar -zxvf elasticsearch-1.4.2.tar.gz -C /usr/local/
# ln -s /usr/local/elasticsearch-1.4.2 /usr/local/elasticsearch
架設日志服務器,安裝elasticsearch-servicewrapper,并啟動ElasticSearch服務:
# sudo wget https://github.com/elasticsearch/elasticsearch-servicewrapper/archive/master.tar.gz
# sudo tar -zxvf master.tar.gz
# mv /opt/software/elasticsearch-servicewrapper-master/service /usr/local/elasticsearch/bin/
# /usr/local/elasticsearch/bin/service/elasticsearch start
測試ElasticSearch服務是否正常,預期返回200的狀態碼:
# curl -X GET http://localhost:9200
Logstash默認的對外服務的端口是9292。
下載Logstash:
# sudo wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
# sudo tar -zxvf logstash-1.4.2.tar.gz -C /usr/local/
# ln -s /usr/local/logstash-1.4.2 /usr/local/logstash
搭建,簡單測試Logstash服務是否正常,預期可以將輸入內容以簡單的日志形式打印在界面上:
# /usr/local/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
創建Logstash配置文件,并再次測試Logstash服務是否正常,預期可以將輸入內容以結構化的日志形式打印在界面上:
# mkdir -p /usr/local/logstash/etc
# vim /usr/local/logstash/etc/hello_search.conf
input {stdin {type => "human"}
}output {stdout {codec => rubydebug}elasticsearch {host => "10.111.121.22"port => 9300}
}
# /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf
CentOS默認預裝了Apache,所以將Kibana的代碼直接拷貝到Apache可以訪問的目錄下即可。
# sudo wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.tar.gz
# sudo tar -zxvf kibana-3.1.2.tar.gz
# mv kibana-3.1.2 /var/www/html/kibana
修改Kibana的配置文件,把elasticsearch所在行的內容替換成如下:
# vim /var/www/html/kibana/config.js
elasticsearch: "http://10.111.121.22:9200",
rabbitmq自動創建隊列?啟動一下HTTP服務:
# service httpd start
修改ElasticSearch的配置文件,追加兩行內容,并重啟ElasticSearch服務:
# vim /usr/local/elasticsearch/config/elasticsearch.yml
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
# /usr/local/elasticsearch/bin/service/elasticsearch restart
然后就可以通過瀏覽器訪問Kibana了:
http://10.111.121.22/kibana
現在,在之前的Logstash會話中輸入任意字符,就可以在Kibana中查看到日志情況。
rabbitmq docker、再次創建Logstash配置文件,這里將HTTP日志和文件系統日志作為輸入,輸出直接傳給ElasticSearch,不再打印在界面上:
# vim /usr/local/logstash/etc/logstash_agent.conf
input {file {type => "http.access"path => ["/var/log/httpd/access_log"]}file {type => "http.error"path => ["/var/log/httpd/error_log"]}file {type => "messages"path => ["/var/log/messages"]}
}output {elasticsearch {host => "10.111.121.22"port => 9300}
}
# nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf &
現在,一個簡單的日志分析和監控平臺就搭建好了,可以使用Kibana進行查看。
1. 《安裝logstash,elasticsearch,kibana三件套》,http://www.cnblogs.com/yjf512/p/4194012.html
2018年07月15日 13:35:52?li123128?閱讀數:2091
安裝rabbitmq、https://blog.csdn.net/li123128/article/details/81052374
一、介紹
二、安裝JDK
三、安裝Elasticsearch
rabbitmq日志、四、安裝Logstash
五、安裝Kibana
六、Kibana簡單使用
系統環境:CentOS Linux release 7.4.1708 (Core)
當前問題狀況
1、組成
ELK由Elasticsearch、Logstash和Kibana三部分組件組成;
Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash是一個完全開源的工具,它可以對你的日志進行收集、分析,并將其存儲供以后使用
kibana 是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
2、四大組件
Logstash: logstash server端用來搜集日志;
Elasticsearch: 存儲各類日志;
Kibana: web化接口用作查尋和可視化日志;
Logstash Forwarder: logstash client端用來通過lumberjack 網絡協議發送日志到logstash server;
3、工作流程
在需要收集日志的所有服務上部署logstash,作為logstash agent(logstash shipper)用于監控并過濾收集日志,將過濾后的內容發送到Redis,然后logstash indexer將日志收集在一起交給全文搜索服務ElasticSearch,可以用ElasticSearch進行自定義搜索通過Kibana 來結合自定義搜索進行頁面展示。
下面是在兩臺節點上都安裝一下環境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
基礎環境安裝(elk-node1和elk-node2同時操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
?
?
?
?
|
?訪問地址:http://192.168.247.135:9200/
?
安裝ES插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
?
?
|
?訪問地址:http://192.168.247.135:9200/_plugin/head/
使用POST方法創建查詢
使用GET方法查詢數據
基本查詢
elk-node2配置
1 2 3 4 5 6 7 8 9 10 |
|
?在構建Elasticsearch(ES)多節點集群的時候,通常情況下只需要將elasticsearch.yml中的cluster.name設置成相同即可,ES會自動匹配并構成集群。但是很多時候可能由于不同的節點在不同的網段下,導致無法自動獲取集群。此時可以將啟用單播,顯式指定節點的發現。具體做法是在elasticsearch.yml文件中設置如下兩個參數:
1 2 |
|
重啟elk-node1,并開啟elk-node2,訪問:192.168.247.135:9200/_plugin/head/
?安裝監控kopf
1 2 3 4 5 6 7 |
|
?訪問地址:http://192.168.247.135:9200/_plugin/kopf/#!/cluster
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
?
?
?
?
|
?
logstash日志收集配置文件編寫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
?
收集elk錯誤日志配置文件編寫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
?
官方下載地址:https://www.elastic.co/downloads/kibana
官方最新的版本出來了6.3.1太新了,下載后出現很多坑后來就下了4.3.1的·先用著吧~~~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
訪問kibana地址:http://192.168.247.135:5601
?第一次登錄我們創建一個elk的es-error索引
?
?添加message和path字段
運用搜索欄功能,我們搜soft關鍵字
我們在添加之前寫的systemlog索引
*為正則匹配
好啦~~到此為止ELK日志平臺搭建基本搞掂,,,,累得一筆,,后續可以根據需求編寫好需要監控的應用文件添加到kibana上即可。
本文記錄了一次日志平臺的搭建。主要場景如下:
1. 應用將日志發送給RabbitMQ
2. Logstash連接到RabbitMQ抽取日志
3. Logstash將抽取的日志內容做一些加工,然后存入到Elasticsearch中
4. Kibana連接到Elasticsearch,提供日志查詢、展現等功能。
整個過程圖形表示如下:
1.先下載要用到的Docker鏡像文件
注意,rabbitmq是從docker官方鏡像倉庫拉取的:https://store.docker.com/images/rabbitmq
Elasticsearch相關的3個鏡像是從Elasticsearch官網拉取的:https://www.docker.elastic.co/
2.準備容器編排文件
這里用到的docker-compose來編排容器,文件如下:
這里要注意的是,創建rabbitmq容器必須指定hostname參數,因為此鏡像是基于NodeName(默認等于hostname)來存儲數據的。
loastash容器,我們通過卷指定了配置文件的路徑,從而控制容器使用我們的管道配置文件。
另外,這里也指定了depends_on參數,因為容器之間存在依賴項,比如要等RabbitMQ容器起來之后,Logstash容器才能連接到隊列上。所以Logstash容器需要依賴RabbitMQ容器。
3.配置logstash從rabbitmq抽取數據。
其實主要的工作就在這里,分為三塊。input配置數據來源,filter過濾數據,output將數據傳輸給Elasticsearch。
input
這里用到了logstash的rabbitmq的輸入插件,其詳細的配置文件在這里
值得注意的是,這個插件默認的解碼器用的是JSON,因為我們的日志是一行一行的文本,字段之間用空格分割,所以這里配置的codec是plain。
另外,這里明確的指定了rabbitmq的exchange、exchange_type、key,這樣logstash啟動的時候會連接到RabbitMQ,并自動創建交換器及隊列。
filter
這里用到了grok來解析日志。因為我們的時間格式不是默認支持的,所以用到了data插件來專門解析時間,并將解析的時間覆蓋到@timestamp字段,作為Elasticsearch的時間索引字段。
由于我們的日志中數據庫名這個字段,可能是一個問號“?”,所以不能用默認的WORD模式,這里我用了正則表達式來匹配數據庫名。
這里需要解釋下日志解析的模式:%{TIMESTAMP_ISO8601:timestap} %{NUMBER:pid} %{WORD:level} (?<dbname>\S*) %{USERNAME:modul}: %{GREEDYDATA:msgbody}
TIMESTAMP_ISO8601:匹配時間
NUMBER:匹配數字
WORD:匹配單詞
(?<dbname>\S*):匹配一個不包含非空字符的字符串,本場景主要匹配:ic_new,?這兩種情況。
GREEDYDATA:匹配剩下的所有內容
USERNAME:匹配由字母、數字、句點、下劃線和橫杠組成的字符串。
更多Grok匹配模式
在用到grok解析日志時,可以使用Kibana自帶的grok調試工具
也可以用在線的Grok調試工具
output
這里配置為輸出到Elasticsearch服務器,并指定了index的名字,固定字符串開頭,根據日期每天創建一個索引。
注意,如果遇到問題,可以將數據輸出到控制臺,方便定位問題:
這樣我們配置了2個輸出,一個輸出到控制臺,一個輸出到Elasticsearch。控制臺會有如下信息:
4.創建并啟動容器
調試的時候,可以連接到logstash容器去查看實時的日志:
5.在Kibana中配置索引,查詢日志。
打開索引創建頁面,如果logstash已經開始傳輸數據,就能看到我們在配置文件中指定的索引了。
配置好索引后,即可在Discover頁面查詢到日志數據。
?
相關參考:
[運維]ELK實現日志監控告警
https://blog.csdn.net/yeweiouyang/article/details/54948846
啟發:ElastAlert配置為必要時刻執行一段python腳本,用于發送告警短信及郵件即可
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态