部署Docker版本ELK
部署Docker版本ELK
1 下载docker 镜像
dokcer pull sebp/elk
# 修改系统的vm.max_map_count
vi /etc/sysctl.conf
# 增加以下属性
vm.max_map_count=262144
# 查看修改结果
sysctl -p
2 创建部署ELK的配置文件
-
文件目录结构
[root@ac ~]# tree /root/elk . ├── docker-compose.yml ├── elasticsearch │ └── data ├── kibana │ └── kibana.yml └── logstash ├── config └── conf.d mkdir -p /root/elk/elasticsearch/data mkdir -p /root/elk/logstash/config mkdir -p /root/elk/logstash/conf.d mkdir -p /root/elk/kibana/kibana.yml
-
先临时创建一个elk 窗口
docker run --name elk sebp/elk
-
复制docker中的kibana与logstash的配置文件到宿主机中
docker cp -a elk:/opt/kibana/config/kibana.yml /root/elk/kibana/ docker cp -a elk:/opt/logstash/config /root/elk/logstash/config
-
删除临时创建的容器
docker rm -f elk
-
单机版本的docker-compose文件:注意路径需要与实际环境一致
# cat docker-compose.yml version: '3' services: elk: image: sebp/elk:8.7.0 container_name: elk restart: always ports: - "5601:5601" - "9200:9200" - "5044:5044" volumes: - /root/elk/elasticsearch/data:/var/lib/elasticsearch - /root/elk/logstash/conf.d:/etc/logstash/conf.d - /root/elk/logstash/config:/opt/logstash/config - /root/elk/kibana/kibana.yml:/opt/kibana/config/kibana.yml environment: - TZ=Asia/Shanghai
-
创建elk容器
docker-compose -f ./docker-compose.yml up -d
-
配置Logstash
cat ./logstash/conf.d/yourconfigname.conf input { beats { port => 5044 } } output { stdout { codec => rubydebug } elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }
-
汉化kibana
vim ./kibana/kibana.yml # 在最后一行添加如下内容 i18n.locale: "zh-CN"
3 安装IK分词器
-
注意查看es版本信息:通过localhost:9200查看es版本信息,保持ik版本和es一致。
-
根据对应版本下载分词器
# cd /root/elk # mkdir cd analysis-ik # cd analysis-ik/ # wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.7.0/elasticsearch-analysis-ik-8.7.0.zip # mkdir elasticsearch-analysis-ik-8.7.0 # unzip -o elasticsearch-analysis-ik-8.7.0.zip -d elasticsearch-analysis-ik-8.7.0
-
将解压好的IK插件复制到镜像内
docker cp elasticsearch-analysis-ik-8.7.0 811573c1e575:/opt/elasticsearch/plugins
-
重启ELK
docker restart elk
-
查看是否生效
POST _analyze { "analyzer": "ik_smart", "text": "我是地球人" } POST _analyze { "analyzer": "ik_max_word", "text": "我是地球人" }