欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-04 10:10:35
...

ELK搭建基础需求

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

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

vm虚拟机及centos7

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

Linux安装
下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/
ELK基础搭建(基于centos7 docker部署)
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

ELK基础搭建(基于centos7 docker部署)
(4)安装特定版本

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

(5)启动Docker

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

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

//命令:
docker -version

ELK基础搭建(基于centos7 docker部署)
注意:所有的容器都需要与本机时间同步(在创建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:版本号

示例如下:
ELK基础搭建(基于centos7 docker部署)

(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 打开
配置为以下内容
ELK基础搭建(基于centos7 docker部署)
(5)测试:在浏览器打开http://192.168.78.199:9200/
ELK基础搭建(基于centos7 docker部署)
安装参考网址:
链接: https://blog.csdn.net/lidew521/article/details/88091539.
链接: https://blog.csdn.net/happyzxs/article/details/89156068.
链接: https://blog.csdn.net/zmx729618/article/details/80363875.

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://192.168.78.199:5601/

ELK基础搭建(基于centos7 docker部署)
采坑参考:
链接: https://blog.csdn.net/qq_31404603/article/details/88949929?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task.

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,请求IP180.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之间的联系等。

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

kibana使用参考网址:https://www.cnblogs.com/cjsblog/p/9476813.html

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

conf文件配置
参考网址:https://blog.csdn.net/yesicatt/article/details/52104787?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

logstash的各个场景应用:
https://www.cnblogs.com/qingqing74647464/p/9378385.html

filter grok过滤日志文件
参考网址:
https://blog.csdn.net/qq_21989939/article/details/79524640

ELK采集postgre SQL里的数据参考网址:https://www.cnblogs.com/fuguang/p/11511834.html
(注意:这里的input设置“org.postgresql.Driver”是需要下载的,在logstash内没有内置,内置的是mysql的驱动。)