docker中搭建Kibana和Elasticsearch 及处理Status RED状态
阅读原文时间:2021年04月21日阅读:1

日志存储系统:Elasticsearch

Elasticsearch是一个可高度扩展的开源全文搜索与分析引擎,它可以快速地存储、搜索与分析大规模的实时数据。Elasticsearch的底层是基于lucene,并在些基础上提供了一系统便于应用程序使用的rest API,并且还提供了先天性的集群能力,可自由水平扩展以支持日益增长的数据

  1. 运行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

  1. 访问:curl http://localhost:9200

在启动Elasticsearch时,我们可传入一些启动参数配置集群信息,如:

docker run --rm -p 9200:9200 --name elasticsearch-db elasticsearch -Ecluster.name=es_cluster_name -Enode.name=es_node

检查ES集群是否可用:

curl http://localhost:9200/_cat/health?v

curl http://localhost:9200/_cat/health?format=json&bytes=b

以上的集群信息是由ES的CAT API提供的,它是一个REST API,我们可以添加指定的参数来得到想要的输出信息

使用Postman来调用ES的的Rest API

  • 创建索引

http://192.168.43.33:9200/customer

  • 创建文档

  • 查询文档

  • 修改文档

还可以使用另一种方式修改:

还可以相对的修改相应字段

  • 删除文档

  • 删除索引

日志收集系统:Logstash

Logstash是一款开源的数据收集引擎,它既提供了实时管道能力,也提供了灵活的插件机制,我们可以自由的选择已有的插件,也能自行开发所需的插件

输入组件:

  1. file
  2. syslog
  3. redis
  4. beats

过滤插件:

  1. grok
  2. mutate
  3. drop
  4. clone
  5. geoip

输出插件:

  1. elasticsearch
  2. file
  3. graphite
  4. statsd

编解码插件:

  1. json
  2. multiline

启动logstash

  1. docker pull logstash
  2. 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

访问: http://192.168.43.33:5601/app/kibana

此时,虽然Kibana与ES已集成,但ES尚未存入任何日志数据,因此Kibana当前还无法使用

在Kibana中操作ES库:

在 Elasticsearch 中存储数据的行为就叫做索引(indexing),而前面提到的文档,属于一种类型(type),这里类型会存在索引(index)中,如果列一个表来和传统数据库比较,大概是这样的:

关系型数据

Elasticsearch

Databases

Indices

Tables

Types

Rows

Documents

Columns

Fields

一个 Elasticsearch 集群可以包含多个索引(indices,对应于“数据库”),每个索引可以包含多个类型(types,对应于“表”),每个类型可以包含多个文档(document,对应于“行”),每个文档可以包含多个字段(fields,对应于“列”)

插入:

查询:

重点来了 docker中有点很坑的就是地址不能是本机的地址 localhost都不行 必须是本容器的地址 如果启动kibana的时候url写的localhost:9200 那么 kibana可以启动 进入页面就会显示未连接es:

显示链接错误  所以就需要进入es容器中  查看es容器ip  然后将docker run 后面url改为es容器ip地址才行