ELK6.4.3+redis5.0.6部署

  • A+
所属分类:系统

一、ELK简介

ELK6.4.3+redis5.0.6部署

ELK是Elasticsearch+Logstash+Kibana的简称。

ELK是Elasticsearch+Logstash+Kibana的简称。

Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。

Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。

Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。

二、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

ELK6.4.3+redis5.0.6部署

三、ELK部署架构

我选择在L-E之间添加一层redis辅助,这样能够减少日志在服务端的积压,把压力转移到ELK系统服务器上。这种方式添加redis之后,由于redis是内存系统所以响应速度很快,而且可以在redis后添加多个消费系统(Logstash),来扩展消费能力,增强处理速度。

ELK6.4.3+redis5.0.6部署

1、准备工作

1.1、主机环境

主机名IP操作系统角色版本
node1192.168.0.49CentOS7Elasticsearch-主节点6.4.3
node2192.168.0.50CentOS7Elasticsearch-从节点6.4.3
node3192.168.0.51CentOS7Redis+Logstash+Kibana5.0.6+6.4.3

版本说明: ELK 6.4.3 Redis 5.0 JDK 1.8

2、部署准备条件:

2.1、服务器&软件环境说明

安装jdk1.8(node1、node2、node3)

建议:先提前下载jdk软件(rpm或tar.gz格式都可以),再通过scp上传到CentOS系统中,这样会节省很多时间。

 [root@localhost ELKB]# mkdir /usr/java
 
[root@localhost ELKB]# tar zxvf  jdk-8u181-linux-x64.tar.gz -C /usr/java 

设置环境变量

[root@localhost ELKB]# vim /etc/profile

在文件最后新增以下内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@localhost ELKB]# source /etc/profile

验证 java 1.8.0.181 是否已安装成功

[root@localhost ELKB]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

四、ELK环境准备

1、修改文件限制(node1、node2、node3)

[root@localhost ELKB]# vi /etc/security/limits.conf

增加以下内容

* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096

2、调整swap虚拟内存&最大并发连接(node1、node2、node3)

[root@localhost ELKB]# vi /etc/sysctl.conf

增加的内容

vm.max_map_count=655360
fs.file-max=655360

3、重启系统生效(node1、node2、node3)

[root@localhost ELKB]# reboot

4、创建ELK相关目录并赋权(node1、node2)

创建ELK APP目录

mkdir -p /usr/elk

创建ELK 数据目录

mkdir -p /elk/es/data

创建ELK 日志目录

mkdir -p /elk/es/logs

由于Elasticsearch、Logstash、Kibana均不能以root账号运行,作文件夹所有者进行更改

5、更改目录所有者

chown -R elasticsearch:elasticsearch /usr/elk
chown -R elasticsearch:elasticsearch /elk

6、下载elasticsearch的 rpm 包(node1、node2)
下载地址:https://www.elastic.co/cn/downloads/ ,通过scp上传到node1、node2节点上

五、部署elasticsearch(node1、node2)

1、安装elasticsearch

[root@liu-elk1 ~]# rpm -ivh elasticsearch-6.4.1.rpm

2、elasticsearch节点配置(node1、node2)

先对原文件进行备份:

[root@liu-elk1 elasticsearch]#  cp  /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_bak

进入elasticsearch配置目录

[root@liu-elk1 elasticsearch]cd /etc/elasticsearch/

清空并编辑配置文件:

[root@liu-elk1 elasticsearch]# echo "" > elasticsearch.yml & vim /etc/elasticsearch/elasticsearch.yml

node1主节点:

cluster.name: LIU_ELK
node.name: node-1
node.master: true
node.data: true
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.0.49
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.0.49:9300", "h192.168.0.50:9300"]
discovery.zen.minimum_master_nodes: 1

node2从节点:

cluster.name: LIU_ELK
node.name: node-2
node.master: false
node.data: true
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.0.50
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.0.49:9300", "h192.168.0.50:9300"]
discovery.zen.minimum_master_nodes: 1

3、配置项说明

说明
cluster.name集群名
node.name节点名
path.data数据保存目录
path.logs日志保存目录
network.host节点host/ip
http.portHTTP访问端口
transport.tcp.portTCP传输端口
node.master是否允许作为主节点
node.data是否保存数据
discovery.zen.ping.unicast.hosts集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测
discovery.zen.minimum_master_nodes主节点个数

4、防火墙配置:

若对Linux不熟悉的伙伴可以先把防火墙关闭了

[root@liu-elk1 elasticsearch]# systemctl stop firewall

确认防火墙是否关闭

[root@liu-elk1 elasticsearch]# systemctl status firewall

若感觉关闭防火墙太绝对了,可以开放9200,9300端口:

firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent

重新加载防火墙规则

firewall-cmd --reload

6、启动服务

[root@liu-elk1 elasticsearch]# systemctl start elasticsearch 

7、检查服务

[root@liu-elk1 elasticsearch]# systemctl status elasticsearch 

[root@liu-elk1 elasticsearch]# netstat -nltp | grep 9200 tcp6       0      0 :::9200                 :::*                    LISTEN      12132/java 

也可以通过curl查看健康状态

curl http://192.168.0.49:9200/_cluster/health

如果返回status=green表示正常

状态正常可以通过浏览器访问

ELK6.4.3+redis5.0.6部署

开启自动启动

[root@liu-elk1 elasticsearch]# systemctl enable elasticsearch

8、安装图形化界面(可选配置)

[root@liu-elk2 elasticsearch]# wget http://nodejs.org/dist/v0.10.30/node-v0.10.30-linux-x64.tar.gz
[root@liu-elk1 ~]# tar --strip-components 1 -xzvf node-v0.10.30-linux-x64.tar.gz -C /usr/local 

--strip-components 代表去除目录结构化

检查服务

[root@liu-elk1 ~]# node --version
v0.10.30

10、图形化插件加载

[root@liu-elk1 elasticsearch]# yum install -y git
[root@liu-elk1 ~]# git clone git://github.com/mobz/elasticsearch-head.git 
[root@liu-elk1 ~]# cd elasticsearch-head/ 
[root@liu-elk1 elasticsearch-head]# npm install 
[root@liu-elk1 elasticsearch-head]# npm run start 
> elasticsearch-head@0.0.0 start /root/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100 

11、若防火墙未关闭需要放行9100端口:

firewall-cmd --add-port=9100/tcp --permanent

重新加载防火墙规则

firewall-cmd --reload

12、浏览器通过访问 http://192.168.0.49:9100

ELK6.4.3+redis5.0.6部署

六、部署redis 5(node3)

1、安装依赖

[root@liu-elk3 ~]# yum install gcc gcc-c++ -y

2、解压到指定文件夹中
如果速度很慢,建议离线下载,再通过scp上传。

[root@liu-elk3 ~]#  wget http://download.redis.io/releases/redis-5.0.6.tar.gz
[root@liu-elk3 ~]# make -p /usr/redis
[root@liu-elk3 ~]# tar -zxvf redis-5.0.6.tar.gz -C /usr/redis 

3、编译

[root@liu-elk3 ~]# cd /usr/redis/redis-5.0.6
[root@liu-elk3 ~]# make

4、Redis启动与测试

4.1、启动redis-server
进入src目录

cd /usr/redis/redis-5.0.6/src

4.2、启动服务端

./redis-server/

4.3、启动redis客户端测试
进入src目录

cd /usr/redis/redis-5.0.6/src

启动客户端测试

./redis-cli
设置:set key1 liu
获取:get key1
liu

5、Redis配置
5.1、修改配置:绑定本机IP&关闭保护模式
修改配置文件

vi /usr/redis/redis-5.0.6/redis.conf

更换绑定
将bind 127.0.0.1 更换为本机IP,例如:192.168.0.51

bind 192.168.0.51

关闭保护模式

protected-mode no

5.2、若防火墙未关闭需要6379开放端口
增加redis端口:6379

firewall-cmd --add-port=6379/tcp --permanent

重新加载防火墙设置

firewall-cmd --reload

6、Redis指定配置文件启动

指定配置文件启动

cd /usr/redis/redis-5.0.6
./src/redis-server redis.conf

连接指定Redis Server

cd /usr/redis/redis-5.0.6
./src/redis-cli -h 192.168.0.51

7、配置Redis开机启动
将Redis配置成为系统服务,以支持开机启动

7.1、创建Redis服务文件

vi /usr/lib/systemd/system/redis.service

文件内容

[Unit]
Description=Redis Server
After=network.target

[Service]
ExecStart=/usr/redis/redis-5.0.6/src/redis-server /usr/redis/redis-5.0.6/redis.conf --daemonize no
ExecStop=/usr/redis/redis-5.0.6/src/redis-cli -p 6379 shutdown
Restart=always

[Install]
WantedBy=multi-user.target

7.2、设置Redis服务开机启动&开启服务

systemctl enable redis
systemctl start redis

七、部署logstash(node3)

1、准备工作:
useradd elasticsearch

2、数据&日志目录

创建Logstash主目录
mkdir -p /elk/logstash
创建Logstash数据目录
mkdir -p /elk/logstash/data
创建Logstash日志目录
mkdir -p /elk/logstash/logs

更改文件所有者

chown -R elasticsearch:elasticsearch /elk/logstash

3、下载logstash的 rpm 包(node3)
下载地址:https://www.elastic.co/cn/downloads/ ,通过scp上传到node3节点上

4、安装logstash

[root@liu-elk3 ~]# rpm -ivh logstash-6.4.3.rpm 

5、编辑logstash的配置文件:

先对原文件进行备份:

[root@liu-elk3 ~]#  cp  /etc/logstash/logstash.yml /etc/logstash/logstash.yml_bak

进入logstash配置目录

[root@liu-elk3 ~]cd /etc/logstash/

清空并编辑配置文件:

[root@liu-elk3 logstash]# echo "" > logstash.yml & vim /etc/logstash/logstash.yml

path.data: /elk/logstash/data
path.logs: /elk/logstash/logs

6、设置 logstash服务开机启动&开启服务

[root@liu-elk3 ~]# systemctl start logstash 
[root@liu-elk3 ~]# systemctl enable logstash

检查 logstash服务状态

[root@liu-elk3 ~]# systemctl status logstash 
 

7、结果测试:

启动一个logstash,-e:在命令行执行;input输入,stdin标准输入,是一个插件;output输出,stdout:标准输出

使用rubydebug显示详细输出,codec为一种编解码器

7.1、脚本测试:

[root@liu-elk3 logstash]# /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug} }'

输入test

ELK6.4.3+redis5.0.6部署

输出到elasticsearch上面

[root@liu-elk3 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["192.168.0.49:9200"] } stdout { codec => rubydebug} }'  

分别输入test liu

ELK6.4.3+redis5.0.6部署

在elasticsearch插件运行下,浏览器查看:

ELK6.4.3+redis5.0.6部署

8、配置Redis&Elasticsearch

vi  input-output.conf

input {
  redis {
    data_type => "list"
    key => "logstash"
    host => "192.168.0.51"
    port => 6379
    threads => 5
    codec => "json"
  }
}
filter {
}
output {
  elasticsearch {
    hosts => ["192.168.0.49:9200","192.168.0.50:9200"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    document_type => "%{type}"
  }
  stdout {
  }
}

该配置就是从redis中读取数据,然后写入指定的elasticsearch

9、redis核心配置项说明:

配置项说明
data_type => “list”数据类型为list
key => “logstash”缓存key为:logstash
codec => “json”数据格式为:json

10、重启logstash服务

[root@liu-elk3 ~]# systemctl restart logstash 

检查logstash服务

[root@liu-elk3 ~]# systemctl status logstash 

八、kibana 部署

1、安装前准备
下载Kibana的 rpm 包(node3)
下载地址:https://www.elastic.co/cn/downloads/ ,通过scp上传到node3节点上

2、安装Kibana

[root@liu-elk3 ~]# rpm -ivh kibana-6.4.3-x86_64.rpm  

3、编辑kibana的配置文件:
先对原文件进行备份:

[root@liu-elk3 ~]#  cp  /etc/kibana/kibana.yml /etc/kibana/kibana.yml_bak

进入Kibana配置目录

[root@liu-elk3 ~]cd /etc/kibana/

清空并编辑配置文件:

[root@liu-elk3 kibana]# echo "" > kibana.yml & vim /etc/kibana/kibana.yml

server.port: 5601
server.host: "192.168.0.51"
elasticsearch.url: "http://192.168.0.49:9200"

4、若防火墙未关闭需要5601开放端口
增加kibana端口:5601

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

重新加载防火墙设置

firewall-cmd --reload

5、设置 kibana服务开机启动&开启服务

[root@liu-elk3 ~]# systemctl start kibana 
[root@liu-elk3 ~]# systemctl enable kibana

检查 kibana服务状态

[root@liu-elk3 ~]# systemctl status kibana 

6、浏览器访问: 192.168.0.51:5601

ELK6.4.3+redis5.0.6部署

如果警告提示:No default index pattern. You must select or create one to continue.
错误提示:Unable to fetch mapping. do you have indices matching the pattern?
不用担心,这是因为还没有写入日志。

九、日志测试

1、日志写入
日历写入的话,写入到logstash监听的redis即可。
redis命令方式
启动redis客户端,执行以下命令

lpush logstash '{"host":"192.168.0.51","type":"logtest","message":"hello"}'

2、Kibana使用
浏览器访问:192.168.1.21:5601
直接点击create即可

ELK6.4.3+redis5.0.6部署

3、执行input-output.conf文件

[root@liu-elk3 logstash]# /usr/share/logstash/bin/logstash -f input-output.conf 

浏览器访问:192.168.1.21:5601/app/kibana#/discover 即可查看日志

ELK6.4.3+redis5.0.6部署

  • 我的微信
  • 欢迎大家,与我交流,非诚勿扰谢谢
  • weinxin
  • 奕知伴解 微信公众号
  • 扫一扫关注,从此不迷路。
  • weinxin
刘銮奕

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: