docker安装ELKF

docker安装ELKF

准备一台ubuntu18.04的机器

本次搭建使用的版本都是7.6.2,保持版本统一,避免不可预料的异常

一.安装elasticsearch

本次安装的es为单机版,没做集群化部署

前置工作,首先编辑 /etc/sysctl.conf,添加vm.max_map_count=262144一行,sycstl -p重置

  1. 创建docker的统一网络,使kibana能与es通信
docker network create somenetwork
  1. docker运行es
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  -e ES_JAVA_OPTS="-Xms=256m -Xms=256m" --network=somenetwork -v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  elasticsearch:7.6.2

-e discovery.type=single-node 表示单个节点开发

-e ES_JAVA_OPTS="-Xms=256m -Xms=256m"设置es启动内存,避免启动失败

--network=somenetwork指定es容器的启动网络,为了让下一步kibana能访问到

-v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml挂载es的配置文件,方便修改

  1. 修改elasticsearch.yml
http.host: 192.168.8.10	#本地地址
#跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. 查看启动结果
docker restart es	#修改配置文件后重启
docker ps 
curl localhost:9200

在这里插入图片描述

二.安装kibana

  1. 启动kibana容器
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.8.10:9200 --name kibana -p 5601:5601 --network=somenetwork kibana:7.6.2
  1. 进入kibana容器,修改配置文件
docker exec -it kibana /bin/bash

编辑kibana.yml

bash-4.2$ vi /usr/share/kibana/config/kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.8.10:9200" ]	#改成es地址
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"	#汉化kibana界面
  1. 退出容器重启kibana
docker restart kibana
  1. 测试,访问http://192.168.8.10:5601

在这里插入图片描述

三、安装logstash

logstash最关键的是conf.d下面的xxx.conf文件,用好logstash就要学会配置conf文件

  1. 新建挂载配置文件logstash.yml和base.conf

logstash.yml内容:

path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash

base.conf内容:

input {
    beats {
    	port => 5044				# logstash暴露的端口
        include_codec_tag => false	# 去除filebeat的默认tag
    }
}
output {
	# 下面是根据接收的条件判断,输出到es中的不同索引

    if [fields][log_type] == "base" { 		# fields\log_type是在filebeat中定义的
        elasticsearch {
            hosts => ["192.168.8.10:9200"]	#es地址	
            index => "skymbase-logs"		#索引名,自定义
        }
    }
#	也可使用 tags,tags也是在filebeat中定义的,第二个"[0]"是logstash接收的tags是个数组,一定要加,具体数字可以查看日志
#    if [tags][0] == "skymbase-logs" { 				# fields\log_type是在filebeat中定义的
#        elasticsearch {
#            hosts => ["192.168.8.10:9200"]
#            index => "skymbase-logs"
#        }
#    }
    if [fields][log_type] == "project"{
        elasticsearch {
            hosts => ["192.168.8.10:9200"]
            index => "skymproject-logs"
        }
    }
    if [fields][log_type] == "nginx"{
        elasticsearch {
            hosts => ["192.168.8.10:9200"]
            index => "nginx-logs"
        }
    }
    stdout { codec => rubydebug }
}
  1. 启动docker容器
docker run -it -d -p 5044:5044 --name logstash -v /usr/local/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /usr/local/docker/logstash/conf.d/:/usr/share/logstash/conf.d/ logstash:7.6.2
  1. 查看启动状态
docker ps 

在这里插入图片描述

四、安装Filebeat

  1. 新建filebeat.yml
filebeat.inputs:
- type: log						# 默认log,还有stdin输入
  enabled: true
  paths:
  - /var/log/skym/skymbase.log	# 读取日志的位置,可使用正则表达来通配
  tags: ["skymbase-logs"]		# 标记tag,方便logstash中来区分日志源
  fields:
    log_type: base				# 键值对,key、value均可自定义
  # 将以空格开头的所有行合并到上一行 并把以Caused by开头的也追加到上一行
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:' 
  multiline.negate: false
  multiline.match: after

- type: log
  enabled: true
  paths:
  - /var/log/skym/skymproject.log
  tags: ["skymproject-logs"]
  fields:
    log_type: project
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
  multiline.negate: false
  multiline.match: after

- type: log
  enabled: true
  paths:
  - /var/log/nginx/access.log
  tags: ["nginx-logs"]
  fields:
    log_type: nginx

- type: log
  enabled: true
  paths:
  - /var/log/nginx/error.log
  tags: ["nginx-error"]

output.logstash:
  hosts: ['192.168.8.10:5044']	# 输出到logstash,启动filebeat前必须先启动要输入的工具,这边必须先启动"192.168.8.10:5044"上的logstash
  1. docker启动filebeat容器
docker run --name filebeat --restart=always --user=root -d -v /home/admin/skymbase.log:/var/log/skym/skymbase.log -v /home/admin/skymproject.log:/var/log/skym/skymproject.log -v /var/log/nginx/access.log:/var/log/nginx/access.log -v /usr/share/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro -v /var/lib/docker/containers:/var/lib/docker/containers:ro -v /var/run/docker.sock:/var/run/docker.sock:ro docker.elastic.co/beats/filebeat:7.6.2
  1. 查看容器启动状态
docker ps 

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值