rpm 安装 ELK 日志分析系统

环境准备

系统: Centos 7.4
Java: 1.8.0_181
ELkB: elasticsearch 6.4.1
kibanna 6.4.1
logstash 6.4.1
filbeat(log收集) 6.4.1

1. java 环境部署

ELK要求 java 版本需为 1.8.0 以上,如系统无 java 环境 会出现无法安装的现象
下载安装包 jdk-8u181-linux-x64.tar.gz

 [root@localhost ELKB]# mkdir /usr/local/java
 [root@localhost ELKB]# tar zxvf  jdk-8u181-linux-x64.tar.gz -C /usr/local/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

2. elasticsearch-6.4.1 安装步骤

 [root@localhost ELKB]# mkdir /data/ELKB
 [root@localhost ELKB]# cd /data/ELKB

下载 rpm 包 并安装

[root@localhost ELKB]# curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.rpm
[root@localhost ELKB]# rpm -ivh elasticsearch-6.4.1.rpm

修改 elasticsearch.yml 配置文件

[root@localhost ELKB]# 
[root@localhost ELKB]# grep -vE '^#|^$' /etc/elasticsearch/elasticsearch.yml 
 cluster.name: My-ELK
 path.data: /var/lib/elasticsearch
 path.logs: /var/log/elasticsearch
 network.host: 0.0.0.0
 http.port: 9200
[root@localhost ELKB]# 

修改 /etc/sysconfig/elasticsearch

默认为空时无法找到 java 环境,导致启动不了

# Elasticsearch Java path
JAVA_HOME=/usr/local/java/jdk1.8.0_181

启动试试,我的是 Centos 7 的系统

[root@localhost ELKB]# systemctl start   elasticsearch
[root@localhost ELKB]# systemctl status  elasticsearch
[root@localhost ELKB]# systemctl enable  elasticsearch					

检查是否正常开启

netstat -ntpl 									// 看是否开启 9000 和 9200
curl http://localhost:9200

验证返回结果是否正常,正常如下:

[root@localhost ELKB]# curl http://localhost:9200
{
"name" : "I5d2MPB",
"cluster_name" : "My-ELK",
"cluster_uuid" : "CMjBXAaDRvqu9M_TZgoF8w",
"version" : {
	"number" : "6.4.1",
	"build_flavor" : "default",
	"build_type" : "rpm",
	"build_hash" : "e36acdb",
	"build_date" : "2018-09-13T22:18:07.696808Z",
	"build_snapshot" : false,
	"lucene_version" : "7.4.0",
	"minimum_wire_compatibility_version" : "5.6.0",
	"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
[root@localhost ELKB]# 

3. 安装 kibanna 6.4.1

由于 ELKB 每次更新所有功能都会一起更,故 ELKB 各版本都须一致

[root@localhost ELKB]# curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.1-x86_64.rpm
[root@localhost ELKB]# rpm -ivh  kibana-6.4.1-x86_64.rpm

修改 kibana.yml 配置文件

[root@localhost ELKB]# grep -vE '^#|^$' /etc/kibana/kibana.yml 
 server.host: "0.0.0.0"
[root@localhost ELKB]# systemctl start   kibana
[root@localhost ELKB]# systemctl status  kibana

浏览器 验证

http://IP:5601
http://192.168.86.190:5601/app/kibana#/home?_g=()

4. 安装 Logstash 6.4.1

curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.1.rpm
rpm -ivh logstash-6.4.1.rpm

https://www.cnblogs.com/yueshang/p/8568364.html 启动不了借鉴 还是未解决

加密设置(可选)

用户可以使用TLS双向认证加密 Filebeat 和 Logstash 的连接,保证Filebeat只向可信的Logstash发送加密的数据(如果你的logstash和filebeat是内网通信,而且你认可当前内网的安全度,这一步可以省略)。
同样的,Logstash也只接收可信的 Filebeat 发送的数据。这个功能默认是关闭的,要开启的话需要先#vim /etc/pki/tls/openssl.cnf

* 找到[ v3_ca ]的字段,在底下添加“subjectAltName = IP:logstash的内网IP”字段

启动报错

logstash.service holdoff time over, scheduling restart.
start request repeated too quickly for logstash.service

解决方法:

后来几经验证应该和java环境有关

[root@localhost ELKB]# ln -s /usr/local/java/jdk1.8.0_181/bin/java /usr/bin/java			    //需要做个软链接 不然起不来

5. 安装 Filebeat 6.4.1

[root@localhost ELKB]# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.1-x86_64.rpm 

[root@localhost ELKB]# rpm -ivh filebeat-6.4.1-x86_64.rpm 

Filebeat 配置

[root@localhost conf.d]# grep -vE '^$|#' /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/logstash/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 3
setup.kibana:
output.redis:
  hosts: ["127.0.0.1:6379"]
  key: "logstash-log"				# 该 key 与logstash.conf 配置一致 
  db: 0
  timeout: 5
[root@localhost conf.d]# 

########## 简单验证 #########

6. 验证 Logstash 是否可以调用到 Filebeat 收集的数据

[root@localhost conf.d]# /usr/share/logstash/bin/logstash -f  /etc/logstash/conf.d/logstash.conf

该命令为 logstash 运行命令,不放在后台运行, 若执行以上命令无报错且正常有数据显示 以及kibana 界面 的 Management index 可看到采集的日志数据 即说明成功了

logstash集成redis,先看架构图

ELKB_Redis 架构图中,redis相当于变成了logstash的输入端,而不是appserver,为什么要这样做的,
是为了防止一瞬间突然有大量日志到logstash端防止雪崩,相当于给APPserver和logstash间加了一个管道。

参考: http://blog.51cto.com/chenx1242/2048014?utm_source=oschina-app

############### redis list 查看 #################

127.0.0.1:6379> keys *

  1. "logstash-log"
    127.0.0.1:6379> type logstash-log
    list
    127.0.0.1:6379> lRange logstash-log 0 10

########## 未完待续 #########(有点乱)

comments powered by Disqus