【Zabbix】教你搭建elasticsearch與實現zabbix對接
一. 搭建elasticsearch
1. 上傳jdk-8u181-linux-x64.tar.gz和elasticsearch-6.1.4.tar.gz檔案到系統任意目錄,
安裝java
解壓jdk-8u181-linux-x64.tar.gz檔案
tar -zxvf jdk-8u181-linux-x64.tar.gz
編輯profile檔案,新增jdk環境變數
vim /etc/profile
在最後新增
#JDK環境變數
JAVA_HOME=/usr/local/jdk1.8.0_181 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
引用環境變數
source /etc/profile
直接執行java –version 確定java已可用
解壓elasticsearch-6.1.4.tar.gz檔案
tar –zxvf elasticsearch-6.1.4.tar.gz
編輯修改elasticsearch的配置檔案elasticsearch.yml
vim elasticsearch-6.1.4/config/elasticsearch.yml
主要修改以下資訊(資料存放目錄以及日誌存放目錄需要新增執行許可權,)
配置檔案解析如下:
開啟服務(可以使用-d後臺啟用)
/usr/local/elasticsearch-6.1.4/bin/elasticsearch
樂維Tips:在啟動服務時,不能以root使用者開啟服務,elasticsearch需要以其他使用者開啟服務;
1、 需要建立使用者;
新增es使用者
useradd es -m
設定es使用者密碼
passwd es
2、 需要修改elasticsearch-6.1.4目錄、資料存放目錄、日誌存放目錄的所屬組和所屬使用者
chown es:es /usr/local/elasticsearch-6.1.4/data chown es:es /usr/local/elasticsearch-6.1.4/logs chown es:es /usr/local/elasticsearch-6.1.4/
3、ERROR:bootstrap checks failed:max file descriptors [4096] for elasticsearchprocess likely too low, increase to at least [65536]
原因:無法建立本地檔案問題,使用者最大可建立檔案數太小
解決方案:
切換到root使用者,編輯limits.conf配置檔案,
新增類似如下內容:
vi/etc/security/limits.conf
新增如下內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
注:* 代表Linux所有使用者名稱稱(比如hadoop)
儲存、退出、重新登入才可生效
4、max virtualmemory areas vm.max_map_count [65530] likely too low, increase to at least[262144]
原因:最大虛擬記憶體太小
解決方案:切換到root使用者下,修改配置檔案sysctl.conf
vi /etc/sysctl.conf
新增下面配置:
vm.max_map_count=655360
並執行命令:sysctl -p
5、max number ofthreads [1024] for user [es] likely too low, increase to at least [2048]
原因:無法建立本地執行緒問題,使用者最大可建立執行緒數太小
解決方案:
切換到root使用者,進入limits.d目錄下,修改90-nproc.conf 配置檔案。
vi /etc/security/limits.d/90-nproc.conf
修改 * soft nproc 1024 為 * soft nproc 2048
以es使用者啟動服務(-d 可以後臺啟動 )
su es
/usr/local/elasticsearch-6.1.4/bin/elasticsearch
開啟防火牆埠9200 TCP
firewall-cmd --zone=public --add-port=9200/tcp–permanent
在WEB上輸入IP:9200測試是否可以正常訪問使用
二. 與zabbix對接
需要修改zabbix_server的配置檔案
修改HistoryStorageURL=http://192.168.150.10:9200
修改zabbix.conf.php檔案
vi/usr/local/nginx/html/zabbix/conf/zabbix.conf.php
重啟zabbix_server
同步成功後
方法1、ElasticSearch Head可以直接在谷歌瀏覽器上進行安裝(推薦)
直接把檔案拖到擴充套件程式進行新增
方法2、這裡介紹一個 Elasticsearch 視覺化的管理外掛 elasticsearch-head,可方便的檢視,刪除,管理資料
安裝elasticsearch-head外掛需要nodejs的支援
1. nodejs安裝
2. head安裝配置
請參考https://blog.csdn.net/zoubf/article/details/79007908
三. Elasticsearch常用命令
(由於沒有自帶的資料清理功能,需要手動編寫指令碼)
1、curl 命令的使用
curl -X<VERB>'< PROTOCOL>://<HOST>:< PORT>/< PATH>?<QUERY_STRING>'-d '<BODY>'VERB HTTP方法:GET, POST, PUT, HEAD, DELETE
PROTOCOL http或者https協議(只有在Elasticsearch前面有https代理的時候可用)
HOST Elasticsearch叢集中的任何一個節點的主機名
PORT Elasticsearch HTTP服務所在的埠,預設為9200
PATH API路徑,資源路徑(例如_count將返回叢集中文件的數量)
QUERY_STRING 一些可選的查詢請求引數,例如?pretty引數將返回易讀的JSON資料
BODY 一個JSON格式的請求主體(如果請求需要的話)
具體詳細方法,請參考
https://www.linuxidc.com/Linux/2016-10/136548.htm
新增索引(zabbix為資料庫名)
curl -XPUT'http://192.168.1.20:9090/zabbix?pretty'
建立成功後,預設會分配五個主分片(建立後不可更改,通過演算法將資料存放在這五個分片中的一個,增刪改都是針對主分片的)和一個複製分片(可修改,每個主分片都對應一個複製分片),這兩個預設值都可以在配置檔案中修改,也可以在建立的時候指定,如
curl -XPUT 'http://192.168.1.20:9090/zabbix?pretty'-d '{
"settings": {
"number_of_shards" : 2, #2個主分片
"number_of_replicas" : 0 #0個複製分片
}
}'
檢視索引
curl -XGET'http://192.168.1.20:9090/zabbix?pretty'
查詢方式;
例如:
查詢所有文件
等同於 curl-XGET ‘http://localhost:9200/test/article/_search?pretty’curl -XGET 'http://localhost:9200/test/article/_search?pretty' -d '
{ "query": {
"match_all": {}
}
}'#返回
{
# 用時 毫秒
"took" : 4,
"timed_out" : false,
#分片資訊
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
#文件數
"total" : 3,
"max_score" : 1.0,
"hits" : [ {
"_index" : "test",
"_type" : "article",
"_id" : "AVf_6fM1vEkwGPLuUJqp",
"_score" : 1.0,
"_source" : {
"id" : 2,
"subject" : "第二篇文章標題",
"content" : "第二篇文章內容",
"author" : "jam"
}
}, {
"_index" : "test",
"_type" : "article",
"_id" : "4",
"_score" : 1.0,
"_source" : {
"id" : 4,
"subject" : "第四篇文章標題",
"content" : "第四篇文章內容-更新後",
"author" : "tomi"
}
}, {
"_index" : "test",
"_type" : "article",
"_id" : "3",
"_score" : 1.0,
"_source" : {
"id" : 3,
"subject" : "第三篇文章標題",
"content" : "第三篇文章內容",
"author" : "jam"
}
}}
查詢作者是名字包含“jam” 的文件,返回id 是2和3 的文件
curl -XGET 'http://localhost:9200/test/article/_search?pretty' -d '
{
"query": {
"match": {
"author": "jam"
}
}
}'
查詢文章內容包含“更新” 的文件,返回id 是4 的文件
curl -XGET 'http://localhost:9200/test/article/_search?pretty' -d '
{ "query": {
"match": {
"content": "更新"
}
}
}'
查詢全部索引
curl -XGET 'http://192.168.150.10:9200/_cat/indices/?v'
刪除所有資料包括自行新增的索引
curl -XDELETE 'http://192.168.150.10:9200/*'
2、 Elasticsearch清理資料
由於Elasticsearch沒有自帶的資料刪除配置,所以需要指令碼進行清理資料
1)刪除索引是會立即釋放空間的,不存在所謂的“標記”邏輯。
2)刪除文件的時候,是將新文件寫入,同時將舊文件標記為已刪除。磁碟空間是否釋放取決於新舊文件是否在同一個segment file裡面,因此ES後臺的segment merge在合併segment file的過程中有可能觸發舊文件的物理刪除。
但因為一個shard可能會有上百個segment file,還是有很大機率新舊文件存在於不同的segment裡而無法物理刪除。想要手動釋放空間,只能是定期做一下force merge,並且將max_num_segments設定為1。
刪除文件
釋放空間
配置計劃任務
下載地址:檔案下載
密碼:x6I7
轉自
教你搭建elasticsearch與實現zabbix對接
(出處: 樂維論壇)