ELK环境搭建

  1. STEP1: 安装前的准备
  2. STEP2: 安装Elastic套件

STEP1: 安装前的准备

安装docker并配置镜像加速,参考步骤如下:

  1. 安装Docker

    Docker安装及使用(简明流程,centos7下安装)

    Docker 离线安装

  2. 安装Portainer

    吊炸天的 Docker 图形化工具 Portainer,必须推荐给你

  3. 了解版本差异

    elasticsearch 7.X全部版本的新特性与重大变化

STEP2: 安装Elastic套件

  1. 参考下文安装es, kibana

    图文详解docker搭建elkstack(elk)[使用es-logstash-filebeat-kibana]

Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options
# 遇到上述启动报错信息,可先不带挂载启动容器,将容器中的配置文件拷贝到外部后,删除镜像重新执行挂载启动,注意外部目录需要读写权限,建议777
docker cp 175109ebc27d:/usr/share/elasticsearch/config/ /home/ajay/volumn/es/data
  1. 安装Kibana,过程中出现问题,可参考下面的帖子

    【解决】Kibana server is not ready yet:Docker启动kibana迟迟未成功

  2. 配置启动logstash

a. 创建挂载目录logstash,然后在logstash目录下新增logstash.yml及logstash.conf,ip相应调整

logstash.yml内容如下

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: 172.19.0.1:9200

logstash.conf内容如下

input {
  beats {
    port => 5044
  }
}

# filter {
  # Only matched data are send to output.
# }

output {
  elasticsearch {
    hosts  => ["http://172.19.0.1:9200"]    # ElasticSearch host, can be array.
    index  => "test-%{+YYYYMMdd}"             # The index to write data to.
  }
  stdout { codec => json_lines }
}

#input:输入
#beats是我们后面要启动的filebeat,filebeat通过port:5678将收集的日志发送给logstash
#filter:过滤
#output:输出

b. 以挂载方式启动logstash

docker run -d \
-p 5044:5044 --net elbk-net \
--name logstash -p 5066:5066 -p 5067:5067 \
-v /home/ajay/volumn/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/ajay/volumn/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
logstash:7.16.3
  1. 配置启动filebeat

    整体思路为:将需要采集的日志文件挂载到容器内,启动filebeat容器,由容器进程操作挂载后的日志文件并传输给logstash

    a. 假设需要采集的日志文件路径为/home/ajay/application/test.log, 则创建filebeat.yml

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /home/ajay/application/logs/test.log
output.logstash:
    hosts: ["192.168.21.128:5044"]

#paths:测试日志的存放位置
#hosts:你的ip地址,5044端口是与上面启动的logstash对应

b. 假设需要采集的日志文件路径为/usr/application/test.log,docker启动filebeat脚本如下:

docker run \
-v /home/ajay/application/logs:/usr/application/logs:rw \
-v /home/ajay/volumn/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro \
-e setup.kibana.host=172.19.0.1:5601 -d \
--name filebeat --net elbk-net \
docker.elastic.co/beats/filebeat:7.16.3

此处尤其需要注意filebeat.yml后的:ro,表示该文件挂载到镜像内,必须去除写权限

该文件如果带有写权限,则会出现以下报错:

Exiting: error loading config file: config file ("filebeat.yml") can only be writable by the owner but the permissions are "-rwxrwxrwx" (to fix the permissions use: 'chmod go-w /usr/share/filebeat/filebeat.yml')
  1. Nginx日志采集与监控

    Filebeat 采集 Nginx 日志的方法_nginx