Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。
两种架构的es配置差不多
1.曾经考虑过hbase选用,也进行过真正的测试,用hbse的问题是这种键值对的数据库,不一定能够保证唯一的键(虽然能把时间戳加入key中),而且es本身只存储结果数据完全符合线上需求,并且es自身带有聚合功能,可以多个条件查询而不只是键值对。
es总共11个节点 进行了角色分配 其中master节点3个 data节点5个 cient节点3个 (角色分配与 node.master node.data 有关)
ubuntu@sp1:~/elasticsearch-5.5.2/config$ cat elasticsearch.yml | grep -v '#'
cluster.name: webluker-logstash
cluster.routing.allocation.balance.shard: 0.10
node.name: node-c-sp1
node.master: false
node.data: false
path.data: /mnt/data2,/mnt/data3,/mnt/data4,/mnt/data5,/mnt/data6,/mnt/data7,/mnt/data8,/mnt/data9,/mnt/data10
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["master-ip1","master-ip2","master-ip3"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 100s
discovery.zen.fd.ping_timeout: 100s
discovery.zen.fd.ping_interval: 30s
gateway.expected_nodes: 8
gateway.recover_after_nodes: 5
thread_pool.bulk.queue_size: 2000
thread_pool.search.queue_size: 3000
ubuntu@sp34:~/elasticsearch-5.5.2/bin$ cat elasticsearch | grep -v '#'
JAVA_HOME="/home/ubuntu/jdk1.8.0_144"
ES_JAVA_OPTS="-Xms31g -Xmx31g"
//==================
es spark计算配置
ubuntu@sp26:~/apps/elasticsearch-5.5.2/bin$ cat elasticsearch | grep -v '#'
JAVA_HOME="/home/ubuntu/apps/jdk1.8.0_144"
ES_JAVA_OPTS="-Xms31g -Xmx31g"
ES_HOME=/home/ubuntu/apps/elasticsearch-5.5.2
ubuntu@sp26:~/apps/elasticsearch-5.5.2/config$ cat elasticsearch.yml | grep -v '#'
cluster.name: log_big_data_wlk
discovery.zen.ping.unicast.hosts: ["es-master-ip1","es-master-ip2","es-master-ip3"]
discovery.zen.minimum_master_nodes: 2
node.name: node-m-d-sp26
path.data: /mnt/data2,/mnt/data3,/mnt/data4,/mnt/data5,/mnt/data6,/mnt/data7,/mnt/data8,/mnt/data9,/mnt/data10,/mnt/data11
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
//================================
当然还有es header插件安装:
kibana安装:
//======
马上也想不起来很多:
1.es索引过多问题 linux定时脚本删除
2.es索引创建异常,同一时间创建太多 ,那就是前边计算上传有问题了
3.es的shell监控脚本 (这里是配合zabbix使用发送邮件)
#!/usr/bin/env bash
#字符串截取参考 https://www.cnblogs.com/zwgblog/p/6031256.html
#判断字符串包含参考 https://www.cnblogs.com/AndyStudy/p/6064834.html
es_url='http://sp26:9200'
var='0'
#======判断集群健康值是否是green
health_result=`curl -s $es_url/_cluster/health`
#echo ddd$health_result
if [[ $health_result == *'"status":"green"'* ]]
then
# echo "包含"
pass='yes'
else
echo "不包含green"
fi
#====获取上个小时的日志数量 参考是否达标
last_hour=`date +%Y.%m.%d.%H -d '-1 hours'`
#last_hour='2017.12.13.13'
last_hour_index='logstash-'$last_hour
result_query=`curl -s ${es_url}/${last_hour_index}/_search -d '{"query":{"bool":{"must":[{"match_all":{}}]}},"size":0}'`
#echo $result_query
right_total=${result_query#*'"hits":{"total":'}
hits_total=${right_total%',"max_score"'*}
#echo $hits_total
if [ $hits_total -lt 1000000 ]
then
echo '数据量<1000000'
fi
echo $var