构建ELKS日志收集

2023-06-05 17:21:51 浏览数 (2)

本页目录

  • 创建网络
  • 安装ElasticSearch
    • 进入容器修改文件
    • 重启ElasticSearch
  • Kibana
    • 拉取Kibana
    • 启动Kibana
    • 修改Kibana配置文件
  • logstash配置
    • logstash介绍
    • Logstash – 安装 – 启动
      • 创建文件夹(用于放logstash配置文件)
      • 创建2个文件(一共需要创建2个文件,作用不一样)
    • 启动Logstash
  • FileBeat 安装 – 启动
    • 制作日志文件
    • 塞入日志数据
    • 创建FileBeat配置文件
    • 启动FileBeat
  • 使用ELK
    • 找到索引模式
    • 配置日志索引
    • 前往Discover查看日志分析
  • 特别说明:安装程序如果遇到问题补充命令
    • 容器启动时可查看容器日志
    • 查看容器内容地址

特别说明,Mac系统需要关闭SIP才可以正常使用!即便开启了,某些位置也可能导致你无法正常使用。去他妈的,本教程不适合Mac Apple Chip安装的Docker!!

创建网络

代码语言:javascript复制
docker network create elk

安装ElasticSearch

代码语言:javascript复制
docker pull elasticsearch:7.7.1

Docker配置ElasticSearch时,无法直接挂载不方便导出elasticsearch.yml配置文件。我们可以在启动的时候,进入容器修改。(我们也可以从容器拷贝出来配置文件,到我们本地,我们本地修改了elasticsearch.yml配置文件后再在塞入容器。)

代码语言:javascript复制
docker run --privileged=true --network elk --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -v /home/docker/elk/es/data/:/usr/share/elasticsearch/data/ -v /home/docker/elk/es/logs/:/usr/share/elasticsearch/logs/ elasticsearch:7.7.1复制

进入容器修改文件

代码语言:javascript复制
docker exec -it 容器ID /bin/bash

修改文件

代码语言:javascript复制
vi config/elasticsearch.yml

添加如下配置

代码语言:javascript复制
cluster.name: "docker-cluster"
network.host: 0.0.0.0

配置完毕,记得退出ElasticSearch容器。exit

重启ElasticSearch

代码语言:javascript复制
docker restart 容器ID

等待一会,查看ElasticSearch是否启动 curl ip:9200

代码语言:javascript复制
{
    "name":"dbc23c79f8ca",
    "cluster_name":"docker-cluster",
    "cluster_uuid":"SNSkQPWPREKJg_MAxXB30A",
    "version":{
        "number":"7.7.1",
        "build_flavor":"default",
        "build_type":"docker",
        "build_hash":"ad56dce891c901a492bb1ee393f12dfff473a423",
        "build_date":"2020-05-28T16:30:01.040088Z",
        "build_snapshot":false,
        "lucene_version":"8.5.1",
        "minimum_wire_compatibility_version":"6.8.0",
        "minimum_index_compatibility_version":"6.0.0-beta1"
    },
    "tagline":"You Know, for Search"
}

Kibana

拉取Kibana

代码语言:javascript复制
docker pull kibana:7.7.1

启动Kibana

代码语言:javascript复制
docker run --privileged=true -d --net elk --name kibana -v /home/docker/elk/kibana:/config -p 5601:5601 kibana:7.7.1复制

修改Kibana配置文件

进入kibana容器

代码语言:javascript复制
docker exec -it 容器ID /bin/bash

修改配置文件,实现可视化界面中文

代码语言:javascript复制
vim /home/docker/elk/kibana/kibana.yml
代码语言:javascript复制
docker exec -it 容器ID /bin/bash
代码语言:javascript复制
vi config/kibana.yml

添加代码 或修改 添加中文(与下文保持一直就行)

代码语言:javascript复制
server.host: "0"
server.shutdownTimeout: "5s"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://192.168.10.13:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"

logstash配置

logstash介绍

Logstash 配置文件有两个必需元素,输入(inputs)和输出(ouputs),以及一个可选元素 filters。输入插件配置来源数据,过滤器插件在你指定时修改数据,输出插件将数据写入目标。

看到上图,就能了解logstash的作用,他就是中间文件处理的作用。有filebeat上传文件到Logstash,然后处理一下发往Elasticsearch。然后Kibana就展示Elasticsearch的数据。

我们首先需要创建一个配置文件,配置内容如下图所示:

Logstash – 安装 – 启动

创建文件夹(用于放logstash配置文件)

代码语言:javascript复制
mkdir /home/docker/elk/logstash

创建2个文件(一共需要创建2个文件,作用不一样)

文件1:vim /home/docker/elk/logstash/logstash.yml ,参考配置:https://www.elastic.co/guide/en/logstash/7.7/logstash-settings-file.html

代码语言:javascript复制
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: 192.168.10.13:9200

文件2:vim /home/docker/elk/logstash/logstash.conf,参考配置:https://www.elastic.co/guide/en/logstash/7.7/configuration.html

代码语言:javascript复制
input {
  beats {
    port => 4567
  }
}
filter {
  #Only matched data are send to output.
}
output {
  elasticsearch {
    hosts  => ["http://192.168.10.13:9200"]   #ElasticSearch host, can be array.
    index  => "logapp-%{ YYYY.MM.dd}"         #The index to write data to.
  }
}

启动Logstash

代码语言:javascript复制
docker pull logstash:7.7.1

暴露出:4567端口

代码语言:javascript复制
docker run --privileged=true -d -p 4567:4567 --name logstash -p 5044:5044 -p 5045:5045 -v /home/docker/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /home/docker/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml logstash:7.7.1复制

小提示:配置文件中分为三个模块,input,filter,output很好理解,就是把东西通过input输入,通过filter过滤,通过output输出。其中input中的beats插件就是我们下面要启动的filebeat。filebeat通过4567端口将收集的日志发送给logstash,当然想用哪个端口随便你。

FileBeat 安装 – 启动

FileBeat日志采集器作用就是:收集好了日志,发往logstash。(需要在配置文件指定logstash的Host)

logstash保留出一个API。然后FileBeat在任何地方安装后,就可将采集的数据发送给logstash。然后交由logstash自己处理日志。

制作日志文件

注意这个文件,使我们创建的日志文件这是nginx的文件

代码语言:javascript复制
mkdir -p /var/log/logapp && vim /var/log/logapp/app.info.log

塞入日志数据

数据点击展开,自己复制

创建FileBeat配置文件

完整配置文件设置:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html

代码语言:javascript复制
mkdir -p /home/docker/elk/filebeat/ && vim /home/docker/elk/filebeat/filebeat.yml

往filebeat.yml填入:

代码语言:javascript复制
filebeat.inputs:
- type: log
  paths:
    - /var/log/logapp/app.info.log
output.logstash:
    hosts: ["192.168.10.100:4567"]

启动FileBeat

代码语言:javascript复制
docker pull store/elastic/filebeat:7.7.1

这里是制定了日志文件所在的位置/var/log/logapp

代码语言:javascript复制
docker run --privileged=true -u root -v /var/log/logapp:/var/log/logapp:rw -v /home/docker/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro -e setup.kibana.host=192.168.10.13:5601 -d --name filebeat docker.elastic.co/beats/filebeat:7.7.1复制

使用ELK

找到索引模式

配置日志索引

填写「索引模式」

点击下一步,配置其他设置

接下来,你就看到了ElasticSearch自动生成索引了

前往Discover查看日志分析

特别说明:安装程序如果遇到问题补充命令

容器启动时可查看容器日志

代码语言:javascript复制
docker logs --since="2016-07-01" --tail=500 容器ID

查看容器内容地址

代码语言:javascript复制
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器ID

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!

0 人点赞