ElasticSearch
ELK准备
添加源
具体可以参考https://www.elastic.co/guide/en/logstash/7.16/installing-logstash.html#_yum
debian系
|
|
centos系
|
|
Logstash
安装
debian系
|
|
centos系
|
|
ElasticSearch
介绍
参考https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html
elasticsearch是一个基于lucene库的实时的分布式搜索分析引擎,主要用作全文检索,结构化搜索,分析以及这三种的组合
常见的应用场景有系统日志分析、应用数据分析、安全审计、关键词搜索等
es是面向文档的,对于复杂关系,比如地理信息日期等对象都可以保存,这是相比较于关系型数据库优势的地方
安装
|
|
启动
|
|
可能报错:
启动报错了 failed; error='Not enough space' (errno=12) 修改下es的启动参数
|
|
生产jvm参数参考
|
|
测试
|
|
代表es数据成功写入
集群搭建
参考集群搭建,
三台服务器
RESTful API with JSON over http
通过9200交互
liuliancao@liuliancao-dev:~/projects/lion$ sudo lsof -i:9200 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 50762 elasticsearch 284u IPv6 141518 0t0 TCP localhost:9200 (LISTEN) java 50762 elasticsearch 285u IPv6 141519 0t0 TCP localhost:9200 (LISTEN)
Curl, Groovy, Javascript, .NET, PHP, Perl, Python, Ruby (https://www.elastic.co/guide/en/elasticsearch/client/index.html)
Curl
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
查询集群中文档数量
curl -XGET 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } } ' 实际执行结果是 liuliancao@liuliancao-dev:~/projects/lion$ curl -XGET 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } } ' { "error" : "Content-Type header [application/x-www-form-urlencoded] is not supported", "status" : 406 } ..., 需要调整下header, 这个结果代表我们没有分片和文档存在 liuliancao@liuliancao-dev:~/projects/lion$ curl -XGET -H 'Content-Type: application/json' 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } } ' { "count" : 0, "_shards" : { "total" : 0, "successful" : 0, "skipped" : 0, "failed" : 0 } }
JSON形式保存对象
一些es中的概念
索引
类型
属性
集群状态查看
|
|
列出所有index
|
|
模糊删除index
|
|
当然习惯界面的话,在kibana索引管理,里面也可以删除
index的number_of_replicas number_of_shards设置
最近发现系统的shards满了,所以和同事一起看下了参数,发现对于index的参 数设置,分为动态和静态参数 https://www.elastic.co/guide/en/elasticsearch/reference/6.5/index-modules.html#_static_index_settings
https://www.elastic.co/guide/en/elasticsearch/reference/6.5/index-modules.html#dynamic-index-settings
首先前提是logstash-开头是我的索引,如果你没有对应的template,则需要创建 我主要想降低下number_of_shards和number_of_replicas
对于number_of_shards你是无法直接PUT /索引名字 修改settings的,只能关联 template来影响后续的index, 如果需要操作老的,则需要进行reindex操作
修改template
|
|
执行reindex样例和创建别名
|
|
后来发现集群还是red,检查unassighed shards发现还有,删除掉red的index,恢 复
|
|
发现提示是有问题的
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html 基本是这几种错误
DSL
Query查询
一个典型的查询 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
|
|
指定正则匹配
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html
|
|
聚合查询
聚合里面进行count排序
|
|
kibana
测试使用
浏览器访问服务器地址:5601端口 建议通过nginx+ssl配置,会比较安全
FAQ
es报错 kibana无法启动
shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry, [unassigned_inforeason=ALLOCATION_FAILED], at[2024-03-24T12:14:02.651Z], failed_attempts[5], failed_nodes[[joxyW01nTNCGvFW1IjPQMQ, JaEcQBEZTOiztZdlj-iZBw, delayed=false, details[failed shard on node [JaEcQBEZTOiztZdlj-iZBw]: failed recovery, failure RecoveryFailedExceptionlogstash-overseas-ssjj2-hall-server_accesslog-2024.03; nested: CircuitBreakingExceptionparent] Data too large, data for [internal:index/shard/recovery/start_recovery] would be [4212820374/3.9gb], which is larger than the limit of [4080218931/3.7gb], real usage: [4212805912/3.9gb], new bytes reserved: [14462/14.1kb], usages [request=0/0b, fielddata=259024/252.9kb, in_flight_requests=23636/23kb, model_inference=0/0b, eql_sequence=0/0b, accounting=449937262/429mb; ], allocation_status[no_attempt]]]
结果是kibana一直挂,es状态异常,active到不了100%
解决 elasticsearch.yml
|
|
增加这个以后集群状态变成green了
参考文档
- logstash yum安装 https://www.elastic.co/guide/en/logstash/7.13/installing-logstash.html#_yum
- logstash主页 https://www.elastic.co/cn/logstash/
- logstash配置 https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
- logstash input https://www.elastic.co/guide/en/logstash/current/input-plugins.html
- logstash output https://www.elastic.co/guide/en/logstash/current/output-plugins.html
- logstash filter https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
- logstash 中文文档 https://www.kancloud.cn/aiyinsi-tan/logstash/849518
- 中文文档