ELK基础搭建(基于centos7 docker部署)
ELK基础搭建(基于centos7 docker部署)
ELK搭建基础需求
我的本机环境是win10,通过安装vm虚拟机安装的centos7系统
· win10系统
· vm虚拟机(centos7 最小版本安装即可)
vm虚拟机及centos7
VMware安装
Linux安装
下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/
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
(4)安装特定版本
//命令:
yum install docker-ce-版本号
(5)启动Docker
//命令:
systemctl start docker
//设置开机启动:
systemctl enable docker
(6)验证安装是否成功
查看Docker版本
//命令:
docker -version
注意:所有的容器都需要与本机时间同步(在创建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:版本号
示例如下:
(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 打开
配置为以下内容
(5)测试:在浏览器打开http://192.168.78.199:9200/
安装参考网址:
链接: 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/
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之间的联系等。
列一下我学习过程中的参考网址:
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的驱动。)