elasticsearch api 使用
常用api
查看elasticsearch状态:
- curl -XGET http://ES:9200/_cluster/health?pretty
- curl -XGET http://ES:9200/_cat/health
- curl -XGET http://ES:9200/_cat/shards
- curl -XGET http://ES:9200/_cluster/stats?pretty=true
- curl -XGET 'http://ES:9200/_cat/nodes?v'
内存优化
- JAVA_OPTS="$JAVA_OPTS -Xmx4g -Xms4g -Xmn1g -Xss16m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g"
- #Xmn Java Heap Young区大小,不熟悉最好保留默认值,年轻代大小,一般为整个堆空间的1/4到1/3;
- # -Xss16m每个线程的Stack大小,通常建议使用256K 即可,但是ES单线程承载的数据量比较大
- #MetaspaceSize 使用堆内存以外的直接系统内存,只受可用的本地内存限制
更改index.refresh_interval
- PUT /logstash-mil-access-10-20160905
- {
- "settings": {
- "refresh_interval": "30s"
- }
- }
若需要重启elasticsearch , 为了避免重启期间shard 的重新分配导致大量的流量,首先关闭shard allocation :
- curl -XPUT http://127.0.0.1:9200/_cluster/settings -d'
- {
- "transient" : {
- "cluster.routing.allocation.enable" : "none"
- }
- }'
- 然后对elasticsearch 重启, 重启完成后:
-
- curl -XPUT http://127.0.0.1:9200/_cluster/settings -d'
- {
- "transient" : {
- "cluster.routing.allocation.enable" : "all"
- }
- }'
x-pack security
- x-pack security
- curl -XPUT 'localhost:9200/_xpack/security/user/kibana/_password' -d '{
- "password" : "s0m3thgs3cr3t"
- }'
logstash匹配实例:
nginx 日志:
- 211.161.240.16 - - [06/Mar/2018:17:10:21 +0800] toys.m.huanqiu.com "GET /apps/wechat/wechat-1.0.0.js HTTP/1.1" 200 1735 0.127 "https://m.huanqiu.com/r/MV8wXzExNjQyMzcwXzIxMjJfMTUyMDI0OTA0MA==?&from=toutiao&app_name=open_news&app_id=34&utm_campaign=open&utm_medium=webview&utm_source=kuhua_sp_api" "Mozilla/5.0 (Linux; Android 7.0; ZUK Z2121 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 Coohua/5.1.4.6 Id/890953855" 119.254.152.225:80 200 0.127 "f1-1-cd" "on" -
-
- 223.104.12.34 - - [06/Mar/2018:17:10:21 +0800] m.huanqiu.com "GET /r/MV8wXzExNjQzNjI2XzIxMjJfMTUyMDMwMjU2MA== HTTP/1.1" 200 6866 0.059 "-" "Mozilla/5.0 (Linux; Android 5.1.1; OPPO A53 Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.138 Mobile Safari/537.36 JsSdk/2 NewsArticle/5.8.1 NetType/4g" 192.168.8.3:8090 200 0.059 "f1-1-cd" "on" -
-
- 59.77.233.196 - - [06/Mar/2018:17:10:22 +0800] country.huanqiu.com "GET /democraticparty HTTP/1.1" 404 210 0.063 "-" "Apache-HttpClient/4.5 (Java/1.7.0_75)" 119.254.147.247:80 404 0.063 "f1-1-cd" "" -
grok 语法:-
- "%{URIHOST:client_ip} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] (%{HOSTNAME:http_host}|-) \"(%{WORD:request_method}|-) %{NOTSPACE:request} (?:HTTP/%{NUMBER:httpversion})\" %{NUMBER:status} (%{NUMBER:body_bytes_sent}|-) (%{BASE16FLOAT:request_time}|-) \"(?:%{GREEDYDATA:http_referrer}|-)\" \"(%{GREEDYDATA:user_agent}|-)\" (?<upstream_addr>((%{IPV4}:%{POSINT}[, ]{0,2})+)|-) (?<upstream_status>(([0-9]{3}[, ]{0,2})+)|-) (?<upstream_response_time>((%{BASE16FLOAT:}[, ]{0,2})+)|-) \"(?<server_name>\S+)\" \"(?<https>(on|))\"
简单的ES crontab 脚本
- #!/bin/sh
-
- TODAY=`date +%Y.%m.%d`
- TIME30=`date --date="-60 days" +%Y.%m.%d`
- TIME35=`date --date="-60 days" +%Y.%m.%d`
- TIME1=`date --date="-1 days" +%Y.%m.%d`
- TIME8=`date --date="-7 days" +%Y.%m.%d`
- /usr/bin/curl -XDELETE "http://es2.spark:9200/logstash-userlogs-$TIME30/"
- /usr/bin/curl -XDELETE "http://es2.spark:9200/packetbeat-http-$TIME35/"
-
- #number_of_replicas num
- curl -XPUT http://es2.spark:9200/logstash-userlogs-$TODAY/_settings -d '{ "index": { "number_of_replicas" : 1 }}' >/dev/null 2>&1
-
- sleep 1
-
- #refresh_interval time
- curl -XPUT http://es2.spark:9200/logstash-userlogs-$TODAY/_settings -d '{ "index": { "refresh_interval" : "30s" }}' >/dev/null 2>&1
-
- sleep 1
-
- #optimize yesterday index
- echo -e "curl -XPOST 'http://es2.spark:9200/logstash-userlogs-$TIME1/_optimize'" >/tmp/optimize_index.sh
-
- #close index
- echo -e "curl -XPOST 'http://es2.spark:9200/logstash-userlogs-$TIME8/_close'" > /tmp/close_index.sh
-
- #excute command
- /bin/sh /tmp/close_index.sh >/dev/null 2>&1
- sleep 1
- /bin/sh /tmp/optimize_index.sh >/dev/null 2>&
常用插件网址:
- elasticsearch-sql 地址: https://github.com/NLPchina/elasticsearch-sql
-
- head 插件地址: https://github.com/mobz/elasticsearch-head