前言
ELK是Elasticsearch、Logstash和Kibana三个开源软件的统称,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。
Elasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索、结构化搜索以及分析。
Logstash是一个具有实时传输能力的数据收集引擎,用于进行数据收集(如读取文本文件)、解析,并将数据发送给Elasticsearch。
Kibana则为Elasticsearch提供了分析和可视化的Web平台,用户可以在Elasticsearch的索引中查找、交互数据,并生成各种维度表格、图形。
要如何快速搭建一个ELK环境,我们用docker来做个实践。
前期准备,需要安装好docker、docker-compose的运行环境。
一、安装ELK
1、创建相应目录,执行如下命令。
mkdir -p /docker/elk/elasticsearch/data
mkdir -p /docker/elk/logstash/{config,pipeline}
cd /docker/elk
2、编写yaml文件,内容如下;version替换成自己的docker-compose版本。
vim docker-compose.yml
version: '2.2.2'
services: elasticsearch: image: elasticsearch:7.12.1 container_name: elasticsearch environment: - "discovery.type=single-node" ports: - "9200:9200" - "9300:9300" volumes: - ./elasticsearch/data:/usr/share/elasticsearch/data networks: - mynet logstash: image: logstash:7.12.1 container_name: logstash volumes: - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - ./logstash/pipeline:/usr/share/logstash/pipeline ports: - "5044:5044" networks: - mynet depends_on: - elasticsearch kibana: image: kibana:7.12.1 container_name: kibana ports: - "5601:5601" environment: ELASTICSEARCH_URL: http://elasticsearch:9200 ELASTICSEARCH_HOSTS: http://elasticsearch:9200 networks: - mynet depends_on: - elasticsearch networks:mynet:name: mynetdriver: bridge
3、编写logstash配置,内容如下。
vim logstash/config/logstash.yml
pipeline.workers: 2
pipeline.batch.size: 3000
pipeline.batch.delay: 10
path.config: /usr/share/logstash/pipeline
path.logs: /var/log/logstash
vim logstash/pipeline/logstash.conf
input {tcp {port => 5044}
}filter {# 在这里可以添加过滤器,例如grok、date等
}output {elasticsearch {hosts => ["elasticsearch:9200"]index => "log-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}
4、启动服务,执行如下命令。
docker-compose up -d
5、检查服务是否正常启动,执行如下命令。
docker-compose ps -a
正常情况会返回类似如下内容。
6、如果有服务启动失败,可以使用如下命令排查问题。
docker logs 容器id|容器名称
7、至此,ELK安装完成,并且可以正常运行。
二、测试验证
1、打开浏览器输入访问地址,如果一切正常会返回如下界面。
2、至此,ELK已验证完毕。
总结
今天简单介绍了一下什么是ELK,以及如何使用docker快速搭建ELK环境。
最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。