elasticsearch7主從集羣部署以及filebeat實戰

前提

爲了保證部署成功,先關閉防火牆

[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status elasticsearch.service 

然後去官網把對應的rpm包下載下來,本文使用7.4.0版本,大家也可以使用其他版本。我們可以把ELFK技術棧所有的包全下載下來,如果網速慢可以私信我哈,beat採集器go語言寫的,比較輕量,20多兆,不過其他都200多兆

elasticsearch-7.4.0-x86_64.rpm
cerebro-0.8.5-1.noarch.rpm
filebeat-7.4.0-x86_64.rpm
metricbeat-7.4.0-x86_64.rpm
packetbeat-7.4.0-x86_64.rpm
kibana-7.4.0-x86_64.rpm
logstash-7.4.0.rpm
packetbeat-7.4.0-x86_64.rpm

下載好相應的包後,使用rpm -ivh rpm包路徑安裝

常用配置項:

  • cluster.name: 集羣的名稱
  • path.data: es節點數據的存放目錄
  • path.logs: es節點日誌存放目錄,
  • network.host: 一般設置爲其他網絡也可以訪問
  • discovery.seed_hosts: 集羣節點,列表形式
  • cluster.initial_master_nodes: 可以進行選舉的節點,列表形式

實際生產環境裏面path.data目錄和path.logs目錄都要修改爲其他路徑,這裏是測試機,我沒有改

集羣配置

節點一配置:

[root@localhost ~]# grep -v '^#' /etc/elasticsearch/elasticsearch.yml 
cluster.name: my-application
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.10.31.6", "10.10.31.5"]
cluster.initial_master_nodes: ["10.10.31.6", "10.10.31.5"]

節點二配置

[root@localhost ~]# grep -v '^#' /etc/elasticsearch/elasticsearch.yml 
cluster.name: my-application
node.name: node-2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.10.31.6", "10.10.31.5"]

然後分別更改 jvm,也就是最大堆內存,和最小堆內存,默認是1g,作爲測試機,我改爲128m,其實做實驗已經夠用了,如果你的內存小,1g可能起不來

-Xms128m
-Xmx128m

systemctl start elasticsearch啓動,然後測試一下:

curl localhost:9200

瀏覽器訪問測試
在這裏插入圖片描述

cerebro安裝

對於查看集羣環境,cerebro是很好的工具,可以不用es-head插件,這個一般用ELK6的人用的多,ELK7我們就使用cerebro插件來檢查整個集羣的環境 默認監聽9000端口
下載:rpm -ivh cerebro-0.8.5-1.noarch.rpm

修改數據目錄

[root@es-node1 ~]# vim /etc/cerebro/application.conf
data.path = "/tmp/cerebro.db"
[root@es-node1 ~]# systemctl enable cerebro

然後啓動,在瀏覽器中訪問,連接某個節點,可以查看整個集羣。
在這裏插入圖片描述
在這裏插入圖片描述

kibana安裝

把rpm包安裝之後,配置一下kibana,把它配置成中文,並且把地址配置成0.0.0.0,這樣纔可以正常訪問

[root@localhost elasticsearch]# grep -v '^#' /etc/kibana/kibana.yml | grep -v '^$'
server.host: "0.0.0.0"
i18n.locale: "zh-CN"

kibana默認監聽在5601端口,使用瀏覽器打開,kibana中主要是拿來做可視化的,也可以對es進行操作,並且支持語法,關鍵字的自動補全。

使用kibana運行命令

在這裏插入圖片描述

filebeat安裝

rpm安裝

[root@localhost ~]# rpm -ivh filebeat-7.4.0-x86_64.rpm 
warning: filebeat-7.4.0-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:filebeat-7.4.0-1                 ################################# [100%]
[root@localhost ~]# systemctl enable filebeat.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/filebeat.service to /usr/lib/systemd/system/filebeat.service.
[root@localhost ~]# systemctl start filebeat.service 

默認配置文件是/etc/filebeat/filebeat.yml,我們可以自己寫一個,然後啓動的時候指定配置文件

聊聊filebeat

先看看官網的圖,beat是輕量級的數據採集器,beat是go語言寫的,之前使用logstash的時候,logstash有一些缺點,比如他啓動的時候非常慢,非常佔內存,他是用Java寫的,要在每個生產環境下都要裝一個Java環境,跑一個logstash,我之前測試過,在相同的環境下,跑logstash,佔用600多兆,但是filebeat只佔用了40多兆,有時候logstash如果佔用過多系統資源的使用,可能會導致我們的業務機的性能下降,那採集個日誌還影響了業務機的性能,這個是非常不划算的,所以後面增加了filebeat。

所以有同學說,這個logstash沒用,實際上,它非常有用,我們後續介紹它

filebeat架構

input組件負責管理收割機從哪個路徑去查找指定的數據。

收割機的作用是負責監控是否有新的數據輸入,如果有新的數據輸入,負責逐行讀取數據,把它輸出到指定的位置上,比如es,logstash,kafka等等

Spooler是數據處理程序,數據緩存,
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

filebeat基本使用

在這裏插入圖片描述
offset

filebeat讀取文件內容到es集羣

使用以下配置文件啓動,收集nginx日誌到es集羣,這裏是先測試一下,實際上,如果我們的索引名字直接寫死了,那麼這個索引以後就會越來越大,我們一般會按天或按月切割。

filebeat.inputs:
  - type: log
    paths: /var/log/nginx/access.log
    enabled: true
 output.elasticsearch:
   hosts:["10.10.31.5:9200","10.10.31.6:9200"]
   index: nginx-access.log
setup.template.name: nginx
setup.template.pattern: nginx-*

必須要設置template不然會報錯的,並且我們的template.pattern要匹配到index
改索引名這裏找了很久兩三個小時,纔在官網上找到說你要把這個關掉
在這裏插入圖片描述

filebeat採集系統日誌

系統日誌其實很寬泛,所有索引都打到這上面就很不合適
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

使用kibana查看索引
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

收集nginx日誌

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章