0
点赞
收藏
分享

微信扫一扫

Centos7 Docker安装ELK详细步骤

早安地球 2022-04-18 阅读 201
elk

系统配置:CentOS7.6 4核4G

ELK版本:7.7.1

前言

ELK简介

在elasticsearch中,所有节点的数据是均等的。

Logstash : 数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana : 可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Filebeat: 轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

版本说明:

ELK常见的几种架构:

架构图:

在这里插入图片描述

1.部署elasticsearch

1.1.查看是否安装docker

[root@elasticsearch ~]# docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:23:03 2018
 OS/Arch:           linux/amd64
 Experimental:      false
 
Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:25:29 2018
  OS/Arch:          linux/amd64
  Experimental:     false

需要注意的是,如果操作系统版本不是很新不要安装最新版本docker,比如我centos7.2安装docker最新版,后面出现 linux 与 docker 版本的兼容性问题,报错”container init exited prematurely“,卸载docker安装较早版本即可。

注意: 关闭selinux、firewall、iptables,防火墙不关闭需对应放通端口,我直接关闭

1.2.查找安装elasticsearch镜像

docker search elasticsearch
docker pull elasticsearch:7.7.1

等待安装完成,查看elasticsearch镜像是否已加载。

[root@elasticsearch ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
logstash            7.7.1               7f059e3dee67        20 months ago       788MB
kibana              7.7.1               6de54f813b39        20 months ago       1.2GB
elasticsearch       7.7.1               830a894845e3        20 months ago       804MB

1.3.创建挂载目录

mkdir -p /data/elk/es/{config,data,logs}

1.4.赋予权限
docker中elasticsearch的用户UID是1000.

chown -R 1000:1000 /data/elk/es

1.5.创建挂载用配置

1.5.创建挂载用配置

cd /data/elk/es/config
touch elasticsearch.yml
-----------------------配置内容----------------------------------
cluster.name: "my-es"
network.host: 0.0.0.0
http.port: 9200

1.6.运行elasticsearch

通过镜像,启动一个容器,并将9200和9300端口映射到本机(elasticsearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口)。此处建议给容器设置固定ip,我这里没设置。

docker run -it  -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" --restart=always -v /data/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elk/es/data:/usr/share/elasticsearch/data -v /data/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:7.7.1

1.7.验证安装是否成功

[root@elasticsearch home]# curl http://localhost:9200
{
  "name" : "0adf1765ac08",
  "cluster_name" : "my-es",
  "cluster_uuid" : "MpKqrEKySnSdwux0m7AlEA",
  "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"
}

此处我在安装时在宿主机无法访问容器内的es,报错curl: (56) Recv failure: Connection reset by peer,折腾很久解决,问题解决方法见我的另一篇文章:链接。前面的配置已纠正该问题,所以参考本文配置不会出现该问题。

2.部署kibana

2.1.安装kibana

docker pull kibana:7.7.1

docker images查看是否完成

2.2.获取elasticsearch容器ip

[root@elasticsearch home]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' es
172.17.0.2

2.3.配置文件

在服务器上新建配置文件,用于docker文件映射。所使用目录需对应新增。
vi /data/elk/kibana/kibana.yml

#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.17.0.2:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true

2.4.运行kibana

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kibana -p 5601:5601 -v /data/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.1

2.5.访问

浏览器上输入:http://ip:5601,如无法访问进容器检查配置是否生效

2.6.检查kibana容器配置文件

将配置文件中elasticsearch.hosts地址修改为elasticsearch容器地址。

docker exec -it kibana /bin/bash

vi config/kibana.yml,修改后的配置如下:

#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.17.0.2:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: tru

重启kibana:docker restart kibana

2.7.重新访问

浏览器上输入:http://ip:5601,由于启动较慢,可多刷新几次。

在这里插入图片描述

3.部署logstash

3.1.获取logstash镜像

docker pull logstash:7.7.1

3.2.编辑logstash.yml配置文件。所使用目录需对应新增。

vi /data/elk/logstash/logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://172.17.0.2:9200" ]
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme
#path.config: /data/elk/logstash/conf.d/*.conf
path.config: /data/docker/logstash/conf.d/*.conf
path.logs: /var/log/logstash

3.3.编辑logstash.conf文件,此处先配置logstash直接采集本地数据发送至es

vi /data/elk/logstash/conf.d/syslog.conf

input {
  syslog {
    type => "system-syslog"
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["192.168.200.94:9200"]  # 定义es服务器的ip
    index => "system-syslog-%{+YYYY.MM}" # 定义索引
  }
}

编辑本地rsyslog配置增加:

vi /etc/rsyslog.conf #增加一行
*.* @@192.168.200.94:5044

#配置修改后重启服务

systemctl restart rsyslog

3.4.运行logstash

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name logstash -v /data/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /data/elk/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.7.1

3.5.测试es接收logstash数据

[root@elk logstash]# curl http://localhost:9200/_cat/indices?v
health status index                    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .apm-custom-link         WBgbpphkQCS73sfjjIG0-Q   1   0          0            0       208b           208b
green  open   .kibana_task_manager_1   xmBASGi9QheR-r8hG2XLZA   1   0          5            0       28kb           28kb
green  open   .apm-agent-configuration MsvsgveHSCOhBQRCgTnsRg   1   0          0            0       208b           208b
yellow open   system-syslog-2022.02    1Vcjw7Q-TTqVscpknyK7HA   1   1          6            0     20.7kb         20.7kb
green  open   .kibana_1                vJ-B5wakRSmOrwM6ri-xgw   1   0         84            2      115kb          115kb

获取到system-syslog-相关日志,则es已能获取来自logstash的数据,kibana中也同步显示数据。

4.部署filebeat

在需要监测的机器yum安装filebeat

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.1-x86_64.rpm
rpm -ivh filebeat-7.7.1-x86_64.rpm

filebeat配置,此处先配置filebeat直接发送数据到es

#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    #- /var/log/*.log
    - /var/log/messages
    #- c:\programdata\elasticsearch\logs\*
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.200.94:9200"]
#----------------------------- Logstash output --------------------------------
#output.logstash:
  # The Logstash hosts
  #hosts: ["192.168.200.94:5044"]

启动服务

systemctl restart filebeat.service

es接收数据查询

[root@elk conf.d]# curl http://localhost:9200/_cat/indices?v
health status index                            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   filebeat-7.7.1-2022.02.04-000001 vHSJTNWARySiC7IOOSABtw   1   1      11528            0      2.9mb          2.9mb
green  open   .apm-custom-link                 WBgbpphkQCS73sfjjIG0-Q   1   0          0            0       208b           208b
green  open   .kibana_task_manager_1           xmBASGi9QheR-r8hG2XLZA   1   0          5            0     64.1kb         64.1kb
green  open   .apm-agent-configuration         MsvsgveHSCOhBQRCgTnsRg   1   0          0            0       208b           208b
green  open   .kibana_1                        vJ-B5wakRSmOrwM6ri-xgw   1   0        158            3    101.5kb        101.5kb

可查到filebeat-7.7.1-*数据,kibana中也显示对应数据。

5.filebeat采集数据,logstash过滤,在kibana中显示

5.1删除之前的logstash生成的测试数据

curl -XDELETE http://localhost:9200/system-syslog-2022.02

5.2修改filebeat.yml,后重启服务

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["192.168.200.94:9200"]
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.200.94:5044"]

5.3将之前的syslog.conf重命名为syslog.conf.bak,增加logstash配置 ,其中可增加过滤相关配置,此处未配置。

vi /data/elk/logstash/conf.d/logstash.conf

input {
  beats {
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["172.17.0.2:9200"]
    index => "filebeat_g-%{+YYYY.MM.dd}"
  }
}

5.4查看es是否获取数据

[root@elk conf.d]# curl http://localhost:9200/_cat/indices?v
health status index                            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .apm-custom-link                 WBgbpphkQCS73sfjjIG0-Q   1   0          0            0       208b           208b
yellow open   filebeat-2022.02.04              sVdMntvdQb6YIdjpeSFNrg   1   1         43            0    130.9kb        130.9kb
yellow open   filebeat-7.7.1-2022.02.04-000001 vHSJTNWARySiC7IOOSABtw   1   1      11623            0        3mb            3mb
green  open   .kibana_task_manager_1           xmBASGi9QheR-r8hG2XLZA   1   0          5            0     64.1kb         64.1kb
green  open   .apm-agent-configuration         MsvsgveHSCOhBQRCgTnsRg   1   0          0            0       208b           208b
yellow open   filebeat_g-2022.02.04           njA2A64zS16W3YMpPMzHQA   1   1          5            0    103.4kb        103.4kb
green  open   .kibana_1                        vJ-B5wakRSmOrwM6ri-xgw   1   0        163            3     81.5kb         81.5kb

filebeat_g-*数据已经获取,kibana中增加相关索引即可。

5.5kibana增加索引

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

至此安装完成。

后记:本文只是实践并记录了ELK的docker安装方式,参考了下列文档,但这些文档中配置文件较多错误所以自己按调整过的正确配置编辑了本文,仅供参考。

1.ELK 架构之 Logstash 和 Filebeat 安装配置 - 田园里的蟋蟀 - 博客园

2.Linux搭建ELK日志收集系统:FIlebeat+Redis+Logstash+Elasticse

举报

相关推荐

0 条评论