- 前言
- 1 环境
- 2 拉取镜像
- 3 创建自定义网络
- 4 elasticsearch配置
- 4.1 创建目录
- 4.2 配置elasticsearch.yml文件
- 5 kibana配置
- 5.1 配置kibana.yml文件
- 6 logstash配置
- 6.1 logstash.yml文件
- 6.2 my.conf文件
- 7 filebeat配置
- 7.1 创建测试目录
- 7.2 配置filebeat.yml文件
- 8 docker-compose.yml文件配置
- 8.1 配置内容
- 8.2 启动测试
进行安装配置前先安装好docker和docker-compose
1 环境CentOS Linux release 7.4.1708 (Core)
2 拉取镜像docker pull elasticsearch:7.16.1 docker pull kibana:7.16.1 docker pull logstash:7.16.1 docker pull elastic/filebeat:7.16.13 创建自定义网络
docker network create somenetwork4 elasticsearch配置 4.1 创建目录
/mydata/elk/elasticsearch/logs
/mydata/elk/elasticsearch/data
/mydata/elk/elasticsearch/conf
存放位置:/mydata/elk/elasticsearch/conf
配置内容:
# default configuration in docker cluster.name: "elasticsearch" #集群名 network.host: 0.0.0.0 #主机ip #network.bind_host: 0.0.0.0 #cluster.routing.allocation.disk.threshold_enabled: false #node.name: es-master #node.master: true #node.data: true http.cors.enabled: true #允许跨域,集群需要设置 http.cors.allow-origin: "*" #跨域设置 #http.port: 9200 #transport.tcp.port: 9300 #discovery.zen.minimum_master_nodes: 1 #discovery.zen.ping.unicast.hosts: *.*.*.*:9300, *.*.*.*:9301, *.*.*.*:93025 kibana配置 5.1 配置kibana.yml文件
存放位置:/mydata/elk/kibana/conf
配置内容:
## Default Kibana configuration for docker target server.name: "kibana" ## 必须设置为0.0.0.0才能访问到elasticsearch server.host: "0.0.0.0" ## host的公网ip,也可以填写docker-compose.yml中elasticsearch的容器名如 "http://elasticsearch:9200"(前提是同属于一个docker network,且类型为bridge) elasticsearch.hosts: [ "http://192.168.226.135:9200" ] #中文模式 i18n.locale: "zh-CN"6 logstash配置 6.1 logstash.yml文件
存放位置:/mydata/elk/logstash
配置内容:
http.host: "0.0.0.0" #配置elasticsearch集群地址 xpack.monitoring.elasticsearch.hosts: [ "http://192.168.226.135:9200" ] #允许监控 xpack.monitoring.enabled: false #目录为挂载目录 path.config: /usr/share/logstash/conf/my.conf6.2 my.conf文件
存放位置:/mydata/elk/logstash/conf
配置内容:
input {
beats {
port => 5044
client_inactivity_timeout => 36000
}
}
output {
elasticsearch {
hosts => ["http://192.168.226.135:9200"]
index => "myindex-%{+YYYY.MM}"
}
}
7 filebeat配置
7.1 创建测试目录
项目日志目录:/var/log/logapp
放入日志文件:xx.log
存放位置:/mydata/elk/filebeat/conf
配置内容:
# 定义info1应用的input类型、以及存放的具体路径
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/logapp/*.log
tags: ["logapp"]
fields:
index: logapp
#============================= Filebeat modules ===============================
filebeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
# Set to true to enable config reloading
reload.enabled: true
# ============================== logstash =====================================
output.logstash:
hosts: ["192.168.226.135:5044"] #192.168.226.135为logstash安装的服务器ip
enabled: true
#============================== Kibana =====================================
setup.kibana:
host: "192.168.226.135:5601"
#============================== elasticsearch =====================================
#output.elasticsearch:
# hosts: ["192.168.226.135:9200"]
# enabled: true
8 docker-compose.yml文件配置
8.1 配置内容
version: "3.4" #版本号
services:
########## elk日志套件(镜像版本最好保持一致) ##########
elasticsearch: #服务名称
container_name: elasticsearch #容器名称
image: elasticsearch:7.16.1 #使用的镜像 elastisearch:分布式搜索和分析引擎,提供搜索、分析、存储数据三大功能
restart: on-failure #重启策略 1)no:默认策略,当docker容器重启时,服务也不重启 2)always:当docker容器重启时,服务也重启 3)on-failure:在容器非正常退出时(退出状态非0),才会重启容器
ports: #避免出现端口映射错误,建议采用字符串格式
- "9200:9200"
- "9300:9300"
environment: #环境变量设置 也可在配置文件中设置,environment优先级高
- discovery.type=single-node #单节点设置
- bootstrap.memory_lock=true #锁住内存 提高性能
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置启动内存大小 默认内存/最大内存
ulimits:
memlock:
soft: -1
hard: -1
volumes: #挂载文件
- /mydata/elk/elasticsearch/data:/usr/share/elasticsearch/data
- /mydata/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /mydata/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
networks: #网络命名空间 用于隔离服务
- somenetwork
kibana:
container_name: kibana
image: kibana:7.16.1 #kibana:数据分析可视化平台
depends_on:
- elasticsearch
restart: on-failure
ports:
- "5601:5601"
volumes:
- /mydata/elk/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- somenetwork
logstash:
container_name: logstash
image: logstash:7.16.1 #logstash:日志处理
command: logstash -f /usr/share/logstash/conf/my.conf
depends_on:
- elasticsearch
restart: on-failure
ports:
- "9600:9600"
- "5044:5044"
volumes: #logstash.conf日志处理配置文件 格式:#输入 input{} #分析、过滤 filter{} #输出 output{}
- /mydata/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
- /mydata/elk/logstash/conf/:/usr/share/logstash/conf/
networks:
- somenetwork
filebeat:
container_name: filebeat
image: elastic/filebeat:7.16.1 #filebeat:轻量级的日志文件数据收集器,属于Beats六大日志采集器之一
depends_on:
- elasticsearch
- logstash
- kibana
restart: on-failure
volumes: #filebeat.yml配置.log文件的日志输出到logstash #同时配置挂载需要扫描得日志目录,因为扫描的是filebeat容器内的文件路径
- /mydata/elk/filebeat/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/log/logapp:/var/log/logapp
networks:
- somenetwork
#使用自定义的网桥名字
networks:
somenetwork:
external: true
8.2 启动测试
命令:docker-compose up -d
kibana测试:



