ELK详细安装部署

系统配置:CentOS7.6 4核4G
ELK版本:7.7.1
elastic官网地址:https://www.elastic.co/cn/
elastic产品地址:https://www.elastic.co/cn/elastic-stack
yum源地址:https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum

前言

日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。分析日志可以更清楚的了解服务器的状态和系统安全状况,从而可以维护服务器稳定运行。

ELK简介

ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

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

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

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

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

版本说明:
Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

ELK常见的几种架构:
1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如RabbitMQ) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。

架构图:
在这里插入图片描述

yum安装

ELK安装需要以非root用户安装。

1.配置JDK环境
自行下载jdk-11.0.7_linux-x64_bin.rpm

1.安装jdk
>rpm -ivh jdk-11.0.7_linux-x64_bin.rpm
2.配置环境变量
>vim /etc/profile.d/java.sh
  export JAVA_HOME=/usr/java/jdk-11.0.7
  export PATH=$JAVA_HOME/bin:$PATH
3.执行脚本
>source /etc/profile.d/java.sh

2.配置ELK yum源

>vim /etc/yum.repo.d/ELK.repo
  [ELK]
  name=ELK-Elasticstack
  baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/
  gpgcheck=0
  enabled=1

3.部署elasticsearch

3.1.安装elasticsearch

>yum install -y elasticsearch-7.7.1

3.2.修改配置文件

vi /etc/elasticsearch/elasticsearch.yml

cluster.name: my-es
node.name: node-1
path.data: /data/elk/es/data
path.logs: /data/elk/es/logs
network.host: 127.0.0.1
http.port: 9200

3.3.创建目录

#创建数据库及日志目录
>mkdir -p /data/elk/es/data
>mkdir -p /data/elk/es/logs
#修改目录权限
>chown -R elasticsearch:elasticsearch /data/elk/es

3.4.限制资源使用

>vim /etc/security/limits.conf
  elasticsearch soft memlock unlimited
  elasticsearch hard memlock unlimited
  elasticsearch soft nofile 65536
  elasticsearch hard nofile 65536

3.5.添加防火墙

#对于elasticsearch端口,需要限制IP访问
>firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="指定IP" port protocol="tcp" port="9200" accept"
>firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="指定IP" port protocol="tcp" port="9300" accept"
>firewall-cmd --reload

3.6.启动elasticsearch

#启动
>systemctl restart elasticsearch.service
#查看端口监听
>netstat -anpt
#查看是否已运行,若出现如下数据,则安装成功
>curl http://localhost:9200
  {
    "name" : "node-1",
    "cluster_name" : "my-es",
    "cluster_uuid" : "Q7svyfAVQPmLtXsfHXoFDw",
    "version" : {
    "number" : "7.7.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "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"
}

3.7.elasticsearch部分配置说明

属性名说明
cluster.name配置elasticsearch的集群名称。
node.name节点名,es会默认随机指定一个名字,用户可自行配置。
path.data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号分隔。
path.logs设置日志文件的存储路径,默认是es根目录下的logs文件夹。
path.conf设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch。
path.plugins设置插件的存放路径,默认是es根目录下的plugins文件夹。
bootstrap.memory_lock设置为true可以锁住ES使用的内存,避免内存进行swap。
network.host设置bind_host和publish_host,设置为0.0.0.0允许所有外网访问。
http.port设置对外服务的http端口,默认为9200。
transport.tcp.port集群结点之间通信端口,默认为9300。
discovery.zen.ping.timeout设置ES自动发现节点连接超时的时间,默认为3S。
discovery.zen.minimum_master_nodes主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。
discovery.seed_hosts集群发现,配置该节点会与哪些候选地址进行通信,hostname,ip,ip+port,比如:[“127.0.0.1:9300”]。
cluster.initial_master_nodes当你第一次启动全新的Elasticsearch集群时,会有一个集群引导(cluster bootstrapping)步骤,这个步骤会确定一个在第一次选举中投票被计数的、并且可以成为master节点的集合。在开发模式,如果没有配置 discovery settings,该步骤由节点自身自动执行。因为这种自动引导本质上是不安全的,当您在生产模式下启动一个全新的集群时,你必须显式指定那些可以成为master节点的名称或者IP地址,这些节点应该在第一次选举中计算选票数。

4.部署kibana
Kibana是node.js 编写的,不需要java环境。直接安装即可。

4.1.安装kibana

>yum install -y kibana-7.7.1

4.2.修改配置文件

vi /etc/kibana/kibana.yml

server.port: 5601
server.host: “0.0.0.0”
elasticsearch.hosts: [“http://localhost:9200”]
kibana.index: “.kibana”

4.3.添加防火墙

firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --reload

4.4.启动kibana

>systemctl restart kibana.service

4.5.访问
浏览器上输入:http://ip:5601,出现以下界面,则安装成功。同时由于启动较慢,可多刷新几次。
在这里插入图片描述
5.部署logstash
由于直接使用yum install -y logstash-7.7.1,无法启动,所以这里使用rpm安装方式。

5.1.下载安装包

>wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.7.1/logstash-7.7.1.rpm

5.2.安装logstash

>sudo rpm -ivh logstash-7.7.1.rpm

5.3.修改配置文件

vim /etc/logstash/logstash.yml

http.host: “0.0.0.0”
http.port: 9600-9700

5.4.增加配置

cp /etc/logstash/logstash-sample.conf /etc/logstash/conf.d/logstash.conf

根据实际需求来配置该文件。比如:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => [“ES地址:9200”]
index => “logstash-%{+YYYY.MM.dd}”
}
}

5.5.添加防火墙

firewall-cmd --add-port=5044/tcp --permanent
firewall-cmd --add-port=9600/tcp --permanent
firewall-cmd --reload

5.6.启动logstash

>systemctl restart logstash.service

5.7.查看是否启动成功

>netstat -anpt

6.部署filebeat
在需要收集日志的服务器上安装filebeat。、

6.1.安装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

6.2.修改配置文件

vi /etc/filebeat/filebeat.yml
#配置需要采集的日志

paths:
‘- /usr/local/应用/logs/*.log’

#配置采集日志输出位置

#输出到屏幕
#output.console:
#enable: true

#输出到logstash
output.logstash:
#The Logstash hosts
hosts: [“logstash服务器IP:5044”]

6.3.启动filebeat

>systemctl restart filebeat.service

6.4.查看filebeat是否运行正常

>journalctl -u filebeat.service

6.5.在kibana中创建索引
在这里插入图片描述
在这里插入图片描述
6.6.查看日志
在这里插入图片描述
至此,所有安装完成。

Docker安装

1.部署elasticsearch

1.1.查看是否安装docker

>docker version

若出现类似如下信息,则表示已安装,否则,未安装,需要先安装docker.

Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-161.git64e9980.el7_8.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Tue Apr 28 14:43:01 2020
OS/Arch: linux/amd64

Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-161.git64e9980.el7_8.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Tue Apr 28 14:43:01 2020
OS/Arch: linux/amd64
Experimental: false

安装docker.

>yum install -y docker

1.2.查找elasticsearch镜像

>docker search elasticsearch

在这里插入图片描述
安装指定的elasticsearch版本,以7.7.1为例。

1.3.安装elasticsearch

>docker pull elasticsearch:7.7.1

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

>docker images

在这里插入图片描述
1.4.创建挂载目录

>mkdir -p /data/elk/es/config
>mkdir -p /data/elk/es/data
>mkdir -p /data/elk/es/logs

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

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

1.6.创建挂载用配置

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

1.7.运行elasticsearch
通过镜像,启动一个容器,并将9200和9300端口映射到本机(elasticsearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口)。

>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.8.验证安装是否成功

>curl http://localhost:9200

在这里插入图片描述
1.9.添加防火墙端口

#对于elasticsearch端口,需要限制IP访问
>firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="指定IP" port protocol="tcp" port="9200" accept"
>firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="指定IP" port protocol="tcp" port="9300" accept"
>firewall-cmd --reload

2.部署kibana

1.1.安装kibana

>docker pull kibana:7.7.1

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

>docker images

在这里插入图片描述
1.2.获取elasticsearch容器ip

>docker inspect --format '{{ .NetworkSettings.IPAddress }}' es

在这里插入图片描述
1.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

1.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

此处将kibana的配置文件映射到docker中,但实际测试中发现,映射的配置文件并未生效。

1.5.添加防火墙

firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --reload

1.6.访问
浏览器上输入:http://ip:5601,由于启动较慢,可多刷新几次。发现页面出现该提示:
在这里插入图片描述
这是由于映射的配置文件并没有生效,还是需要在kibana容器中修改配置。

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

>docker exec -it kibana /bin/bash
>vi config/kibana.yml

在这里插入图片描述
重启kibana:

docker restart kibana

1.8.重新访问
浏览器上输入:http://ip:5601,由于启动较慢,可多刷新几次。
在这里插入图片描述
3.部署logstash
3.1.获取logstash镜像

>docker pull logstash:7.7.1

3.2.编辑logstash.yml配置文件

>vi /data/elk/logstash/logstash.yml

path.config: /data/elk/logstash/conf.d/*.conf
path.logs: /var/log/logstash

3.3.编辑logstash.conf文件

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

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

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 xinyar-logstash -v /data/elk/logstash/logstash.yml:/data/docker/logstash/config/logstash.yml -v /data/elk/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.7.1

3.5.修改logstash配置

>docker exec -it logstash /bin/bash
>vi config/logstash.yml

http.host: “0.0.0.0”
xpack.monitoring.elasticsearch.hosts: [ “http://172.17.0.2:9200” ]
path.config: /data/docker/logstash/conf.d/*.conf

3.6.重启logstash

>docker restart logstash

3.7.查看数据
filebeat依然使用上在上一章节中的安装方法,并指定上报内容。
同时在kibana中创建索引。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,所有安装完成。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值