引言 介绍 基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 更适用于集群部署,适合各类 分词,全文搜索,通过建立索引(分片,按节点分片)来实现更快的搜索 Elasticsearch是与Logstash的数据收集和日志解析引擎以及Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。 本文只做单节点运行
ELK.png
官方介绍
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
注意事项
单点服务器维持稳定可能需要常驻内存 4G 以上
单点ELK维持稳定可能需要CPU 4核心 以上
参考文章
下载集群所需镜像 zookeeper kafka 1 2 docker pull zookeeper docker pull wurstmeister/kafka
单节点无内网IP使用 1 docker network create elkwork
创建内部网络后在每次 docker run 的时候 增加参数 --net elkwork
elastic相关
旧版本
1 2 3 docker pull docker.elastic.co/elasticsearch/elasticsearch:5.6.8 docker pull docker.elastic.co/kibana/kibana:5.6.8 docker pull docker.elastic.co/logstash/logstash:5.6.8
新版本
1 2 3 4 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.0 docker pull docker.elastic.co/kibana/kibana:7.7.0 docker pull docker.elastic.co/logstash/logstash:7.7.0 docker pull store/elastic/filebeat:7.7.0
启动elasticsearch 自行替换版本 "discovery.type=single-node" 单节点
1 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.6.8
默认用户名 默认密码 elastic changeme
测试是否已经连通-u elastic:changeme 验权
1 curl -u elastic:changeme localhost:9200
浏览器端口访问测试
elasticsearch.png
elasticsearch 各类语法 基本 浏览器访问http://xxx.xx.xxx.xx:9200/_cat/indices?v 查看当前节点的所有 Indexhttp://xxx.xx.xxx.xx:9200/_mapping?pretty=true 列出每个 Index 所包含的 Type
验权机制增加参数 -u elastic:changeme 验权
命令行访问curl -u elastic:changeme -X PUT 'localhost:9200/weather' 可以直接向 Elastic 服务器发出 PUT 请求curl -u elastic:changeme -X DELETE 'localhost:9200/weather' 发出 DELETE 请求,删除这个 Index
插入数据 1 2 3 4 5 6 curl -X POST 'localhost:9200/account/person' -d ' { "user": "李四", "title": "工程师", "desc": "系统管理" }'
读取数据 1 curl 'localhost:9200/account/person/1?pretty=true'
示例
1 2 3 4 5 6 7 8 9 10 11 12 { "_index" : "accounts" , "_type" : "person" , "_id" : "1" , "_version" : 1 , "found" : true , "_source" : { "user" : "张三" , "title" : "工程师" , "desc" : "数据库管理" } }
删除记录 1 curl -X DELETE 'localhost:9200/accounts/person/1'
更新记录 1 2 3 4 5 6 curl -X PUT 'localhost:9200/accounts/person/1' -d ' { "user" : "张三", "title" : "工程师", "desc" : "数据库管理,软件开发" }'
返回所有记录 1 curl 'localhost:9200/accounts/person/_search'
索引 :/Index/Type/_search
total:返回记录数,本例是2条。
max_score:最高的匹配程度,本例是1.0。
hits:返回的记录组成的数组。
查询记录 1 2 3 4 5 6 curl 'localhost:9200/accounts/person/_search' -d ' { "query" : { "match" : { "desc" : "软件 系统" }}, "from": 1 "size": 1 }'
size 返回数量
from 开始位置
OR搜索,当前搜索的示例是 软件或系统
AND搜索示例1 2 3 4 5 6 7 8 9 10 { "query": { "bool": { "must": [ { "match": { "desc": "软件" } }, { "match": { "desc": "系统" } } ] } } }
参考文章
启动kibana 自行替换版本 1 docker run -d --name kibana -p 8001:5601 docker.elastic.co/kibana/kibana:5.6.8
kibana 容器内部修改配置ip
重启容器使配置生效
kibana.png
配置 logstash 1 2 3 mkdir /home/tjy/docker/logstash/ mkdir /home/tjy/docker/logstash/conf.d/ vi /home/tjy/docker/logstash/logstash.yml
1 2 path.config: /usr/share/logstash/conf.d/*.conf path.logs: /var/log/logstash
1 vi /home/tjy/docker/logstash/conf.d/test.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 input { beats { port => 5044 codec => "json" } } output { elasticsearch { hosts => ["xxx.xx.xxx.xx:9200"] user => elastic password => changeme } stdout { codec => rubydebug } }
启动logstash并挂载 1 docker run -it -d -p 8011:5044 -p 9600:9600 --name logstash -v /home/tjy/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /home/tjy/docker/logstash/conf.d/:/usr/share/logstash/conf.d/ docker.elastic.co/logstash/logstash:5.6.8
配置 filebeat 下载 通用配置文件
1 2 3 4 mkdir /Users/XXX/Downloads/Docker/filebeat/ cd /Users/XXX/Downloads/Docker/filebeat wget https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml vi filebeat.docker.yml
配置监听 Nginx log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 filebeat.config: modules: path: ${path.config}/modules.d/*.yml reload.enabled: false filebeat.autodiscover: providers: - type: docker hints.enabled: true processors: - add_cloud_metadata: ~ filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log output.logstash: hosts: ['logstash:5044']
filebeat 配合 logstash 挂载并启动 以下映射的路径为我自己电脑的路径,需要自行修改!
1 docker run --name filebeat --user=root -d --net elkwork -v /usr/local/var/log/nginx/:/var/log/nginx/ -v /Users/XXX/Downloads/Docker/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /var/run/docker.sock:/var/run/docker.sock store/elastic/filebeat:7.7.0
success.png
最后更新时间:2020-06-04 16:31:50
承接各类外包私活,有意邮箱联系 killnetsec#gmail.com~