美文网首页
使用Docker部署Elastic Stack

使用Docker部署Elastic Stack

作者: 平仄_pingze | 来源:发表于2018-11-22 11:07 被阅读118次

步骤

  1. 创建一个虚拟网络
docker network create elasticstack
  1. 拉取elastic套件image
docker pull elasticsearch:6.5.1
docker pull kibana:6.5.1
  1. 创建elasticsearch容器
docker run -d --name elasticsearch --net elasticstack --network-alias elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.1

由于使用了elasticstack network,使用docker network inspect elasticstack,可以看到elasticsearch被分配了一套地址:

{
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Containers": {
            "62a7412dd07ff44e9f5069af7da78292eaee7afe3d37c343b366f14e9df75873": {
                "Name": "elasticsearch",
                "EndpointID": "c0d47e47e13a2da91fcf61b7c319b626095738879441fbf51d4d0d599bd3c66e",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        }
}

可以执行curl 127.0.0.1:9200来检查服务是否正常启动。如果异常,可以执行docker logs elasticseach来检查。

  1. 创建kibana容器
docker run -d --name kibana --net elasticstack --network-alias kibana -p 5601:5601 -e ELASTICSEARCH_URL=http://172.19.0.1:9200 kibana:6.5.1

这里使用了同样的网络,并指定elasticsearch在指定的地址。
这时可以外部访问服务器5601端口,使用kibana应用。

  1. 添加监控
    现在,elasticsearch中还没有数据。可以通过添加一些常用监控模块来增加数据。
    点击kibana左上角logo,可以跳转到管理页面,有添加数据的入口。

现在我们添加一个System metrics,来监控服务器系统信息。需要安装Metricbeat组件,还是用docker安装。
参考官方文档

docker pull elastic/metricbeat:6.5.1

这次使用配置文件:

# metricbeat.yaml
metricbeat.config.modules:
  path: /usr/share/metricbeat/modules.d/*.yml
  reload.enabled: false
setup.kibana:
  host: "172.19.0.1:5601"
output.elasticsearch:
  hosts: ["172.19.0.1:9200"]
setup.dashboards.enabled: true
# system.yml
- module: system
  period: 10s
  metricsets:
    - cpu
    - load
    - memory
    - network
    - process
    - process_summary
    - core
    - diskio
    - socket
  processes: ['.*']
  process.include_top_n:
    by_cpu: 5      # include top 5 processes by CPU
    by_memory: 5   # include top 5 processes by memory

- module: system
  period: 1m
  metricsets:
    - filesystem
    - fsstat
  processors:
  - drop_event.when.regexp:
      system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'

- module: system
  period: 1m
  metricsets:
    - uptime

启动容器:

docker run -t --name metricbeat --mount type=bind,source="$(pwd)"/metricbeat.yml,target=/usr/share/metricbeat/metricbeat.yml --mount type=bind,source="$(pwd)"/modules.d,target=/usr/share/metricbeat/modules.d --mount type=bind,source=/proc,target=/hostfs/proc,readonly --mount type=bind,source=/sys/fs/cgroup,target=/hostfs/sys/fs/cgroup,readonly --mount type=bind,source=/,target=/hostfs,readonly  --net=host elastic/metricbeat:6.5.1 -system.hostfs=/hostfs

稍等一下,打开Kibana的Dashboard即可看到监控信息。

使用docker exec metricbeat metricbeat modules list可以查看启动的modules,也可以进行管理。
具体配置可以修改对应的modules.d目录中的文件。

但是,docker内的metricbeat仍然不能对host中的docker和Containers进行监控。
metricbeat最好还是直接装在host里,不用docker安装。

相关文章

网友评论

      本文标题:使用Docker部署Elastic Stack

      本文链接:https://www.haomeiwen.com/subject/lhukqqtx.html