前言
依旧是上次的朋友, 项目搭建完后又想搞一手日志分析玩玩, 其实他的日志已经统一输出到一个文件里面了, 接elk属实没啥必要, 不过玩一玩还是可以的
下面就是具体的操作步骤了
安装docker-compose
pip install --upgrade pip pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose
编写配置文件
别忘了把127.0.0.1 替换成自己的ip地址
创建挂载目录
mkdir -p /data/elk/es /data/elk/filebeat cd /data/elk
小技巧
linux vim下粘贴文件可能会存在格式文件, 在粘贴前进入paste模式
:set paste
然后在插入模式下进行粘贴就好了
编写 filebeat配置
vim filebeat.yml
filebeat.inputs: - type: log enabled: true paths: - /data/docker/logs/*/*.log # 你的日志路径 #============================= 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 output.logstash: # The Logstash hosts hosts: ["127.0.0.1:5044"] # logstash 配置
编写 logstash 配置
vim logstash.conf
input { beats { port => 5044 # 端口配置 host => "0.0.0.0" } } output { elasticsearch { hosts => ["127.0.0.1:9200"] # es地址 } stdout { codec => rubydebug } }
vim logstash.yml
xpack.monitoring.elasticsearch.hosts: ["http://127.0.0.1:9100"] #xpack.monitoring.elasticsearch.username: "" #xpack.monitoring.elasticsearch.password: ""
编写docker-compose
vim docker-compose.yml
version: "3.2" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2 container_name: es environment: - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ports: - 9200:9200 networks: # 保证同网络 - "elk-net" filebeat: image: docker.elastic.co/beats/filebeat:7.4.2 container_name: filebeat volumes: - type: bind source: "/data/elk/filebeat" target: "/data" - type: bind source: "/data/elk/filebeat.yml" target: "/usr/share/filebeat/filebeat.yml" - type: bind source: "/data/docker/logs" # 替换成自己的docker日志路径/服务日志路径 target: "/data/docker/logs" - type: bind source: "/etc/localtime" # 同步时区 target: "/etc/localtime" networks: - "elk-net" depends_on: # 定义依赖关系 - "logstash" logstash: image: docker.elastic.co/logstash/logstash:7.4.2 container_name: logstash ports: - 5044:5044 volumes: - type: bind source: "/data/elk/logstash.conf" target: "/usr/share/logstash/pipeline/logstash.conf" - type: bind source: "/data/elk/logstash.yml" target: "/usr/share/logstash/config/logstash.yml" - type: bind source: "/etc/localtime" target: "/etc/localtime" networks: - "elk-net" kibana: image: docker.elastic.co/kibana/kibana:7.4.2 container_name: kibana ports: - 5601:5601 networks: - "elk-net" networks: elk-net:
服务启动
这样基础的配置文件就写完了, 生产环境上我们还需要考虑到es的高可用, 部署集群, 自定义 logstash 对日志数据的处理, 同步到es的索引库以及创建对应的mapping模板等等. 更多玩法敬请自行摸索
启动命令
docker-compose up --build -d
查看logstash日志
docker logs -f --tail=20 logstash
就能看到logstash采集的日志了
kibana配置discover
根据你的索引名配置规则
然后选择以时间为维度
这样你就能看见日志的采集情况了
容器删除
docker rm -f $(docker ps -a|grep "docker.elastic")