-
1.處理方式靈活:elasticsearch是即時全文索引,具有強大的搜尋功能
-
2.配置相對簡單:elasticsearch全部使用JSON 介面,logstash使用模組配置,
-
kibana的配置檔案部分更簡單。
-
3.檢索效能高效:基於優秀的設計,雖然每次查詢都是即時,但是也可以達到百億級資料的查詢秒級響應。
-
4.叢集線性擴充套件:elasticsearch和logstash都可以靈活線性擴充套件
-
5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單
-
ELKstack
-
flume
-
日誌易

主機名 | 外網IP | 內網IP | 角色 | 應用 |
---|---|---|---|---|
ELKstack01 | 10.0.0.81 | 172.16.1.81 | ES日誌儲存資料庫 | JDK、elasticsearch |
ELKstack02 | 10.0.0.82 | 172.16.1.82 | ES日誌儲存資料庫 | JDK、elasticsearch |
# 1.更換es官方源
[root@elkstack02 ~]
# vim /etc/yum.repos.d/es.repo
[elasticsearch-5.x]
name=Elasticsearch repository
for
5.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
# 2.安裝es
[root@elkstack02 ~]
# yum install -y elasticsearch
# 3.修改es配置檔案
[root@elkstack02 ~]
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elkstack
node.name: es02
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock:
false
bootstrap.system_call_filter:
false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [
"10.0.0.81"
,
"10.0.0.82"
]
# 4.修改啟動指令碼
[root@elkstack01 ~]
# vim/usr/lib/systemd/system/elasticsearch.service
#修改記憶體限制(去掉此行註釋)
LimitMEMLOCK=infinity
# 5.建立日誌和資料目錄
[root@elkstack02 ~]
# mkdir -p /data/es/{logs,data}
# 6.授權
[root@elkstack02 ~]
# chown -R elasticsearch.elasticsearch /data/
# 7.最佳化檔案描述符
[root@elkstack01 ~]
# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
# 8.修改jvm
[root@elkstack02 ~]
# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

# 1.安裝npm
[root@elkstack01 ~]
# yum install -y npm
# 2.拉程式碼
[root@elkstack01 ~]
# git clone https://github.com/mobz/elasticsearch-head.git
# 3.下載程式碼zip包
[root@elkstack01 ~]
# ll
-rw-r--r-- 1 root root 1357536 Sep 6 10:36 elasticsearch-head-master.zip
# 4.解壓
[root@elkstack01 ~]
# unzip elasticsearch-head-master.zip
# 5.構建前端程式碼
[root@elkstack01 elasticsearch-head-master]
# npm install grunt -save
# 6.啟動前端
[root@elkstack01 elasticsearch-head-master]
# npm run start &

報錯原因:缺少bzip2解壓命令
解決方案:yum install -y bzip2

# 連線不上叢集,給es做跨域訪問配置
[root@elkstack01 ~]
# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled:
true
http.cors.allow-origin:
"*"
[root@elkstack01 ~]
# systemctl restart elasticsearch

Term | txt1 | txt2 | txt2 | txt4 |
---|---|---|---|---|
zls | y | y | ||
bgx | y | y | ||
lidao | y | y | ||
oldboy | y | y | y | |
alex | y | y |
-
1.沒有必要給逆向索引加鎖,因為不允許被更改,只有讀操作,所以就不用考慮多執行緒導致互斥等問題。
-
2.索引一旦被載入到了快取中,大部分訪問操作都是對記憶體的讀操作,省去了訪問磁碟帶來的io開銷。
-
3.因為逆向索引的不可變性,所有基於該索引而產生的快取也不需要更改,因為沒有資料變更。
-
4.使用逆向索引可以壓縮資料,減少磁碟io及對記憶體的消耗


-
1.新增的文件首先會被存放在記憶體的快取中
-
2.當文件數足夠多或者到達一定時間點時,就會對快取進行commita. 生成一個新的segment,並寫入磁碟b. 生成一個新的commit point,記錄當前所有可用的segmentc. 等待所有資料都已寫入磁碟
-
3.開啟新增的segment,這樣我們就可以對新增的文件進行搜尋了
-
4.清空快取,準備接收新的文件



# 修改副本分片介面
curl -XPUT -d
'
{ "template": "*",
"settings": {
"index": {
"number_of_shards": 6,
"number_of_replicas": 1
}
}
}'
http://10.0.0.81:9200/_template/my_template




-
綠色:正常健康叢集(沒有分片丟失)
-
黃色:非正常叢集(副本分片丟失)
-
紅色:非正常叢集(副本分片和主分片都丟失)
vim es.py
#!/usr/bin/env python
#coding:utf-8
#Author:_DriverZeng_
#Date:2017.02.12
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import subprocess
body =
""
false
=
"false"
clusterip =
"10.0.0.81"
obj = subprocess.Popen((
"curl -sXGET http://"
+clusterip+
":9200/_cluster/health?
pretty=true"
),shell=True, stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 =
eval
(data)
status = data1.get(
"status"
)
if
status ==
"green"
:
print"\033[1;32m 0 \033[0m"
elif
status ==
"yellow"
:
print"\033[1;33m 1 \033[0m"
else
:
print"\033[1;31m 2 \033[0m"
## 叢集健康狀態的API
curl -s -XGET http://10.0.0.81:9200/_cluster/health?pretty=
true

文末福利

即將步入2025年,不少小夥伴在考慮來年的工作方向。
僅目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。









