Elasticsearch
Elasticsearch 是一个 高性能数据存储、搜索和分析引擎,它被用于 数据搜索引擎 实时流式分析 等场景。Elasticsearch 是一个分布式、免费和开放的搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化。
准备
在参阅本文档使用 Elasticsearch 时,需要确保如下几点:
-
登录 Websoft9 控制台,然后找到(或安装)Elasticsearch:
- 我的应用 菜单找到应用
- 应用商店 菜单部署应用
-
应用是基于 Websoft9 安装的
-
应用的用途符合 elv2-sspl 开源许可协议
-
为应用准备配置访问方式:配置域名 或 服务器安全组开启网外端口
入门指南
初始化
Websoft9 控制台安装 Elasticsearch 后,通过 "我的应用" 查看应用详情,在 "访问" 标签页中获取登录信息。
-
使用本地电脑浏览器访问,进入 Elasticsearch API 认证提示
-
输入用户名(elastic)和密码,成功后会输出 API 基本信息
获取 Enrollment Token
Enrollment Token 是用于 Kibana 除此连接的必要信息。可以在 Elasticsearch 中运行重置命令获取:
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
使用 Kibana 管理
Elasticsearch 应用中默认不含 Kibana,用户可以通过 Websoft9 应用商店 安装 Kibana。
连接 Logstash 并分析
Logstash 是数据的采集、加工和传输管道,它是如何与 Elasticsearch 配套工作的呢?
-
编辑 Logstash 配置文件
-
新增一个 pipeline 的配置文件(output 段需填写准确的 ES 账号),其内容如下:
input{
file{
path => "/var/log/*.log"
type => "elasticsearch"
start_position => "beginning"
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
user => "elastic"
password => "elastic123"
index => "mytest"
}
} -
运行命令
curl http://URL/cat/indices?v
验证 Elasticsearch 和 Logstash 的连接,索引是否生效 -
登陆 Kibana,点击Manage,创建一个Index Patterns
-
根据提示完成创建任务,最后用 时间戳 检索数据
配置选项
- 默认管理员账号:elastic
- Elasticsearch API
- 多语言(✅):Kibana 配置文件中增加
i18n.locale: "zh-CN"
- 开源许可:ELASTIC-LICENSE
- SMTP(√)
管理维护
-
Email 配置:Kibana 控制台,依次打开:Stack Management > Watcher ,增加一个 Email Action
-
重置密码:ElasticSearch 容器中运行命令
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
-
备份与恢复:Elastic 内置快照备份功能
问题与故障
ERROR: exit code 137?
错误详情:ERROR: Elasticsearch exited unexpectedly, with exit code 137
问题原因:启动或运行时,服务器可分配给 ES 的内存不足
实践发现可用内存超过 1G 时,此 ERROR 还不会出现
Logstash 无法输出到 ES?
检查 Logstash 的 pipeline 配置文件中 Elasticsearch 账号密码是否正确
TOO_MANY_REQUESTS ... disk usage?
如果现实下面的错误信息,即表明磁盘空间不足。
kibana_task_manager_7.17.4_001/_mapping?timeout=60s error: [cluster_block_exception]: index [.kibana_task_manager_7.17.4_001] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];,"}
ES 对磁盘空间有较高的要求,建议准备足够的空间。
Elastic 具体包含哪些应用?
“Elastic Stack” 是三个开源项目的缩写:Elasticsearch,Logstash 和 Kibana。
- Elasticsearch 是一个存储数据和检索数据等数据库
- Logstash 是数据提取、清洗和整理的中间件
- Kibana 是 Elasticsearch 的可视化管理分析界面,Kibana 依赖 Elasticsearch
另外,随着 Elastic 公司不断发展,他们把更多的产品加入到了 ELK 家族,例如:一个日志采集工具 Beats
下面是 Elastic Stack 用于日志场景的典型架构图
Elasticsearch 全部免费吗?
Elasticsearch 由之前的开源版+商业扩展包 xpack 组成。其中 xpack 基本功能免费,需要使用全部功能可以向官方申请 30 天的免费试用期,试用期结束后回归到基本功能或订阅。