什么是 ELK Stack?

“ELK” 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。


可将 ELK 逐一安装,也可以直接使用套装 sebp/elk

前置准备

创建目录

1
2
mkdir -p /data/elk/data
mkdir -p /data/elk/logstash

设置 vm.max_map_count

vm.max_map_count 未设置时会碰到这个错误

1
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

需要编辑 /etc/sysctl.conf 进行设置,而后重新运行 docker run ... 命令

1
2
3
4
5
6
7
sudo vi /etc/sysctl.conf

### 添加内容 ###
vm.max_map_count=262144
###############

sudo sysctl -p

下载镜像

1
docker pull sebp/elk

前台模式启动 ELK

1
2
3
4
5
docker run --rm \
--name elk \
-e "ES_HEAP_SIZE=4g" \
-e "LS_HEAP_SIZE=2g" \
sebp/elk

初始化 logstash 配置文件

新开一个终端,使用 docker cp 复制 logstash 配置文件

1
docker cp elk:/etc/logstash/conf.d /data/elk/logstash/

而后终止此前启动的 ELK

运行 ELK

1
2
3
4
5
6
7
8
9
10
docker run -d --restart=always \
--name elk \
-v /data/elk/data:/var/lib/elasticsearch \
-v /data/elk/logstash/conf.d:/etc/logstash/conf.d \
-e "ES_HEAP_SIZE=4g" \
-e "LS_HEAP_SIZE=2g" \
-p 5601:5601 \
-p 5044:5044 \
-p 9200:9200 \
sebp/elk
  • 5601 是 Kibana 使用的端口
  • 9200 是 Elasticsearch 使用的端口
  • 5044 是 Logstash 使用的端口