日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

CentOS7部署ELK5.2

發(fā)布時(shí)間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS7部署ELK5.2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文發(fā)表于cu:2017-02-10

參考文檔:

  1. Elasticsearchyum文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
  2. Logstashyum文檔:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
  3. Kibanayum文檔:https://www.elastic.co/guide/en/kibana/current/rpm.html
  4. es5.x版本head插件安裝:http://renzhiyuan.blog.51cto.com/10433137/1888862

本文通過yum的方式安裝ELK Stack各套件,并做簡(jiǎn)單配置。?

一.環(huán)境準(zhǔn)備

1.?操作系統(tǒng)

CentOS-7-x86_64-Everything-1511?

2. JDK版本

# 官方文檔寫得很明確:elasticsearch與logstash至少需要java 8支持,其中l(wèi)ogstash5.x版本也不支持java 9,這里部署openjdk,使用“yum provides java”命令選取合適的版本進(jìn)行安裝。
[root@elk-node1 ~]# yum install java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64 -y
[root@elk-node1 ~]# java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

3. ELK版本

Elasticsearch 5.2: https://www.elastic.co/downloads/elasticsearch

Logstash 5.2:https://www.elastic.co/downloads/logstash

Kibana 5.2:https://www.elastic.co/downloads/kibana?

4. 拓?fù)鋱D?

1) 物理拓?fù)?/span>

  1. 驗(yàn)證環(huán)境部署2臺(tái)設(shè)備,均為VMware ESXi虛擬出的vm,部署在相同網(wǎng)段;
  2. 每臺(tái)vm上均部署elk的3個(gè)組件,只是配置文件根據(jù)節(jié)點(diǎn)不同而略有不同(以下部署配置過程只針對(duì)node1,node2安裝配置可參照node1)

2) 邏輯流程

  1. 數(shù)據(jù)源只需要輸入到某1個(gè)logstash節(jié)點(diǎn);
  2. 經(jīng)過logstash處理的數(shù)據(jù)需要輸出到elasticsearch集群中的所有節(jié)點(diǎn),elasticsearch分布式集群通過自身處理,每個(gè)節(jié)點(diǎn)均能獲取全部數(shù)據(jù);
  3. kibana展示只需要從本機(jī)所在elasticsearch節(jié)點(diǎn)即可獲取全部數(shù)據(jù)。?

二.Elasticsearch部署?

1. 導(dǎo)入elasticsearch PGP key?

[root@elk-node1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 創(chuàng)建yum源文件

[root@elk-node1 ~]# vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-5.x]
name=Elasticsearch repository for5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3. 安裝elasticsearch

[root@elk-node1 ~]# yum install elasticsearch -y

4. 設(shè)置開機(jī)啟動(dòng)

[root@elk-node1 ~]# systemctl daemon-reload
[root@elk-node1 ~]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.

5. 配置hosts文件

# 根據(jù)實(shí)際環(huán)境配置,將節(jié)點(diǎn)主機(jī)名加入hosts文件
[root@elk-node1 ~]# echo "10.11.4.151   elk-node1" >> /etc/hosts
[root@elk-node1 ~]# echo "10.11.4.152   elk-node2" >> /etc/hosts

6. 配置elasticsearch.yml

[root@elk-node1 src]# cat /etc/elasticsearch/elasticsearch.yml | grep -v “#”
cluster.name: elk                       #自定義集群名,相同集群內(nèi)的節(jié)點(diǎn)設(shè)置相同的集群名
node.name: elk-node1                    #自定義節(jié)點(diǎn)名,建議統(tǒng)一采用節(jié)點(diǎn)hostname
path.data: /var/lib/elasticsearch       #data存儲(chǔ)路徑,可不取消注釋,默認(rèn)即此路徑
path.logs: /var/log/elasticsearch       #log存儲(chǔ)路徑,可不取消注釋,默認(rèn)即此路徑
network.host: 0.0.0.0                   #es監(jiān)聽地址,采用”0.0.0.0”,允許所有設(shè)備訪問
http.port: 9200                         #es監(jiān)聽端口,可不取消注釋,默認(rèn)即此端口
discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]     # 集群節(jié)點(diǎn)發(fā)現(xiàn)列表,也可采用ip的形式
discovery.zen.minimum_master_nodes: 2   #集群可做master的最小節(jié)點(diǎn)數(shù),生產(chǎn)環(huán)境建議節(jié)點(diǎn)數(shù)至少3個(gè)且為基數(shù)
# 以下兩項(xiàng)設(shè)置es5.x版本的head插件可以訪問es
http.cors.enabled: true                 #開啟跨域訪問支持,默認(rèn)為false
http.cors.allow-origin: "*"             #跨域訪問允許的域名地址,使用正則表達(dá)式

7. 配置head插件

elasticsearch5.x版本沒有提供直接安裝head插件的方法,作者在github上給出了方法:https://github.com/mobz/elasticsearch-head?

1)下載并配置nodejs

# nodejs官網(wǎng):https://nodejs.org/en/
# 如果國(guó)內(nèi)通過wget下載較慢,可通過第三方工具下載后上傳至服務(wù)器
[root@elk-node1 ~]# cd /usr/local/src/
[root@elk-node1 src]# wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz
[root@elk-node1 src]# xz -d node-v6.9.5-linux-x64.tar.xz
[root@elk-node1 src]# tar -xvf node-v6.9.5-linux-x64.tar -C /usr/local/
[root@elk-node1 src]# cd ~
[root@elk-node1 ~]# ln -s /usr/local/node-v6.9.5-linux-x64/bin/node /usr/bin/node
[root@elk-node1 ~]# ln -s /usr/local/node-v6.9.5-linux-x64/bin/npm /usr/bin/npm# 查看nodejs是否安裝成功;
# NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具,方便讓JavaScript開發(fā)者下載、安裝、上傳以及管理已經(jīng)安裝的包
[root@elk-node1 ~]# node -v
v6.9.5
[root@elk-node1 ~]# npm -v
3.10.10

2)安裝head插件

安裝grunt

# grunt是一個(gè)方便的構(gòu)建工具,可以進(jìn)行打包壓縮、測(cè)試、執(zhí)行等等的工作,5.x里的head插件就是通過grunt啟動(dòng)的;
#如果鏡像速度不理想,可提前切到國(guó)內(nèi)的鏡像,在安裝grunt-cli前執(zhí)行:npm config set registry https://registry.npm.taobao.org# ”-g”參數(shù)代表全局安裝,一般安裝到nodejs的”lib/node_modules”目錄下;不帶參數(shù)”-g”,則是本地安裝,一般安裝到運(yùn)行npm命令時(shí)所在的目錄,這里就需要安裝到head插件目錄
[root@elk-node1 ~]# npm install -g grunt-cli# 為grunt命令建軟鏈接,方便全局執(zhí)行,或加入環(huán)境變量;
[root@elk-node1 ~]# ln -s /usr/local/node-v6.9.5-linux-x64/lib/node_modules/grunt-cli/bin/grunt /usr/bin/grunt

下載并配置head

# 配置elasticsearch.yml文件允許head插件跨域訪問es,請(qǐng)見上述章節(jié)
[root@elk-node1 ~]# cd /var/lib/elasticsearch
[root@elk-node1 elasticsearch]# git clone git://github.com/mobz/elasticsearch-head.git
[root@elk-node1 elasticsearch]# chown -R elasticsearch:elasticsearch elasticsearch-head/

安裝head?

[root@elk-node1 ~]# cd /var/lib/elasticsearch/elasticsearch-head/# 如果沒有全局安裝grunt二進(jìn)制程序,可在"elasticsearch-head"目錄下執(zhí)行"npm install grunt --save"或" npm install grunt-cli"
[root@elk-node1 elasticsearch]# npm install?

安裝完成后可能有一些報(bào)錯(cuò),不影響使用,報(bào)錯(cuò)原因未知,本人對(duì)nodejs不了解,github上有相近的問題,但并未解決。解決方法如下:

  1. 查看報(bào)錯(cuò)信息"Error: Cannot find module '/var/lib/elasticsearch/elasticsearch-head/node_modules/phantomjs-prebuilt/install.js'",未找到" phantomjs-prebuilt/install.js"文件;
  2. 采取比較土的辦法,將完整的"phantomjs-prebuilt/"目錄上傳到相應(yīng)位置,重新執(zhí)行"npm install",無報(bào)錯(cuò)。
  3. 或者:npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

同時(shí)有3個(gè)警告信息,忽略即可,其中"npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression"警告信息可做如下處理:http://www.itdadao.com/articles/c15a1031952p0.html

即修改"./ elasticsearch-head"目錄下"package.json"文件第17行的""Apache2" "為"Apache-2.0",涉及到開源軟件與其他合作類軟件的使用聲明。

配置head文件

  • app.js
[root@elk-node1 ~]# cd /var/lib/elasticsearch/elasticsearch-head/
[root@elk-node1 elasticsearch-head]# cd _site/
[root@elk-node1 _site]# cp app.js app.js.bak# 在4328行將原"http://localhost:9200"修改為"http://10.11.4.151:9200",否則head插件不能獲取節(jié)點(diǎn)狀態(tài)信息
[root@elk-node1 _site]# vim app.js

  • Gruntfile.js
[root@elk-node1 ~]# cd /var/lib/elasticsearch/elasticsearch-head/
[root@elk-node1 elasticsearch-head]# cp Gruntfile.js Gruntfile.js.bak# 在93行新增”hostname: 0.0.0.0', “,確保能被訪問
[root@elk-node1 elasticsearch-head]# vim Gruntfile.js

?

8. iptables設(shè)置

# 打開tcp 9000~9600多個(gè)端口,9100訪問head插件,9200是節(jié)點(diǎn)事務(wù)通信端口,9300是集群節(jié)點(diǎn)之間選舉/狀態(tài)同步端口,9600~9700是默認(rèn)的logstash數(shù)據(jù)輸入端口;
# 允許多播協(xié)議,es是一個(gè)基于p2p的系統(tǒng),其先通過廣播尋找存在的節(jié)點(diǎn),再通過多播協(xié)議來進(jìn)行節(jié)點(diǎn)之間的通信,同時(shí)也支持點(diǎn)對(duì)點(diǎn)的交互;
# tcp5601端口是kibana的默認(rèn)訪問端口。
[root@elk-node1 ~]# vim /etc/sysconfig/iptables-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 9000:9600 -j ACCEPT
-A INPUT -m pkttype --pkt-type multicast -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5601 -j ACCEPT[root@elk-node1 ~]# systemctl restart iptables

?

9. 啟動(dòng)并驗(yàn)證

[root@elk-node1 ~]# systemctl start elasticsearch.service#啟動(dòng)head插件,需要到head目錄下
[root@elk-node1 ~]# cd /var/lib/elasticsearch/elasticsearch-head/
[root@elk-node1 elasticsearch-head]# grunt server &

?

1)啟動(dòng)過程驗(yàn)證

[root@elk-node1 ~]# journalctl --unit elasticsearch

2)端口驗(yàn)證?

[root@elk-node1 ~]# netstat –tunlp

3)集群/節(jié)點(diǎn)狀態(tài)信息

節(jié)點(diǎn)狀態(tài)信息

[root@elk-node1 ~]# curl -XGET 'http://10.11.4.151:9200/?pretty'

節(jié)點(diǎn)數(shù)信息?

# 其中帶"*"的節(jié)點(diǎn)表示被選舉為master
[root@elk-node1 ~]# curl -XGET 'http://10.11.4.151:9200/_cat/nodes?v'

節(jié)點(diǎn)分片信息

# 這里已經(jīng)有分片信息,因kibana已安裝并啟動(dòng),默認(rèn)無信息
[root@elk-node1 ~]# curl -XGET 'http://10.11.4.151:9200/_cat/indices?v'

集群健康狀態(tài)信息

[root@elk-node1 ~]# curl -XGET 'http://10.11.4.151:9200/_cluster/health?pretty'

4)日志

# 日志文件默認(rèn)在" /var/log/elasticsearch/elasticsearch.log",可在elasticsearch.yml文件中更改;
# 這里查看elk-node2節(jié)點(diǎn)的日志,elk-node2被選舉成為master,且集群狀態(tài)正常
[root@elk-node2 ~]# tail -f /var/log/elasticsearch/elk.log

5)瀏覽器訪問

節(jié)點(diǎn)狀態(tài)信息(類curl)

可視化展示(head插件)

同樣有節(jié)點(diǎn)信息,master選舉結(jié)果信息,節(jié)點(diǎn)分片信息,集群健康狀態(tài)信息等。

三.Logstash部署

yum源同elasticsearch,這里不再創(chuàng)建yum文件,直接安裝即可;如果一定要?jiǎng)?chuàng)建則另取1個(gè)名字,如logstash.repo。?

1. 安裝logstash

[root@elk-node1 ~]# yum install logstash –y?

2. 設(shè)置開機(jī)啟動(dòng)

[root@elk-node1 elasticsearch]# systemctl enable logstash.service
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.?

3. 配置logstash

1)配置文件

# 默認(rèn)配置文件:/etc/logstash/logstash.yml
# 其中默認(rèn)配置已經(jīng)明確數(shù)據(jù),日志,logstash pipeline實(shí)例文件的存儲(chǔ)位置,保持默認(rèn)即可;
# “http.host”參數(shù)指定數(shù)據(jù)輸入主機(jī),默認(rèn)為localhost;“http.port”參數(shù)指定數(shù)據(jù)輸入端口,默認(rèn)為9600~9700(每實(shí)例占用1個(gè)),此驗(yàn)證暫時(shí)不做變更
[root@elk-node1 ~]# cd /etc/logstash/
[root@elk-node1 logstash]# cat logstash.yml | grep -v "#"
path.data: /var/lib/logstash path.config: /etc/logstash/conf.d path.logs: /var/log/logstash

2)pipeline文件

# 根據(jù)默認(rèn)配置,pipeline實(shí)例文件默認(rèn)應(yīng)放置于/etc/logstash/conf.d目錄,此時(shí)目錄下無實(shí)例文件,可根據(jù)實(shí)際情況新建實(shí)例,以處理本機(jī)messages信息為例,如下:
[root@elk-node1 ~]# cd /etc/logstash/conf.d/
[root@elk-node1 conf.d]# vim messages.conf # pipeline實(shí)例文件以”input”,”output”,”filter”等區(qū)域組成,前兩者為必選項(xiàng);
# ”input”與”output”利用插件進(jìn)行數(shù)據(jù)輸入與輸出,如這里”file”即輸入插件,“elasticseach”與“stdout”即輸出插件;
# 在各插件內(nèi)再具體定義行為,如”input”定義了數(shù)據(jù)源,“elasticseach”定義了輸出節(jié)點(diǎn)與數(shù)據(jù)輸出的索引與格式;
# “codec => rubydebug”會(huì)產(chǎn)生大量的debug文件至message(也可重定向到其他位置),此處注釋掉;
input {file {path => "/var/log/messages"}
}
output {elasticsearch {hosts => ["10.11.4.151:9200","10.11.4.152:9200"]index => "messages-%{+YYYY.MM.dd}"}stdout {
#        codec => rubydebug}
}# 請(qǐng)注意權(quán)限,這里message常規(guī)權(quán)限是400,logstash無法讀取,如果無法調(diào)用,在logstash的啟動(dòng)日志中會(huì)有相應(yīng)的記錄
[root@elk-node1 conf.d]# cd ..
[root@elk-node1 logstash]# chown -R logstash:logstash conf.d/
[root@elk-node1 ~]# chmod 644 /var/log/messages

4. 啟動(dòng)并驗(yàn)證

1)啟動(dòng)測(cè)試

# logstash可以啟動(dòng),但此種驗(yàn)證方式會(huì)有告警
[root@elk-node1 ~]# cd /usr/share/logstash/
[root@elk-node1 logstash]# bin/logstash -e 'input { stdin { } } output { stdout {} }'

# 按提示方式處理,在"$LS_HOME"下建立"config"目錄,并將"/etc/logstash/"下的文件建軟鏈接到"config"目錄,再次執(zhí)行即可,如下:
[root@elk-node1 ~]# mkdir -p /usr/share/logstash/config/
[root@elk-node1 ~]# ln -s /etc/logstash/* /usr/share/logstash/config
[root@elk-node1 ~]# chown -R logstash:logstash /usr/share/logstash/config/

2)pipeline實(shí)例啟動(dòng)測(cè)試

[root@elk-node1 ~]# cd /usr/share/logstash/
[root@elk-node1 logstash]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/messages.conf -t

3)啟動(dòng)并驗(yàn)證

[root@elk-node1 ~]# systemctl start logstash

netstat

[root@elk-node1 ~]# netstat -tunlp

日志

[root@elk-node1 ~]# tailf /var/log/logstash/logstash-plain.log

head

瀏覽器訪問:http://10.11.4.151:9100

四.Kibana部署

yum源同elasticsearch,這里不再創(chuàng)建yum文件,直接安裝即可;如果一定要?jiǎng)?chuàng)建則另取1個(gè)名字,如kibana.repo。?

1. 安裝kibana

[root@elk-node1 ~]# yum install kibana -y

2. 設(shè)置開機(jī)啟動(dòng)

[root@elk-node1 ~]# systemctl daemon-reload
[root@elk-node1 ~]# systemctl enable kibana.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.?

3. 配置kibana

# 默認(rèn)配置文件:/etc/kibana/kibana.yml
[root@elk-node1 ~]# cd /etc/kibana/
[root@elk-node1 kibana]# vim /etc/kibana/kibana.yml
[root@elk-node1 kibana]# cat /etc/kibana/kibana.yml | grep -v "^$" | grep -v "#"
server.port: 5601                              #默認(rèn)即5601
server.host: "0.0.0.0"                         #允許被訪問
elasticsearch.url: "http://10.11.4.151:9200"   #es地址與端口?

4. 啟動(dòng)并驗(yàn)證

[root@elk-node1 ~]# systemctl restart kibana
[root@elk-node1 ~]# netstat -tunlp | grep 5601

五.Kibana展示

1)瀏覽器訪問:http://10.11.4.151:5601或者h(yuǎn)ttp://10.11.4.152:5601

2)需要在"Index name or pattern"處創(chuàng)建索引名,elassticsearch中并沒有以"logstash-*"命名的索引,則不能創(chuàng)建,新建索引對(duì)應(yīng)logstash的pipeline輸出插件定義的"index",即"messages-*",如下:

3)在"Index name or pattern"處填寫入正確的索引名字,"@timestamp"會(huì)自動(dòng)填充,點(diǎn)擊"create"創(chuàng)建,見到如下界面即索引創(chuàng)建完成;

4)在"Discover"頁(yè)面,可以搜索與瀏覽Elasticsearch中的數(shù)據(jù),默認(rèn)搜索的是最近15分鐘的數(shù)據(jù),可以自定義選擇時(shí)間。

轉(zhuǎn)載于:https://www.cnblogs.com/netonline/p/7554872.html

總結(jié)

以上是生活随笔為你收集整理的CentOS7部署ELK5.2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。