ELK基础搭建(基于centos7 docker部署)

  • ELK搭建基础需求
  • vm虚拟机及centos7
  • Docker安装
  • ELK核心组件安装
  • elasticsearch安装
  • kibana安装
  • logstash安装
  • 总结


ELK搭建基础需求

我的本机环境是win10,通过安装vm虚拟机安装的centos7系统

· win10系统
· vm虚拟机(centos7 最小版本安装即可)

vm虚拟机及centos7

VMware安装

docker安装的es使用网址登录不上 docker elk7_elasticsearch

Linux安装

下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/

docker安装的es使用网址登录不上 docker elk7_elasticsearch_02


Mini为精简版,最小安装

Docker安装

从网上产看了很多帖子,最后自己总结了一下,可以通过三种方式安装:

1、在本机下载docker安装包,利用vm工具将安装包复制粘贴到虚拟机内进行解压安装。
2、利用wget指令下载docker压缩包,解压安装。
3、3、通过yum指令进行安装:
(1)如果安装过旧版本的Docker,需要卸载它以及它的依赖项

$ sudo yum remove docker 
 docker-client 
 docker-client-latest 
 docker-common 
 docker-latest 
 docker-latest-logrotate 
 docker-logrotate 
 docker-engine


(2)使用docker仓库进行安装
(1) 安装所需的软件包

// 指令
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

(2)设置仓库(设置 Docker 仓库之后,可以从仓库安装和更新 Docker)

//指令:
$ sudo yum-config-manager \
       --add-repo \
       https://download.docker.com/linux/centos/docker-ce.repo

(3)查看存储库中所有的安装版本

//指令
$ yum list docker-ce --showduplicates | sort -r

docker安装的es使用网址登录不上 docker elk7_docker安装的es使用网址登录不上_03


(4)安装特定版本

//命令:
yum install docker-ce-版本号

(5)启动Docker

//命令:
systemctl start docker
//设置开机启动:
systemctl enable docker

(6)验证安装是否成功
查看Docker版本

//命令:
docker -version

docker安装的es使用网址登录不上 docker elk7_elasticsearch_04


注意:所有的容器都需要与本机时间同步(在创建docker容器是时间未设置默认为世界当前时间与本机当前时间相差八小时)

第一种:进入容器
输入指令:export TZ=Asia/Shanghai #修改时区
(此方法仅当前生效,不建议使用)

第二种:创建容器的时候指定启动参数,自动挂载localtime文件到容器内
指令:-v /etc/localtime:/etc/localtime:ro

第三种:复制宿主机localtime到容器中
指令:docker cp /etc/localtime <container_id>:/etc/

ELK核心组件安装

elasticsearch安装

(1)登录 docker hub查看版本以及拉取镜像指令
拉取镜像

//指令:
docker pull elasticsearch:版本号

示例如下:

docker安装的es使用网址登录不上 docker elk7_elasticsearch_05

(2)启动容器

//指令:
docker run --name xxx -p 9200:9200 -d elasticsearch:版本

(3)查看容器是否启动

//指令:
docker ps

(4)配置elasticsearch.yml文件
进入容器内

//指令:
docker exec -it 容器id /bin/bash

elasticsearch.yml文件在config文件夹下

用指令:$ vi elasticsearch.yml 打开

配置为以下内容

docker安装的es使用网址登录不上 docker elk7_elasticsearch_06


(5)测试:在浏览器打开http://虚拟机的ip:9200/

docker安装的es使用网址登录不上 docker elk7_docker_07


kibana安装

(1)拉取镜像

//指令:
docker pull kibana:版本号

(2)运行容器

//指令:
docker run --name xxx -p 5601:5601 --link elasticsearch的名称:elasticsearch名称 -d kibana:版本号

(3)修改yml文件
进入容器内

//指令:
docker exec -it kibana的名称 /bin/bash

同elasticsearch一样进入config文件夹
利用指令 vi kibana.yml 打开配置文件
修改一下配置:

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://此处为本机ip:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

测试 打开网页http://虚拟机的ip:5601/

docker安装的es使用网址登录不上 docker elk7_Docker_08


logstash安装

(1)拉取镜像

//指令:
docker pull logstash:版本号

(2)运行容器

//指令:
docker run --name 名称 -p 5044:5044 -u root -itd logstash:版本号

(3)进入容器内配置相关文件
在这里说一下,版本不一样它的配置文件不一样,早版本要配置logstash.yml文件即可(容器内路径:/usr/share/logstash/config/)我用的版本为7.5.2,它的配置文件是logstash.conf(路径:/usr/share/logstash/pipeline)

logstash的配置主要由三部分组成:input、filter、output。

以下为基础配置

//原始日志数据:
2018-07-24 17:08:53.125 [http-nio-80-exec-12] INFO  [com.hzt.aop.RequestAspect:127] - 请求路径:/farm_server/app/getBaseWeather,请求IP:180.110.251.197,请求方式:GET,执行方法:com.hzt.controller.AppController.getBaseWeather,执行时间:2,请求参数:[南京, , , 84d696651d39070b0cf8209ac2f515f8],返回数据:{"errCode":"","resCode":0,"resData":{"badFor":"种植","lowTemp":"28","temperature":"28","weather":"阴","humidity":"74%","accuRain":"638.6","goodFor":"施肥、打药","highTemp":"35","accuTemp":"2155.8"}}
//设置
input {
    stdin{}
}
filter {
    grok{
        match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} \[%{NOTSPACE:host}\] %{NOTSPACE:level} %{NOTSPACE:2}
%{NOTSPACE:3} %{GREEDYDATA:loginfo}" }
        }
    kv {
        source => "loginfo"
        field_split => ","
        value_split => ":"
        }
    json {
        source => "返回数据"
        }
    mutate {
        remove_field => "message"
        remove_field => "loginfo"
        remove_field => "返回数据"
    }
}
output{
    stdout{
    codec => rubydebug
    }
}

总结

这个只是ELK的最基础的搭建,之里面还有很多没有详细说的地方,如kibana的使用、logstash的应用环境以及在不同需求中的配置文件的设置(这个是个很大的坑)、elk之间的联系等。

列一下我学习过程中的参考网址:

yml文件配置详解参考网址:https://abcops.cn/archives/916

(注意:这里的input设置“org.postgresql.Driver”是需要下载的,在logstash内没有内置,内置的是mysql的驱动。)