ELK日志分析系統(tǒng)部署文檔

Elasticsearch集群

主機(jī)環(huán)境

主機(jī)名 IP 操作系統(tǒng) 角色
logstash 192.168.25.129 CentOS-7.7 logstash
es-master 192.168.25.130 CentOS-7.7 elasticsearch主節(jié)點(diǎn)/數(shù)據(jù)節(jié)點(diǎn)
es-node1 192.168.25.131 CentOS-7.7 elasticsearch數(shù)據(jù)節(jié)點(diǎn)
es-node2-kibana 192.168.25.128 CentOS-7.7 elasticsearch數(shù)據(jù)節(jié)點(diǎn)/kibana
redis-beat 192.168.25.132 CentOS-7.7 redis/filebeat
# 軟件版本
cerebro-0.9.2 
elasticsearch-7.8.0
filebeat-7.8.0
jdk-13.0.2
kibana-7.8.0
logstash-7.8.0
# 修改主機(jī)名
[root@localhost ~]# hostnamectl set-hostname logstash
[root@localhost ~]# hostnamectl set-hostname es-master
[root@localhost ~]# hostnamectl set-hostname es-node1
[root@localhost ~]# hostnamectl set-hostname es-node2-kibana
[root@localhost ~]# hostnamectl set-hostname redis-beat
# 修改hosts
[root@es-master ~]# cat >> /etc/hosts <<-EOF    # 五臺機(jī)器都需要操作
192.168.25.128 es-node2-kibana
192.168.25.129 logstash
192.168.25.130 es-master
192.168.25.131 es-node1
192.168.25.132 redis-beat
EOF
# 節(jié)點(diǎn)之間互相測試俩檬,保證配置正確
[root@es-master ~]# ping logstash
[root@es-master ~]# ping es-master
[root@es-master ~]# ping es-node1
[root@es-master ~]# ping es-node2-kibana
[root@es-master ~]# ping redis-beat
# 關(guān)閉防火墻&selinux(所有節(jié)點(diǎn)都需要操作)
[root@es-master ~]# systemctl stop firewalld.service
[root@es-master ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@es-master ~]# setenforce 0
# 時間同步(所有節(jié)點(diǎn)都需要操作)
[root@es-master ~]# vim /etc/chrony.conf               # 編輯配置文件
server4 time1.aliyun.com iburst                       # 配置時間服務(wù)器地址
[root@es-master ~]# systemctl restart chronyd.service  # 重啟進(jìn)程
[root@es-master ~]# chronyc sources -v                 # 查看時間信息
210 Number of sources = 1

節(jié)點(diǎn)環(huán)境配置

# 部署jdk
'logstash燃少、es-master挑童、es-node1、es-node2-kebana 均需要安裝
[root@es-master ~]# yum -y install epel-release.noarch
[root@es-master ~]# tar xf jdk-13.0.2_linux-x64_bin.tar.gz -C /usr/local/
[root@es-master ~]# cd /usr/local/
[root@es-master local]# ln -s jdk-13.0.2/ java/
[root@es-master ~]# vim /etc/profile     # 添加 java 環(huán)境變量
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
[root@es-master ~]# source /etc/profile  # 重載環(huán)境變量
# 修改文件限制
'logstash眨补、es-master、es-node1幻梯、es-node2-kebana 均需要設(shè)置
[root@es-master ~]# cat >>/etc/security/limits.conf <<-EOF
# 增加以下內(nèi)容
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
elk soft memlock unlimited
elk hard memlock unlimited
EOF

- `soft nproc`  : '單個用戶可用的最大進(jìn)程數(shù)量(超過會警告);
- `hard nproc`  : '單個用戶可用的最大進(jìn)程數(shù)量(超過會報(bào)錯);
- `soft nofile` : '可打開的文件描述符的最大數(shù)(超過會警告);
- `hard nofile` : '可打開的文件描述符的最大數(shù)(超過會報(bào)錯);
limits.conf這里的配置算行,只適用于通過PAM認(rèn)證登錄用戶的資源限制刨仑,它對 systemd 的 service 的資源限制不生效郑诺。登錄用戶的限制绞呈,通過 /etc/security/limits.conf 來配置對于 'systemd service的資源限制',現(xiàn)在放在 /etc/systemd/system.conf 和 /etc/systemd/user.conf這兩個文件里面了间景,主要就是 /etc/systemd/system.conf 這個文件
'logstash、es-master艺智、es-node1倘要、es-node2-kebana 均需要設(shè)置
[root@es-master ~]# cat >>/etc/systemd/system.conf<<-EOF
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
EOF
- `nproc` '操作系統(tǒng)級別對每個用戶創(chuàng)建的進(jìn)程數(shù)的限制
- `nofile` '是每個進(jìn)程可以打開的文件數(shù)的限制
# 調(diào)整虛擬內(nèi)存&最大并發(fā)連接
'logstash、es-master十拣、es-node1封拧、es-node2-kebana 均需要設(shè)置
[root@es-master ~]# cat  >>/etc/sysctl.conf<<-EOF
#增加的內(nèi)容
vm.max_map_count=655360
fs.file-max=655360
vm.swappiness=0
EOF
[root@es-master ~]# sysctl -p
- `max_map_count` 文件包含限制一個進(jìn)程可以擁有的VMA(虛擬內(nèi)存區(qū)域)的數(shù)量。虛擬內(nèi)存區(qū)域是一個連續(xù)的虛擬地址空間區(qū)域夭问。在進(jìn)程的生命周期中泽西,每當(dāng)程序嘗試在內(nèi)存中映射文件,鏈接到共享內(nèi)存段缰趋,或者分配堆空間的時候捧杉,這些區(qū)域?qū)⒈粍?chuàng)建。調(diào)優(yōu)這個值將限制進(jìn)程可擁有VMA的數(shù)量秘血。限制一個進(jìn)程擁有VMA的總數(shù)可能導(dǎo)致應(yīng)用程序出錯味抖,因?yàn)楫?dāng)進(jìn)程達(dá)到了VMA上線但又只能釋放少量的內(nèi)存給其他的內(nèi)核進(jìn)程使用時,操作系統(tǒng)會拋出內(nèi)存不足的錯誤灰粮。如果你的操作系統(tǒng)在NORMAL區(qū)域僅占用少量的內(nèi)存仔涩,那么調(diào)低這個值可以幫助釋放內(nèi)存給內(nèi)核用。
- `fs.file-max`   決定了系統(tǒng)級別所有進(jìn)程可以打開的文件描述符的數(shù)量限制粘舟。
- `swappiness`    的值的大小對如何使用swap分區(qū)是有著很大的聯(lián)系的熔脂。swappiness=0的時候表示最大限度使用物理內(nèi)存,然后才是 swap空間柑肴,swappiness=100的時候表示積極的使用swap分區(qū)霞揉,并且把內(nèi)存上的數(shù)據(jù)及時的搬運(yùn)到swap空間里面。linux的基本默認(rèn)設(shè)置為60
# 給 ELK 用戶添加免密 sudo
'logstash嘉抒、es-master零聚、es-node1、es-node2-kebana 均需要設(shè)置
[root@es-master ~]# useradd elk
[root@es-master ~]# visudo
# 添加以下內(nèi)容(加入到wheel組)
elk        ALL=(ALL)       NOPASSWD: ALL
# 重啟
'logstash些侍、es-master隶症、es-node1、es-node2-kebana 均需要設(shè)置
[root@es-master ~]# reboot

安裝 Elasticsearch

# 部署elk運(yùn)行環(huán)境
'es-master岗宣、es-node1蚂会、es-node2-kebana 均需要配置
# 切換用戶到 elk
[root@es-master]# su - elk
# 創(chuàng)建elkaPP目錄并設(shè)置所有者
[elk@es-master]$ sudo mkdir /usr/local/elkapp
# 創(chuàng)建ELK數(shù)據(jù)目錄并設(shè)置所有者
[elk@es-master]$ sudo mkdir /usr/local/elkdata
# 創(chuàng)建Elasticsearch主目錄
[elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es
# 創(chuàng)建Elasticsearch數(shù)據(jù)目錄
[elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es/data
# 創(chuàng)建Elasticsearch日志目錄
[elk@es-master]$ sudo mkdir -p /usr/local/elkdata/es/log
# 設(shè)置目錄權(quán)限
[elk@es-master]$ sudo chown -R elk:elk /usr/local/elkapp
[elk@es-master]$ sudo chown -R elk:elk /usr/local/elkdata
# 下載elasticsearch
'es-master、es-node1耗式、es-node2-kebana 均需要下載
[elk@es-master]$ cd /usr/local/src
[elk@es-master src]$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
[elk@es-master src]$ sudo tar -xf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/elkapp
[elk@es-master local]$ cd elkapp
[elk@es-master elkapp]$ sudo ln -s /usr/local/elkapp/elasticsearch-7.8.0/ /usr/local/elkapp/elasticsearch

配置elasticsearch

Elasticsearch 7 目錄結(jié)構(gòu)如下:
- `bin`     : '腳本文件胁住,包括 ES 啟動 & 安裝插件等等
- `config`  : 'elasticsearch.yml(ES 配置文件)趁猴、jvm.options(JVM 配置文件)、日志配置文件等等
- `JDK`     : '內(nèi)置的 JDK彪见,JAVA_VERSION="12.0.1"
- `lib`     : '類庫
- `logs`    : '日志文件
- `modules` : 'ES 所有模塊儡司,包括 X-pack 等
- `plugins` : 'ES 已經(jīng)安裝的插件。默認(rèn)沒有插件
- `data`    : 'ES 啟動的時候余指,會有該目錄捕犬,用來存儲文檔數(shù)據(jù)。該目錄可以設(shè)置
# elasticsearch 配置文件說明
cluster.name: elasticsearch
# 配置的集群名稱酵镜,默認(rèn)是elasticsearch碉碉,es服務(wù)會通過廣播方式自動連接在同一網(wǎng)段下的es服務(wù),通過多播方式進(jìn)行通信淮韭,同一網(wǎng)段下可以有多個集群垢粮,通過集群名稱這個屬性來區(qū)分不同的集群。
 
node.name: "node-1"
# 當(dāng)前配置所在機(jī)器的節(jié)點(diǎn)名靠粪,你不設(shè)置就默認(rèn)隨機(jī)指定一個name列表中名字蜡吧,該name列表在es的jar包中config文件夾里name.txt文件中,其中有很多作者添加的有趣名字占键。

node.attr.rack: r1
# 向節(jié)點(diǎn)添加自定義屬性

node.max_local_storage_nodes: 3
# 這個配置限制了單節(jié)點(diǎn)上可以開啟的ES存儲實(shí)例的個數(shù)斩跌,我們需要開多個實(shí)例,因此需要把這個配置寫到配置文件中捞慌,并為這個配置賦值為2或者更高

node.master: true
# 指定該節(jié)點(diǎn)是否有資格被選舉成為node(注意這里只是設(shè)置成有資格耀鸦, 不代表該node一定就是master),默認(rèn)是true啸澡,es是默認(rèn)集群中的第一臺機(jī)器為master袖订,如果這臺機(jī)掛了就會重新選舉master。
 
node.data: true
# 指定該節(jié)點(diǎn)是否存儲索引數(shù)據(jù)嗅虏,默認(rèn)為true洛姑。
 
index.number_of_shards: 5
# 設(shè)置默認(rèn)索引分片個數(shù),默認(rèn)為5片皮服。
 
index.number_of_replicas: 1
# 設(shè)置默認(rèn)索引副本個數(shù)楞艾,默認(rèn)為1個副本。如果采用默認(rèn)設(shè)置龄广,而你集群只配置了一臺機(jī)器硫眯,那么集群的健康度為yellow,也就是所有的數(shù)據(jù)都是可用的择同,但是某些復(fù)制沒有被分配
# (健康度可用 curl 'localhost:9200/_cat/health?v' 查看两入, 分為綠色、黃色或紅色敲才。綠色代表一切正常裹纳,集群功能齊全择葡,黃色意味著所有的數(shù)據(jù)都是可用的,但是某些復(fù)制沒有被分配剃氧,紅色則代表因?yàn)槟承┰蛎舸ⅲ承?shù)據(jù)不可用)。
 
path.conf: /path/to/conf
# 設(shè)置配置文件的存儲路徑朋鞍,默認(rèn)是es根目錄下的config文件夾虹曙。
 
path.data: /path/to/data
# 設(shè)置索引數(shù)據(jù)的存儲路徑,默認(rèn)是es根目錄下的data文件夾番舆,可以設(shè)置多個存儲路徑,用逗號隔開矾踱,例:
# path.data: /path/to/data1,/path/to/data2
 
path.work: /path/to/work
# 設(shè)置臨時文件的存儲路徑恨狈,默認(rèn)是es根目錄下的work文件夾。
 
path.logs: /path/to/logs
# 設(shè)置日志文件的存儲路徑呛讲,默認(rèn)是es根目錄下的logs文件夾 
 
path.plugins: /path/to/plugins
# 設(shè)置插件的存放路徑禾怠,默認(rèn)是es根目錄下的plugins文件夾, 插件在es里面普遍使用,用來增強(qiáng)原系統(tǒng)核心功能贝搁。
 
bootstrap.memory_lock: true
# 設(shè)置為true來鎖住內(nèi)存不進(jìn)行swapping吗氏。因?yàn)楫?dāng)jvm開始swapping時es的效率 會降低,所以要保證它不swap雷逆,可以把ES_MIN_MEM和ES_MAX_MEM兩個環(huán)境變量設(shè)置成同一個值弦讽,并且保證機(jī)器有足夠的內(nèi)存分配給es。 同時也要允許elasticsearch的進(jìn)程可以鎖住內(nèi)# # 存膀哲,linux下啟動es之前可以通過`ulimit -l unlimited`命令設(shè)置往产。
 
network.host: 192.168.0.1
# 設(shè)置綁定的ip地址,可以是ipv4或ipv6的某宪,默認(rèn)為0.0.0.0仿村,綁定這臺機(jī)器的任何一個ip。
# 其它節(jié)點(diǎn)和該節(jié)點(diǎn)交互的ip地址兴喂,如果不設(shè)置它會自動判斷蔼囊,值必須是個真實(shí)的ip地址
 
transport.tcp.port: 9300
# 設(shè)置節(jié)點(diǎn)之間交互的tcp端口,默認(rèn)是9300衣迷。
 
transport.tcp.compress: true
# 設(shè)置是否壓縮tcp傳輸時的數(shù)據(jù)畏鼓,默認(rèn)為false,不壓縮壶谒。
 
http.port: 9200
# 設(shè)置對外服務(wù)的http端口滴肿,默認(rèn)為9200。 
 
http.enabled: false
# 是否使用http協(xié)議對外提供服務(wù)佃迄,默認(rèn)為true泼差,開啟贵少。
 
gateway.recover_after_nodes: 1
# 設(shè)置集群中N個節(jié)點(diǎn)啟動時進(jìn)行數(shù)據(jù)恢復(fù),默認(rèn)為1堆缘。
 
gateway.recover_after_time: 5m
# 設(shè)置初始化數(shù)據(jù)恢復(fù)進(jìn)程的超時時間滔灶,默認(rèn)是5分鐘。
 
gateway.expected_nodes: 2
# 設(shè)置這個集群中節(jié)點(diǎn)的數(shù)量吼肥,默認(rèn)為2录平,一旦這N個節(jié)點(diǎn)啟動,就會立即進(jìn)行數(shù)據(jù)恢復(fù)缀皱。
 
cluster.routing.allocation.node_initial_primaries_recoveries: 4
# 初始化數(shù)據(jù)恢復(fù)時斗这,并發(fā)恢復(fù)線程的個數(shù),默認(rèn)為4啤斗。
 
cluster.routing.allocation.node_concurrent_recoveries: 2
# 添加刪除節(jié)點(diǎn)或負(fù)載均衡時并發(fā)恢復(fù)線程的個數(shù)表箭,默認(rèn)為4。
 
indices.recovery.max_size_per_sec: 0
# 設(shè)置數(shù)據(jù)恢復(fù)時限制的帶寬钮莲,如入100mb免钻,默認(rèn)為0,即無限制崔拥。
 
indices.recovery.concurrent_streams: 5
# 設(shè)置這個參數(shù)來限制從其它分片恢復(fù)數(shù)據(jù)時最大同時打開并發(fā)流的個數(shù)极舔,默認(rèn)為5。
 
discovery.zen.minimum_master_nodes: 1
# 設(shè)置這個參數(shù)來保證集群中的節(jié)點(diǎn)可以知道其它N個有master資格的節(jié)點(diǎn)链瓦。默認(rèn)為1拆魏,對于大的集群來說,可以設(shè)置大一點(diǎn)的值(2-4)
 
discovery.zen.ping.timeout: 3s
# 設(shè)置集群中自動發(fā)現(xiàn)其它節(jié)點(diǎn)時ping連接超時時間慈俯,默認(rèn)為3秒稽揭,對于比較差的網(wǎng)絡(luò)環(huán)境可以高點(diǎn)的值來防止自動發(fā)現(xiàn)時出錯。
 
discovery.zen.ping.multicast.enabled: false
# 設(shè)置是否打開多播發(fā)現(xiàn)節(jié)點(diǎn)肥卡,默認(rèn)是true溪掀。
 
discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]
# 設(shè)置集群中master節(jié)點(diǎn)的初始列表,可以通過這些節(jié)點(diǎn)來自動發(fā)現(xiàn)新加入集群的節(jié)點(diǎn)

# head 插件需要這打開這兩個配置
# 是否開啟跨域訪問 
http.cors.enabled: true
# 開啟跨域訪問后的地址限制步鉴,*表示無限制
http.cors.allow-origin: “*

#開啟 xpack 功能揪胃,如果要禁止使用密碼,請將以下內(nèi)容注釋氛琢,直接啟動不需要設(shè)置密碼
 xpack.security.enabled: true
 xpack.security.transport.ssl.enabled: true
 xpack.security.transport.ssl.verification_mode: certificate
 xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
# 配置主節(jié)點(diǎn)
[elk@es-master]$ cd /usr/local/elkapp/elasticsearch/config/
[elk@es-master config]$ mv elasticsearch.yml{,.bak}
[elk@es-master config]$ cat elasticsearch.yml | grep -v '^#'
cluster.name: my-es
node.name: es-master
node.master: true
node.data: true
bootstrap.memory_lock: true
path.data: /usr/local/elkdata/es/data
path.logs: /usr/local/elkdata/es/logs
network.host: 192.168.25.130
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"]
cluster.initial_master_nodes: ["es-master"]
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置node1數(shù)據(jù)節(jié)點(diǎn)
[elk@es-node1 ~]$ cd /usr/local/elkapp/elasticsearch/config/
[elk@es-node1 config]$ cat elasticsearch.yml | grep -v '^#'
cluster.name: my-es
node.name: es-node1
node.data: true
bootstrap.memory_lock: true
path.data: /usr/local/elkdata/es/data
path.logs: /usr/local/elkdata/es/logs
network.host: 192.168.25.131
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"]
cluster.initial_master_nodes: ["es-master"]
# 配置node2數(shù)據(jù)節(jié)點(diǎn)
[elk@es-node2-kibana ~]$ cd /usr/local/elkapp/elasticsearch/config/
[elk@es-node2-kibana config]$ cat elasticsearch.yml | grep -v '^#'
cluster.name: my-es
node.name: es-node2
node.data: true
bootstrap.memory_lock: true
path.data: /usr/local/elkdata/es/data
path.logs: /usr/local/elkdata/es/logs
network.host: 192.168.25.128
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.25.130", "192.168.25.131","192.168.25.128"]
cluster.initial_master_nodes: ["es-master"]
# 重新賦權(quán)喊递,否則服務(wù)啟動不了,也不會報(bào)錯
'es-master阳似、es-node1骚勘、es-node2-kebana 均需要
[elk@es-master]$ sudo chown -R elk:elk /usr/local/elkapp
[elk@es-master]$ sudo chown -R elk:elk /usr/local/elkdata

配置elasticsearch通過systemctl管理啟動

[elk@es-master ~]$ sudo vim /etc/systemd/system/elasticsearch.service
# 內(nèi)容如下
[Unit]
Description=elasticsearch
[Service]
User=elk
Group=elk
LimitMEMLOCK=infinity
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/elkapp/elasticsearch/bin/elasticsearch
[Install]
WantedBy=multi-user.target

[elk@es-master ~]$ sudo systemctl daemon-reload
[elk@es-master ~]$ sudo systemctl start elasticsearch 
[elk@es-master ~]$ sudo systemctl enable elasticsearch

測試elasticsearch集群

# 查看是否有9200的端口
[elk@es-master ~]$ sudo ss -anput | grep 9200
tcp    LISTEN     0      128      ::ffff:192.168.25.130:9200                 :::*                   users:(("java",pid=14571,fd=318))
# 查看elasticsearch進(jìn)程
[elk@es-master ~]$ ps -ef | grep elasticsearch
elk       14571      1  4 13:29 ?        00:00:30 /usr/local/elkapp/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -XX:+ShowCodeDetailsInExceptionMessages -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT -Xms1g -Xmx1g -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -Djava.io.tmpdir=/tmp/elasticsearch-3697254133112113797 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/usr/local/elkapp/elasticsearch -Des.path.conf=/usr/local/elkapp/elasticsearch/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /usr/local/elkapp/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch
elk       14759  14571  0 13:29 ?        00:00:00 /usr/local/elkapp/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
elk       14832   9365  0 13:40 pts/0    00:00:00 grep --color=auto elasticsearch
瀏覽器訪問測試(firefox體驗(yàn)最佳)
/查看單個集群節(jié)點(diǎn)狀態(tài)
http://192.168.25.130:9200/
name                                       : "es-master"
cluster_name                               : "my-es"
cluster_uuid                               : "kYVJyxh_SyGM59Xnw95Zyw"
 version
   number                                  : "7.8.0"
   build_flavor                            : "default"
   build_type                              : "tar"
   build_hash                              : "757314695644ea9a1dc2fecd26d1a43856725e65"
   build_date                              : "2020-06-14T19:35:50.234439Z"
   build_snapshot                          : false
   lucene_version                          : "8.5.1"
   minimum_wire_compatibility_version      : "6.8.0",
   minimum_index_compatibility_version     : "6.0.0-beta1"
tagline                                    : "You Know, for Search"
/查看集群健康狀態(tài)
http://192.168.25.130:9200/_cluster/health     # firefox
cluster_name                        :"my-es"
status                              :"green"    // 集群狀態(tài)
timed_out                           :false     
number_of_nodes                     :3
number_of_data_nodes                :3          // 數(shù)據(jù)節(jié)點(diǎn)數(shù)量
active_primary_shards               :1          // 主分片數(shù)量
active_shards                       :2          // 可用的分片數(shù)量
relocating_shards                   :0          // 正在重新分配的分片數(shù)量,在新加或者減少節(jié)點(diǎn)的時候會發(fā)生
initializing_shards                 :0          // 正在初始化的分片數(shù)量,新建索引或者剛啟動會存在俏讹,時間很短
unassigned_shards                   :0          // 沒有分配的分片当宴,一般就是那些名存實(shí)不存的副本分片
delayed_unassigned_shards           :0          // 延遲未分配的分片數(shù)量
number_of_pending_tasks             :0          // 等待執(zhí)行任務(wù)數(shù)量
number_of_in_flight_fetch           :0          // 正在執(zhí)行的數(shù)量
task_max_waiting_in_queue_millis    :0          // 任務(wù)在隊(duì)列中等待的較大時間(毫秒)
active_shards_percent_as_number     :100.0      // 任務(wù)在隊(duì)列中等待的較大時間(毫秒)

// Elasticsearch 集群健康狀態(tài)分為三種
'green'   // 最健康得狀態(tài),說明所有的分片包括備份都可用; 這種情況Elasticsearch集群所有的主分片和副本分片都已分配, Elasticsearch集群是 100% 可用的泽疆。
'yellow'  // 基本的分片可用户矢,但是備份不可用(或者是沒有備份); 這種情況Elasticsearch集群所有的主分片已經(jīng)分片了,但至少還有一個副本是缺失的殉疼。不會有數(shù)據(jù)丟失梯浪,所以搜索結(jié)果依然是完整的。不過瓢娜,你的高可用性在某種程度上被弱化挂洛。如果 更多的 分片消失,你就會丟數(shù)據(jù)了眠砾。把 yellow 想象成一個需要及時調(diào)查的警告虏劲。
'red'    // 部分的分片可用,表明分片有一部分損壞荠藤。此時執(zhí)行查詢部分?jǐn)?shù)據(jù)仍然可以查到,遇到這種情況获高,還是趕快解決比較好; 這種情況Elasticsearch集群至少一個主分片(以及它的全部副本)都在缺失中哈肖。這意味著你在缺少數(shù)據(jù):搜索只能返回部分?jǐn)?shù)據(jù),而分配到這個分片上的寫入請求會返回一個異常念秧。
# 查看ES集群支持的選項(xiàng)
http://192.168.25.128:9200/_cat
=^.^=
/cat/allocation # 查看磁盤的分配情況
/cat/shards    # 查看節(jié)點(diǎn)包含哪些分片的詳細(xì)視圖
/cat/shards/{index} # 查看指定索引節(jié)點(diǎn)包含哪些分片的詳細(xì)視圖
/cat/master # 返回關(guān)于主節(jié)點(diǎn)的相關(guān)信息
/cat/nodes  # 查看集群的節(jié)點(diǎn)情況
/cat/tasks  # 查看es集群內(nèi)部任務(wù)執(zhí)行的情況
/cat/indices    # 查看集群的索引健康狀態(tài)
/cat/indices/{index}    # 查看集群的索引健康狀態(tài)(指定索引)
/cat/segments   # 查詢集群中Lucene數(shù)據(jù)段的信息淤井,segment是ES中一個數(shù)據(jù)段,每次refresh都會生成一個新的segmen摊趾。elasticsearch有一個后臺進(jìn)程專門負(fù)責(zé)segment的合并币狠,它會把小segments合并成更大的segments,然后反復(fù)這樣
/cat/segments/{index}   # 查詢集群中Lucene數(shù)據(jù)段的信息(指定索引)
/cat/count  # 返回集群中文檔的計(jì)數(shù)
/cat/count/{index}  # 返回指定索引的文檔計(jì)數(shù)
/cat/recovery   # 查看索引回復(fù)的情況
/cat/recovery/{index}   # 查看指定索引回復(fù)的情況
/cat/health # 查看集群健康狀態(tài)
/cat/pending_tasks  # 查詢集群中被掛起的任務(wù)
/cat/aliases    # 查看集群別名列表
/cat/aliases/{alias}    # 查看指定索引的別名情況
/cat/thread_pool    # 查詢es內(nèi)部線程池的情況
/cat/thread_pool/{thread_pools}  # 查詢es內(nèi)部線程池中指定線程的情況
/cat/plugins    # 查詢es插件列表
/cat/fielddata    # 查詢集群中每個節(jié)點(diǎn)中的fileddata所使用的堆內(nèi)存
/cat/fielddata/{fields} # 查詢集群中每個節(jié)點(diǎn)中的fields所使用的堆內(nèi)存
/cat/nodeattrs  # 查看集群節(jié)點(diǎn)的屬性值
/cat/repositories   # 查看集群的快照存儲庫
/cat/snapshots/{repository} # 返回有關(guān)存儲在一個或多個存儲庫中的快照的信息
/_cat/templates     # 集群中索引模板的信息
# 查看 ES 節(jié)點(diǎn)信息
# 命令添加?v是人性化顯示砾层,下面帶星號的是我們的master節(jié)點(diǎn)
http://192.168.25.130:9200/_cat/nodes?v
ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.25.130           42          96   0    0.22    0.14     0.09 dilmrt    -      es-master
192.168.25.128           12          93   0    0.03    0.04     0.05 dilmrt    -      es-node2
192.168.25.131           55          96   0    0.00    0.03     0.05 dilmrt    *      es-node1
- `heap.percent`  ' 堆內(nèi)存占用百分比
- `ram.percent`   ' 內(nèi)存占用百分比
- `cpu`           ' CPU占用百分比
- `master`        ' * 表示節(jié)點(diǎn)是集群中的主節(jié)點(diǎn)
- `name`          ' 節(jié)點(diǎn)名
# 查看master節(jié)點(diǎn)信息
http://192.168.25.130:9200/_cat/master?v
id                     host           ip             node
qOQMbpHkSAqNIA7wCdkA9w 192.168.25.131 192.168.25.131 es-node1
# 查看 ES 集群的健康狀態(tài)
http://192.168.25.130:9200/_cat/health?v
epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1594039407 12:43:27  my-es   green           3         3      2   1    0    0        0             0                  -                100.0%

- `cluster `                     '集群名稱
- `status`                       '集群狀態(tài) green代表健康漩绵;yellow代表分配了所有主分片,但至少缺少一個副本肛炮,此時集群數(shù)據(jù)仍舊完整止吐;red代表部分主分片不可用,可能已經(jīng)丟失數(shù)據(jù)侨糟。
- `node.total`                   '代表在線的節(jié)點(diǎn)總數(shù)量
- `node.data`                    '代表在線的數(shù)據(jù)節(jié)點(diǎn)的數(shù)量
- `shards碍扔, active_shards`       '存活的分片數(shù)量
- `pri,active_primary_shards`   '存活的主分片數(shù)量 正常情況下 shards的數(shù)量是pri的兩倍秕重。
- `relo不同, relocating_shards`     '遷移中的分片數(shù)量,正常情況為 0
- `init, initializing_shards`   '初始化中的分片數(shù)量 正常情況為 0
- `unassign  unassigned_shards`  '未分配的分片 正常情況為 0
- `pending_tasks`                '準(zhǔn)備中的任務(wù)二拐,任務(wù)指遷移分片等 正常情況為 0
- `max_task_wait_time`           '任務(wù)最長等待時間
- `active_shards_percent`        '正常分片百分比 正常情況為 100% 
# 查看索引(列出所有索引, 并展示索引基本信息)
http://192.168.25.130:9200/_cat/indices?v
health status index      uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   index_name CyrKHbCAQcOJMHQU_K5kHg   1   1          1            0      8.7kb          4.3kb

- `health`                 '索引的健康狀態(tài)
- `index`                  '索引名
- `pri`                    '索引主分片數(shù)量
- `rep`                    '索引復(fù)制分片數(shù)量
- `store.size`             '索引主分片 復(fù)制分片 總占用存儲空間
- `pri.store.size`         '索引總占用空間, 不計(jì)算復(fù)制分片 占用空間
# 查看分片信息(列出集群中所有分片, 并展示基礎(chǔ)信息)
http://192.168.25.130:9200/_cat/shards?v
index      shard prirep state   docs store ip             node
index_name 0     p      STARTED    1 4.3kb 192.168.25.128 es-node2
index_name 0     r      STARTED    1 4.3kb 192.168.25.131 es-node1

- `index`    '索引名稱
- `shard`    '分片序號
- `prirep`   'p表示該分片是主分片, r 表示該分片是復(fù)制分片
- `store`    '該分片占用存儲空間
- `node`     '所屬節(jié)點(diǎn)節(jié)點(diǎn)名
- `docs`     '分片存放的文檔數(shù)
# 查看各節(jié)點(diǎn)機(jī)器存儲信息
http://192.168.25.130:9200/_cat/allocation?v'
shards disk.indices disk.used disk.avail disk.total disk.percent host            ip              node
     0           0b     2.9gb       92gb     94.9gb            3 192.168.25.131 192.168.25.131 es-node1
     0           0b     3.2gb     91.6gb     94.9gb            3 192.168.25.128 192.168.25.128 es-node2
     0           0b     3.4gb     91.4gb     94.9gb            3 192.168.25.130 192.168.25.130 es-master
     
- `shards`         '節(jié)點(diǎn)說承載的分片數(shù)
- `disk.indices`   '索引占用的空間大小
- `disk.used`      '節(jié)點(diǎn)所在機(jī)器已使用磁盤空間
- `disk.avail`     '節(jié)點(diǎn)可用磁盤空間
- `disk.total`     '節(jié)點(diǎn)總的磁盤空間
- `disk.percent`   '節(jié)點(diǎn)磁盤使用百分比
- `ip`             '節(jié)點(diǎn)所屬機(jī)器IP地址
- `node`           '節(jié)點(diǎn)名

創(chuàng)建文檔生成索引

[elk@es-master ~]$ curl -H "Content-Type:application/json" -XPUT 'http://192.168.25.130:9200/index_name/type_name/1?pretty' -d '{ "name": "xuwl", "age": 18, "job": "Linux" }'
{
  "_index" : "index_name",
  "_type" : "index_type",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

- `-H`                              '指定內(nèi)容類型
- `-X`                              '指定http請求方式服鹅,這里為PUT上傳方式
- `http://192.168.25.130:9200`      '指定一臺es服務(wù)器對外的http端口
- `/index_name`                     '文檔的索引名稱,必須小寫
- `/type_name`                      '文檔的類型名稱,必須小寫
- `/1`                              '文檔的ID編號
- `?pretty`                         '人性化創(chuàng)建索引
- `-d`                              '指定使用JSON方式來撰寫上傳文檔
- `{ "name": "xuwl", "age": 18, "job": "Linux" }'`    '使用JSON格式來撰寫上傳文檔內(nèi)容
[elk@es-master ~]$ curl -XGET 'http:#192.168.25.130:9200/_cat/indices?v'
health status index      uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   index_name uK-E0UPMTamByd24eamfUQ   1   1          1            0      8.3kb          4.1kb

[root@els-master ~]# curl -XGET 'http://192.168.25.130:9200/_cat/shards?v'
index      shard prirep state   docs store ip              node
index_name 0     p      STARTED    1 4.1kb 192.168.25.130 es-master
index_name 0     r      STARTED    1 4.2kb 192.168.25.128 es-node2

部署redis

'redis-beat 安裝配置'
[root@redis-beat ~]# yum install gcc gcc-c++ -y
[root@redis-beat ~]# cd /usr/local
[root@redis-beat local]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz
[root@redis-beat local]# tar zxvf redis-5.0.5.tar.gz
[root@redis-beat local]# cd redis-5.0.5
[root@redis-beat redis-5.0.5]# make
[root@redis-beat redis-5.0.5]# make install
[root@redis-beat ~]# ./utils/install_server.sh     # 啟動redis,配置redis
[root@redis-beat ~]# systemctl daemon-reload
[root@redis-beat ~]# systemctl start redis_6379
[root@redis-beat ~]# systemctl status redis_6379.service
[root@redis-beat ~]# /sbin/chkconfig redis_6379 on    # 設(shè)置開機(jī)啟動
[root@redis-beat ~]# vim /etc/redis/6379.conf
# 修改成如下內(nèi)容
bind 0.0.0.0
protected-mode no
# 重啟Redis
[root@redis-beat ~]# systemctl status redis_6379.service
# 測試
[root@redis-beat ~]# netstat -nltp|grep redis
[root@redis-beat ~]# ./redis-cli
127.0.0.1:6379> ping
PONG

部署head

# 安裝nodejs
[root@els-master ~]# curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash
[root@els-master ~]# yum install -y nodejs

# 驗(yàn)證
[root@els-master ~]# node -v
v10.16.0
[root@els-master ~]# npm -v
6.9.0

# 配置node源為taobao源
[root@els-master ~]# npm config set registry https://registry.npm.taobao.org
# 安裝head插件
[root@els-master ~]# git clone git://github.com/mobz/elasticsearch-head.git
[root@els-master ~]# cd elasticsearch-head
[root@els-master ~]# npm install --registry=https://registry.npm.taobao.org
[root@els-master ~]# npm run start &
[1] 15239
[elk@els-master elasticsearch-head]$
> elasticsearch-head@0.0.0 start /home/elk/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

部署cerebro(es監(jiān)控)

# 創(chuàng)建用戶
[root@redis-beat ~]# sudo useradd -s /sbin/nologin cerebro
[root@redis-beat ~]# wget https://github.com/lmenezes/cerebro/releases/download/v0.9.2/cerebro-0.9.2.tgz
[root@redis-beat ~]# mkdir /opt/cerebro
[root@redis-beat ~]# tar xf cerebro-0.9.2.tgz -C /opt/cerebro
[root@redis-beat ~]# ln -s /opt/cerebro/cerebro-0.9.2 /opt/cerebro/current
[root@redis-beat ~]# chown -R cerebro.cerebro /opt/cerebro
# 更改配置
[root@redis-beat ~]# mkdir /home/cerebro/data
[root@redis-beat ~]# chown -R cerebro.cerebro /home/cerebro
[root@redis-beat ~]# mv /opt/cerebro/current/conf/application.conf{,.bak}
[root@redis-beat ~]# tee /opt/cerebro/current/conf/application.conf << 'EOF'
secret="ki:s:[[@=Ag?QI`W2jMwkY:eqvrJ]JqoJyi2axj3ZvOv^/KavOT4ViJSv?6YY4[N"
basePath="/"
pidfile.path="/opt/cerebro/current/cerebro.pid"
data.path="/home/cerebro/data/cerebro.db"
es={
    gzip=true
}
auth={       # 訪問Cerebro的用戶名及密碼
    type: basic
    settings: {
        username="admin"
        password="1234.com"
    }
}
hosts=[   # 要監(jiān)控的Elasticsearch集群卓鹿,host:節(jié)點(diǎn)訪問地址菱魔,name:標(biāo)識,一般用ES的cluster_name
  {
    host="http://192.168.152.137:9200"
    name="es_log"
  }
]
EOF
# 啟動cerebro
[root@redis-beat ~]# /opt/cerebro/cerebro-0.9.2/bin/cerebro
[info] play.api.Play - Application started (Prod)
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
# 創(chuàng)建systemctl管理啟動
[root@redis-beat ~]# vim /opt/cerebro/current/bin/cerebro
JAVA_HOME=/usr/local/java     # 否則會找不到變量吟孙,systemctl啟動不了cerebro

[root@redis-beat ~]# tee /etc/systemd/system/cerebro.service << 'EOF'
[Unit]
Description=Cerebro
After=network.target

[Service]
Type=folking
PIDFile=/opt/cerebro/current/cerebro.pid
User=cerebro
Group=cerebro
LimitNOFILE=65535
ExecStart=/opt/cerebro/current/bin/cerebro -Dconfig.file=/opt/cerebro/current/conf/application.conf
Restart=on-failure
WorkingDirectory=/opt/cerebro/current

[Install]
WantedBy=multi-user.target
EOF

[root@redis-beat ~]# systemctl daemon-reload
[root@redis-beat ~]# systemctl enable cerebro
[root@redis-beat ~]# systemctl start cerebro
[root@redis-beat ~]# systemctl status cerebro

部署logstash

[elk@logstash ~]$ sudo mkdir /usr/local/elkapp && sudo mkdir -p /usr/local/elkdata/logstash/{date,logs} && sudo chown -R elk.elk /usr/local/elk*
[elk@logstash local]$ tar xf logstash-7.8.0.tar.gz -C /usr/local/elkapp/
[elk@logstash local]$ cd elkapp/
[elk@logstash elkapp]$ ln -s logstash-7.8.0/ logstash
[elk@logstash elkapp]$ sudo chown elk.elk /usr/local/elk* -R
# 配置logstash.yml
[elk@logstash elkapp]$ sudo vim logstash-7.8.0/config/logstash.yml
   path.data: /usr/local/elkdata/logstash/data
   path.logs: /usr/local/elkdata/logstash/logs
# 配置piplines.yml
[elk@logstash logstash]$ sudo mkdir conf.d
[elk@logstash logstash]$ vim config/pipelines.yml
  - pipeline.id: test
    pipeline.workers: 1
    path.config: "/usr/local/elkapp/logstash/conf.d/*.conf"
# 啟動logstash
[elk@logstash ~]$ /usr/local/elkapp/logstash/bin/logstash -f config/input-output.conf -t
- -f 指定配置文件
- -t 檢查配置是否語法正確

配置systemctl管理啟動

[elk@logstash ~]$ sudo vim /usr/local/elkapp/logstash/bin/logstash
JAVA_HOME=/usr/local/java
[elk@logstash ~]$ sudo vim /etc/systemd/system/logstash.service
# 內(nèi)容如下
[Unit]
Description=logstash
[Service]
User=elk
Group=elk
LimitMEMLOCK=infinity
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/elkapp/logstash/bin/logstash
[Install]
WantedBy=multi-user.target

[elk@logstash ~]$ sudo systemctl daemon-reload
[elk@logstash ~]$ sudo systemctl start logstash 
[elk@logstash ~]$ sudo systemctl enable logstash

部署filebeat

tar包安裝

# 下載安裝包
[root@redis-beat ~]# cd /usr/local/src
[root@redis-beat src]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-linux-x86_64.tar.gz
[root@redis-beat src]# tar -xf filebeat-7.8.0-linux-x86_64.tar.gz -C /usr/local/
[root@redis-beat src]# cd /usr/local/filebeat-7.8.0-linux-x86_64
[root@redis-beat local]# ln -s filebeat-7.8.0-linux-x86_64/ filebeat
[root@redis-beat filebeat-7.8.0-linux-x86_64]# ./filebeat -e -c filebeat.yml   # 測試
# 配置systemctl啟動
[root@redis-beat ~]# tee /etc/systemd/system/filebeat.service << 'EOF'
[Unit]
Description=filebeat server daemon
Documentation= /usr/local/filebeat/filebeat -help
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Environment="BEAT_CONFIG_OPTS=-c /usr/local/filebeat/filebeat.yml"
ExecStart= /usr/local/filebeat/filebeat $BEAT_CONFIG_OPTS
Restart=always

[Install]
WantedBy=multi-user.target
EOF
[root@redis-beat ~]# systemctl daemon-reload                  # 重載system 配置
[root@redis-beat ~]# systemctl start filebeat                  # 啟動filebeat服務(wù)
[root@redis-beat ~]# systemctl enable filebeat                 # 設(shè)置開機(jī)自啟動
[root@redis-beat ~]# systemctl disable filebeat                # 停止開機(jī)自啟動
[root@redis-beat ~]# systemctl status filebeat                 # 查看服務(wù)當(dāng)前狀態(tài)
[root@redis-beat ~]# systemctl restart filebeat               # 重新啟動服務(wù)
[root@redis-beat ~]# systemctl list-units --type=service       # 查看所有已啟動的服務(wù)

yum安裝

[root@redis-beat ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@redis-beat ~]# tee /etc/yum.repos.d/elastic.repo << 'EOF'
# 內(nèi)容如下
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
[root@redis-beat ~]# yum install filebeat

rpm 安裝

[root@redis-beat ~]# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-x86_64.rpm
[root@redis-beat ~]# rpm -vi filebeat-7.8.0-x86_64.rpm

Ubuntu-apt-get

# 導(dǎo)入簽名Key
[elk@beat ~]$ sudo wget -qO - https://#artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
[elk@beat ~]$ sudo apt-get install apt-transport-https
# 保存?zhèn)}庫到/etc/apt/sources.list.d/elastic-7.x.list
[elk@beat ~]$ echo "deb https://#artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
[elk@beat ~]$ sudo apt-get update && sudo apt-get install filebeat
# 配置文件在/etc/filebeat/filebeat.yml
# 配置filebeat開機(jī)啟動
[elk@beat ~]$ sudo update-rc.d filebeat defaults 95 10

Ubuntu-deb

[elk@beat ~]$ curl -L -O https://#artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-amd64.deb

Docker

[root@redis-beat ~]# docker pull docker.elastic.co/beats/filebeat:7.8.0
[root@redis-beat ~]# docker run \
docker.elastic.co/beats/filebeat:7.8.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

配置Filebeat

# 配置文件filebeat.yml澜倦。 可以通過以下命令創(chuàng)建日志文件,并進(jìn)行內(nèi)容追加杰妓,以便進(jìn)行寫入測試
[root@redis-beat ~]# touch /usr/local/access-filebeat-test.log
[root@redis-beat ~]# echo "this msg is from reids" >> /usr/local/access-filebeat-test.log

部署kibana

[root@es-node2-kibana ~]# su - elk
# 創(chuàng)建elkaPP目錄并設(shè)置所有者
[elk@es-node2-kibana ~]$ sudo mkdir /usr/local/elkapp
# 創(chuàng)建ELK數(shù)據(jù)目錄并設(shè)置所有者
[elk@es-node2-kibana ~]$ sudo mkdir /usr/local/elkdata
# 創(chuàng)建logstash主目錄
[elk@es-node2-kibana ~]$ sudo mkdir -p /usr/local/elkdata/kibana
# 創(chuàng)建logstash數(shù)據(jù)目錄
[elk@es-node2-kibana ~]$ sudo mkdir -p /usr/local/elkdata/kibana/data
# 創(chuàng)建logstash日志目錄
[elk@es-node2-kibana ~]$ sudo mkdir -p /usr/local/elkdata/kibana/logs
# 設(shè)置目錄權(quán)限
[elk@es-node2-kibana ~]$ sudo chown -R elk:elk /usr/local/elkapp
[elk@es-node2-kibana ~]$ sudo chown -R elk:elk /usr/local/elkdata
##### 合并版命令 #####
[elk@es-node2-kibana ~]$ sudo mkdir /usr/local/elkapp && sudo mkdir -p /usr/local/elkdata/kibana/{data,logs} && sudo chown -R elk:elk /usr/local/elkapp && sudo chown -R elk:elk /usr/local/elkdata
# 安裝kibana
[elk@es-node2-kibana ~]$ cd /usr/local/src
[elk@es-node2-kibana src]$ sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz
[elk@es-node2-kibana src]$ sudo tar -xf kibana-7.8.0-linux-x86_64.tar.gz -C /usr/local/elkapp
[elk@es-node2-kibana src]$ cd /usr/local/elkapp
[elk@es-node2-kibana local]$ sudo ln -s kibana-7.8.0-linux-x86_64 kibana
# 設(shè)置目錄權(quán)限
[elk@es-node2-kibana local]$ sudo chown -R elk:elk /usr/local/elkapp
[elk@es-node2-kibana local]$ sudo chown -R elk:elk /usr/local/elkdata
##### 合并版命令 ##### 
[elk@es-node2-kibana src]$ sudo tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz -C /usr/local/elkapp && sudo ln -s kibana-7.8.0-linux-x86_64 kibana && sudo chown -R elk:elk /usr/local/elkapp && sudo chown -R elk:elk /usr/local/elkdata
# 配置kibana
[elk@es-node2-kibana ~]$ vim /usr/local/elkapp/kibana-7.8.0-linux-x86_64/config/kibana.yml
# 增加如下內(nèi)容
server.port: 5601
server.host: "192.168.152.139"
elasticsearch.hosts: ["http:#192.168.152.137:9200"]
# 配置systemctl啟動
[elk@es-node2-kibana ~]$ vi /etc/systemd/system/kibana.service
# 內(nèi)容如下
[Unit]
Description=kibana
[Service]
User=elk
Group=elk
LimitMEMLOCK=infinity
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/elkapp/kibana/bin/kibana
[Install]
WantedBy=multi-user.target

[elk@es-node2-kibana ~]$ sudo systemctl daemon-reload
[elk@es-node2-kibana ~]$ sudo systemctl start kibana 
[elk@es-node2-kibana ~]$ sudo systemctl enable kibana
##### 合并版命令 #####
[elk@es-node2-kibana ~]$ sudo systemctl daemon-reload && sudo systemctl start kibana && sudo systemctl enable kibana
# 漢化kibana
[elk@es-node2-kibana ~]vim /usr/local/elkapp/kibana/config/kibana.yaml
i18n.locale: "zh-CN"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末藻治,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巷挥,更是在濱河造成了極大的恐慌桩卵,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倍宾,死亡現(xiàn)場離奇詭異雏节,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)高职,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門钩乍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怔锌,你說我怎么就攤上這事寥粹。” “怎么了埃元?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵涝涤,是天一觀的道長。 經(jīng)常有香客問我岛杀,道長阔拳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任类嗤,我火速辦了婚禮衫生,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘土浸。我一直安慰自己罪针,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布黄伊。 她就那樣靜靜地躺著赚导,像睡著了一般臭胜。 火紅的嫁衣襯著肌膚如雪肢娘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天毡惜,我揣著相機(jī)與錄音,去河邊找鬼斯撮。 笑死经伙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勿锅。 我是一名探鬼主播帕膜,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溢十!你這毒婦竟也來了垮刹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤张弛,失蹤者是張志新(化名)和其女友劉穎荒典,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吞鸭,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寺董,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刻剥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遮咖。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖透敌,靈堂內(nèi)的尸體忽然破棺而出盯滚,到底是詐尸還是另有隱情踢械,我是刑警寧澤酗电,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站内列,受9級特大地震影響撵术,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜话瞧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一嫩与、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧交排,春花似錦划滋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春同窘,著一層夾襖步出監(jiān)牢的瞬間玄帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工想邦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裤纹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓丧没,卻偏偏與公主長得像鹰椒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骂铁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355