日志存储系统:Elasticsearch
Elasticsearch是一个可高度扩展的开源全文搜索与分析引擎,它可以快速地存储、搜索与分析大规模的实时数据。Elasticsearch的底层是基于lucene,并在些基础上提供了一系统便于应用程序使用的rest API,并且还提供了先天性的集群能力,可自由水平扩展以支持日益增长的数据
- 运行elasticsearch容器:
docker run --rm -p 9200:9200 --name elasticsearch-db elasticsearch
需要增加一些参数 以我的为例:docker run -d --name=elasticsearch -v "$PWD/config":/opt/data/elasticsearch/config -v "$PWD/esdata":/opt/data/elasticsearch/data docker.io/elasticsearch
- 访问:curl http://localhost:9200
![](https://i-blog.csdnimg.cn/blog_migrate/18fd0fa9ab26b537859a33957884bb43.png)
在启动Elasticsearch时,我们可传入一些启动参数配置集群信息,如:
docker run --rm -p 9200:9200 --name elasticsearch-db elasticsearch -Ecluster.name=es_cluster_name -Enode.name=es_node
检查ES集群是否可用:
以上的集群信息是由ES的CAT API提供的,它是一个REST API,我们可以添加指定的参数来得到想要的输出信息
使用Postman来调用ES的的Rest API
- 创建索引
http://192.168.43.33:9200/customer
![](https://i-blog.csdnimg.cn/blog_migrate/024e3f8e30013e2b7fd1d0bbaf1a0e3d.png)
- 创建文档
![](https://i-blog.csdnimg.cn/blog_migrate/ac81a5d3cae0b5dd96bdd8ecccb25068.png)
- 查询文档
![](https://i-blog.csdnimg.cn/blog_migrate/6d86202a9cee5b6155d84fcedab40833.png)
- 修改文档
![](https://i-blog.csdnimg.cn/blog_migrate/eefb1c8d22f41f1678f633e55d0c18d1.png)
还可以使用另一种方式修改:
![](https://i-blog.csdnimg.cn/blog_migrate/53f6e687267a2ee893a83db5cbe67980.png)
还可以相对的修改相应字段
- 删除文档
![](https://i-blog.csdnimg.cn/blog_migrate/5aed1f9d7ce3090792f7ab8ac42bb911.png)
- 删除索引
![](https://i-blog.csdnimg.cn/blog_migrate/86253580cad827b7eab461966333bb94.png)
日志收集系统:Logstash
Logstash是一款开源的数据收集引擎,它既提供了实时管道能力,也提供了灵活的插件机制,我们可以自由的选择已有的插件,也能自行开发所需的插件
输入组件:
- file
- syslog
- redis
- beats
过滤插件:
- grok
- mutate
- drop
- clone
- geoip
输出插件:
- elasticsearch
- file
- graphite
- statsd
编解码插件:
- json
- multiline
启动logstash
- docker pull logstash
- run -it --rm --name logstash logstash -e 'input {stdin{}} output{stdout{}}'
指定配置文件启动
vim /opt/data/logstash/logstash.conf
input { stdin { }}output { stdout { }}
docker run -it --rm -v /opt/data/logstash/logstash.conf:/etc/logstash.conf --name logstash logstash logstash -f /etc/logstash.conf
还可以使用Dockerfile制作Logstash镜像
日志查询系统:Kibana
Kibana是一个开源的基于Elasticsearch的分析与可视化平台,我们既可以用它查询 并搜索存储在Elasticesearch中的数据,也可用它制作各式各样的图表、表格、地图等图形化数据,
https://www.cnblogs.com/zhangs1986/p/7325504.html
启动Kibana容器:
docker run --rm -p 5601:5601 --link elasticsearch-db:elasticsearch -e ELASTICSEARCH_URL=http://localhost:9200 --name kibana kibana
![](https://i-blog.csdnimg.cn/blog_migrate/a4b6076b70b0fd68d4914cd10c600049.png)
此时,虽然Kibana与ES已集成,但ES尚未存入任何日志数据,因此Kibana当前还无法使用
在Kibana中操作ES库:
在 Elasticsearch 中存储数据的行为就叫做索引(indexing),而前面提到的文档,属于一种类型(type),这里类型会存在索引(index)中,如果列一个表来和传统数据库比较,大概是这样的:
关系型数据
|
Elasticsearch
|
Databases
|
Indices
|
Tables
|
Types
|
Rows
|
Documents
|
Columns
|
Fields
|
一个 Elasticsearch 集群可以包含多个索引(indices,对应于“数据库”),每个索引可以包含多个类型(types,对应于“表”),每个类型可以包含多个文档(document,对应于“行”),每个文档可以包含多个字段(fields,对应于“列”)
插入:
![](https://i-blog.csdnimg.cn/blog_migrate/090941bb6bed14e307f3d0b682c3a4a0.png)
查询:
![](https://i-blog.csdnimg.cn/blog_migrate/dd7199fe6e1e86d44da3f01b1ef9faa7.png)
重点来了 docker中有点很坑的就是地址不能是本机的地址 localhost都不行 必须是本容器的地址 如果启动kibana的时候url写的localhost:9200 那么 kibana可以启动 进入页面就会显示未连接es:
显示链接错误 所以就需要进入es容器中 查看es容器ip 然后将docker run 后面url改为es容器ip地址才行