您好,登錄后才能下訂單哦!
ELK是一套完整的日志分析解決方案,由ElasticSearch、Logstash、Kibana這三款開源軟件組成。Elasticstash是基于Lucene開發的分布式存儲檢索引擎,用來存儲各類日志;Logstash對日志進行收集、分析,并將其存儲供以后使用;Kibana是基于Node.js開發的展示工具,為Logstash和ElasticSearch提供用于日志展示的Web界面,還用于幫助匯總、分析和搜索重要日志數據。
ELK的工作原理如下:
在所有需要收集日志的服務上部署Logstash,作為Logstash agent用于監控并過濾所收集的日志,將過濾后的內容整合在一起,最終全部交給ElasticSearch檢索引擎;可以用ElasticSearch進行自定義搜索,在通過kibana結合自定義搜索內容生成圖標,進行日志數據展示。
兩臺CenostOS 7
IP:192.168.80.100 安裝:elasticsearch、logstash、Kibana
IP:192.168.80.110 安裝:elasticsearch
Elasticsearch是實時全文搜索和分析引擎,提供搜集、分析、存儲數據三大功能;是一套開放REST和JAVA API等結構提供高效搜索功能,可擴展的分布式系統。它構建于Apache Lucene搜索引擎庫之上。
1、安裝ElasticSearch
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch //安裝elasticsearch的yum源密鑰
vi /etc/yum.repos.d/elasticsearch.repo //配置elasticsearch的yum源
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
yum install elasticsearch -y //安裝
yum install java -y //安裝java環境必須是1.8以上
java -version //查看版本
vi /etc/elasticsearch/elasticsearch.yml //修改配置文件
17行 集群名稱
cluster.name: abner
23行 節點名稱
node.name: linux-node1
33行 修改data和日志存放的路徑
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
43行 防止交換swap分區
bootstrap.memory_lock: true
54行 開啟監聽網絡
network.host: 0.0.0.0
58行 開啟監聽的端口
http.port: 9200
mkdir -p /data/es-data //新建data存放目錄
chown -R elasticsearch:elasticsearch /data/es-data //修改目錄權限
systemctl start elasticsearch //啟動服務
netstat -ntap | grep 9200 //查看端口狀態
瀏覽器訪問測試頁192.168.80.100:9200
2、實現與ElasticSearch交互
第一種:JAVA APO
第二種:RESTful API(通過json格式 交互)
curl -i -XGET 'http://192.168.80.100:9200/_count?pretty' -d '{
"query": {
"match_all": {}
}
}'
3、安裝elasticsearch-head插件/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head //安裝插件,該安裝方式是從git的方式拉取的也可以用docker pull
瀏覽器訪問測試插件是否安裝成功http://192.168.80.100:9200/_plugin/head/
4、ElasticSearch集群部署(在另外一臺虛擬機上安裝)
1)安裝ElasticSearch(步驟同上)
2)Linux-node1開啟集群自動發現機制vi /etc/elasticsearch/elasticsearch.yml //修改配置文件
systemctl restart elasticsearch //重啟node1服務
3)Linux-node2開啟集群自動發現機制vi /etc/elasticsearch/elasticsearch.yml //修配置文件
systemctl restart elasticsearch //重啟node2服務
4)瀏覽器訪問會看到主節點和副節點http://192.168.80.100:9200/_plugin/head/
5、安裝監控組件/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf //安裝
瀏覽器訪問監控頁面http://192.168.80.100:9200/_plugin/kopf/#!/cluster
Logstash是一個用來搜集、分析、過濾日志的工具。它支持幾乎任何類型的日志,包括系統日志、錯誤日志和自定義應用程序日志。它可以從許多來源接收日志,這些來源包括 syslog、消息傳遞(例如 RabbitMQ)和JMX,它能夠以多種方式輸出數據,包括電子郵件、websockets和Elasticsearch。
1、安裝Logstash
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch //下載yum源密鑰
vim logstash.repo //配置logstash的yum源
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
yum install logstash -y //安裝
2、Logstash的使用
ln -s /opt/logstash/bin/logstash /usr/bin/ //對logstash命令做軟連接
logstash -e 'input { stdin{} } output { stdout{} }' //執行logstash命令定義輸入和輸出流,類似管道
注釋: -e:執行操作
input:標準輸入
{ input }:插件
output:標準輸出
{ stdout }:插件
logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }' //通過rubydebug來輸出下更詳細的信息
logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.80.100:9200"] } stdout { codec => rubydebug } }' //輸入到elasticsearch中
http://192.168.80.100:9200/_plugin/head/ //訪問elastic的web頁面查看
3、Logstash配置文件的使用vi 01-logstash.conf //編輯配置文件收集系統日志
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.175.132:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
logstash -f 01-logstash.conf //指定配置文件進行過濾匹配
vi 02-logstash.conf //編輯配置文件同時收集系統日志和安全日志
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/secure"
type => "secure"
start_position => "beginning"
}
}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "nagios-system-%{+YYYY.MM.dd}"
}
}
if [type] == "secure" {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "nagios-secure-%{+YYYY.MM.dd}"
}
}
}logstash -f 02-logstash.conf //指定配置文件進行過濾匹配
Kibana是一個基于Web的圖形界面,用于搜索、分析和可視化存儲在 Elasticsearch指標中的日志數據。它利用Elasticsearch的REST接口來檢索數據,不僅允許用戶創建他們自己的數據的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數據。
1、下載安裝Kibana
wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz //下載kibana程序包
tar zxvf kibana-4.3.1-linux-x64.tar.gz //解壓
mv kibana-4.3.1-linux-x64/ /usr/local/kibana //將程序包移動并且改名
vi /usr/local/kibana/config/kibana.yml //修改配置文件
#服務端口
server.port: 5601
#服務地址
server.host: "0.0.0.0"
#elasticsearch對應的地址和端口
elasticsearch.url: "http://192.168.175.132:9200"
#數據字段類型
kibana.index: ".kibana"
yum install screen -y //安裝screen,以便于kibana在后臺運行(當然也可以不用安裝,用其他方式進行后臺啟動)
/usr/local/kibana/bin/kibana //啟動
netstat -antp |grep 5601 //監聽端口
2、瀏覽器訪問192.168.80.100:5601
填寫對應的日志索引
點擊Discover根據時間選擇器來篩選日志
輸出nginx、apache、message、secrue的日志到前臺展示
1、編輯nginx配置文件,修改以下內容(在http模塊下添加)
log_format json '{"@timestamp":"$time_iso8601",''"@version":"1",'
br/>'"@version":"1",'
'"url":"$uri",'
'"status":"$status",'
'"domian":"$host",'
'"host":"$server_addr",'
'"size":"$body_bytes_sent",'
'"responsetime":"$request_time",'
'"referer":"$http_referer",'
'"ua":"$http_user_agent"'
'}';
修改access_log的輸出格式為剛才定義的json
access_log logs/elk.access.log json;
2、修改apache的配置文件
LogFormat "{ \
\"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \
\"@version\": \"1\", \
\"tags\":[\"apache\"], \
\"message\": \"%h %l %u %t \\"%r\\" %>s %b\", \
\"clientip\": \"%a\", \
\"duration\": %D, \
\"status\": %>s, \
\"request\": \"%U%q\", \
\"urlpath\": \"%U\", \
\"urlquery\": \"%q\", \
\"bytes\": %B, \
\"method\": \"%m\", \
\"site\": \"%{Host}i\", \
\"referer\": \"%{Referer}i\", \
\"useragent\": \"%{User-agent}i\" \
}" ls_apache_json
一樣修改輸出格式為上面定義的json格式
CustomLog logs/access_log ls_apache_json;
3、編輯logstash配置文件,進行日志收集vi full.conf //編輯日志收集配置文件
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/secure"
type => "secure"
start_position => "beginning"
}
file {
path => "/var/log/httpd/access_log"
type => "http"
start_position => "beginning"
}
file {
path => "/usr/local/nginx/logs/elk.access.log"
type => "nginx"
start_position => "beginning"
}
}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-system-%{+YYYY.MM.dd}"
}
}
if [type] == "secure" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-secure-%{+YYYY.MM.dd}"
}
}
if [type] == "http" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-http-%{+YYYY.MM.dd}"
}
}
if [type] == "nginx" {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "nagios-nginx-%{+YYYY.MM.dd}"
}
}
}
logstash -f /etc/logstash/conf.d/full.conf //運行logstash過濾日志并且訪問elasticsearch的web頁面查看
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。