原文由 rafpe 发布于2015年10月4日
本文是关于如何配置ELK来作为日志系统,本来应该很简短。但是,每次我使用这种技术的时候都会受到一些“启发”,我认为从一开始就让它以正确地方式运行是值得的。
现在,由于我们将要自动化一些东西,我们将利用Docker compose,它将允许我们以自动化的方式配置整个栈。 这里 详细介绍了Docker compose。
本文中我们将在运行于Azure的Ubuntu主机中使用docker + docker-compose。如果你对于我总是在截屏中显示我的IP地址很疑惑...因为它们不是负载均衡静态IP地址。所以每次我连接主机的时候我都会得到一个新的。
那么我们需要做的第一件事是安装Docker-compose。由于我们都知道docker在不断地发展,最好给你一个[github release page]链接而不是过期的直接链接。
一旦安装完成你可以尝试以下命令以确保它已经安装了:
docker-compose --version
由于我们将使用配置文件并将elasticsearch数据存储在主机中,我们将需要创建好目录结构。我知道通过variables可以做得更好,但ubuntu有一定的学习曲线,所以我把找到更好方法的任务留给你们,现在我们来运行以下命令:
sudo mkdir -p /cDocker/elasticsearch/data
sudo mkdir -p /cDocker/logstash/conf
sudo mkdir -p /cDocker/logstash/agent
sudo mkdir -p /cDocker/logstash/central
sudo mkdir -p /cDocker/compose/elk_stack
创建好目录结构后我们需要准备好配置文件。要完成它我们将clone github仓库(gists),我已经提前准备好了(也经过测试):
```
git clone https://gist.github.com/60c3d7ff1b383e34990a.git /cDocker/compose/elk_stack
git clone https://gist.github.com/6627a2bf05ff956a28a9.git /cDocker/logstash/central/
git clone https://gist.github.com/0cd6594672ebfe1205a5.git /cDocker/logstash/agent/
git clone https://gist.github.com/c897a35f955c9b1aa052.git /cDocker/elasticsearch/data/
```
由于github中的名字不同(以后会进行更改),我们需要重命名它们,你可以运行以下命令:
```
mv /cDocker/compose/elk_stack/docker-compose_elk_with_redis.yml /cDocker/compose/elk_stack/docker-compose.yml
mv /cDocker/elasticsearch/data/elasticsearch_sample_conf.yml /cDocker/elasticsearch/data/elasticsearch.yml
mv /cDocker/logstash/agent/logstash_config_agent_with_redis.conf /cDocker/logstash/conf/agent.conf
mv /cDocker/logstash/central/logstash_config_central.conf /cDocker/logstash/conf/central.conf
```
如果你浏览以下的代码文件,你就会知道我们定义了如何来创建我们的镜像,将要暴露哪个端口,容器之间将要创建哪些连接。幸亏这些主机将会按照一定的顺序创建和连接,由于我们已经准备好了配置文件整个栈已经准备好了。
```
elasticsearch-central:
image: elasticsearch:latest
volumes:
- /cDocker/elasticsearch/data:/usr/share/elasticsearch/data
environment:
- ES_CLUSTERNAME=mydevelastic
command: elasticsearch -Des.config=/usr/share/elasticsearch/data/elasticsearch.yml
ports:
- "9200:9200"
- "9300:9300"
kibana-frontend:
image: kibana:latest
ports:
- "5601:5601"
links:
- elasticsearch-central:elasticsearch
redis-cache:
image: redis:latest
ports:
- "6379:6379"
logstash-central:
image: logstash:latest
ports:
- "25826:25826"
- "25826:25826/udp"
volumes:
- /cDocker/logstash/conf:/conf
command: logstash -f /conf/central.conf
links:
- redis-cache:redis
- elasticsearch-central:db
logstash-agent:
image: logstash:latest
ports:
- "25827:25827"
- "25827:25827/udp"
volumes:
- /cDocker/logstash/conf:/conf
command: logstash -f /conf/agent.conf
links:
- redis-cache:redis
```
docker-compose_elk_with_redis.yml hosted with ❤ by GitHub
第一次运行需要的东西现在一切就绪。下一步进入compose目录(我们的docker-compose文件所在地)并运行以下命令:
/cDocker/compose/elk_stack#: docker-compose up -d
它将会执行拉取所有层然后创建服务。完成后你将会看来类似如下的东西:
就是这样,同志们!当然我们还有许多潜力可以做得更多更好(例如使用variables/labels)。希云( https://csphere.cn )以后将为大家分享更多这样的精文,和大家共同探讨学习,请保持关注。
在使用ELK栈的主题中,我们将探索基于logstash插件管理输入,我们将用自己的眼睛见证Docker ELK将会如何增强我们的物联网自动化。
希云是Docker领域的专家,致力于通过Docker技术提供更好的云计算产品和服务。希云品牌下的产品包括了
并提供相关的培训和咨询服务
欢迎企业垂询:
回复数字“1”即可查看【Docker持续部署图文详解】
回复数字“2”即可查看【初识Docker和Windows Server容器】
回复数字“3”即可查看【为Windows创建Node.js容器镜像】
回复数字“4”即可查看【使用Docker-in-Docker来运行CI或集成测试环境?三思】
尊重知识,请必须全文转载,不得删改,包括本行。