步骤
- 创建一个虚拟网络
docker network create elasticstack
- 拉取elastic套件image
docker pull elasticsearch:6.5.1
docker pull kibana:6.5.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
来检查。
- 创建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应用。
- 添加监控
现在,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安装。
网友评论