21

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)-lokott

 4 years ago
source link: https://blog.51cto.com/14557673/2482275
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

实践出真知——部署ELK日志分析系统(提供包)

​ 前一篇文章介绍了有关ELK日志分析系统的理论原理,本文将结合原理通过案例环境部署及配置ELK日志分析系统。

使用集群方式,2个Elasticsearch节点,其中一台安装Kibana即可,另外安装Apache服务作为被监控的服务器,安装Logstash。

相关规划如下表所示:

主机 操作系统 主机名 IP地址 主要安装软件
服务器 Centos7.4 node1 20.0.0.140 Elasticsearch Kibana
服务器 Centos7.4 node2 20.0.0.139 Elasticsearch
服务器 Centos7.4 Apache 20.0.0.141 Logstash Apache

部署流程综述

1、检查服务器环境(推荐先进行时间同步),找到所需软件包
2、在两个elasticsearch节点上部署elasticsearch环境、elasticsearch软件、
3、检查服务是否开启并在浏览器中验证、检查健康状态与查看状态信息
4、在两个elasticsearch节点上安装elasticsearch-head插件(方便查看集群信息)
5、通过浏览器验证、检查健康状态,模拟创建索引来验证信息
6、安装Apache服务在20.0.0.141服务器上,并且安装Logstash软件
7、在Apache服务器上进行对接测试(使用Logstash将信息写入elasticsearch中)并且进行验证
8、测试无误后进行对接配置(20.0.0.141上)、在浏览器上验证
9、回到node1服务器上安装可视化软件Kibana,启动服务并进行验证
10、进行对Apache主机的日志文件的对接(access_log以及error_log)配置与验证

软件包资源链接:https://pan.baidu.com/s/1NXl3l-fs15tLZcweHwHTCA
提取码:hmw7

部署过程演示

1、【配置elasticsearch环境】

###登录20.0.0.140  更改主机名 配置域名解析 查看Java环境 ###

[root@node1 ~]# hostnamectl set-hostname node1
[root@node1 ~]# su
[root@node1 ~]# vi /etc/hosts
20.0.0.140   node1
20.0.0.139   node2

[root@node1 ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
#关闭防火墙和核心防护
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
###登录20.0.0.139  更改主机名 配置域名解析 查看Java环境 ###

[root@node2 ~]# hostnamectl set-hostname node2
[root@node2 ~]# su
[root@node2 ~]# vi /etc/hosts
20.0.0.140   node1
20.0.0.139   node2

[root@node2 ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
#关闭防火墙和核心防护
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0

2、【部署elasticsearch软件】

(注意:该流程在node上也需要配置,不同点在于配置文件中的node1需要改为node2 )

####登录20.0.0.140####
#1、安装elasticsearch—rpm包
上传elasticsearch-5.5.0.rpm到/opt目录下
[root@node1 ~]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm 

#2、加载系统服务
[root@node1 opt]# systemctl daemon-reload    
[root@node1 opt]# systemctl enable elasticsearch.service

#3、更改elasticsearch主配置文件
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak  #尽量备份,以免误改不可挽回
[root@node1 opt]#  vi /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster                   ####集群名字
node.name: node1                                  ####节点名字
path.data: /data/elk_data                        ####数据存放路径
path.logs: /var/log/elasticsearch/           ####数据存放路径
bootstrap.memory_lock: false                 ####不在启动的时候锁定内存
network.host: 0.0.0.0                               ####提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port: 9200                                        ####侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]           ####集群发现通过单播实现

#使用grep命令过滤文件,方便查看配置对比有没有错误
[root@node1 opt]#  grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

#4、创建数据存放路径并授权
[root@node1 opt]# mkdir -p /data/elk_data
[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/

#5、启动elasticsearch是否成功开启
[root@node1 elasticsearch]# systemctl start elasticsearch.service
[root@node1 elasticsearch]# netstat -antp |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      64463/java 

3、【验证】

浏览器打开 http://20.0.0.140:9200http://20.0.0.139:9200

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

4、【集群检查健康和状态】

1、打开 http://20.0.0.140:9200/_cluster/health?pretty 检查群集健康情况(注意URL的下划线哈!)

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

2、打开 http://20.0.0.140:9200/_cluster/state?pretty ###检查群集健康情况

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

5、【安装elasticsearch-head插件】(两个node上相同配置)

####登录20.0.0.140  node1主机####
#上传node-v8.2.1.tar.gz到/opt
###编译安装node组件依赖包##耗时比较长
[root@localhost opt]# cd /opt
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure 
[root@node1 node-v8.2.1]# make
[root@node1 node-v8.2.1]# make install

####安装phantomjs####
#上传软件包到/usr/local/src/
[root@localhost node-v8.2.1]# cd /usr/local/src/
[root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin
[root@localhost bin]# cp phantomjs /usr/local/bin

###安装elasticsearch-head###
[root@localhost bin]# cd /usr/local/src/
[root@localhost src]# tar xzvf elasticsearch-head.tar.gz
[root@localhost src]# cd elasticsearch-head/
[root@localhost elasticsearch-head]# npm install

#####修改主配置文件###
[root@localhost ~]# cd ~
[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml   ####下面配置文件,插到末尾##
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@localhost ~]# systemctl restart elasticsearch

####启动elasticsearch-head  启动服务器####
[root@localhost ~]# cd /usr/local/src/elasticsearch-head/
[root@localhost elasticsearch-head]# npm run start &      ####切换到后台运行
[1] 114729
[root@localhost elasticsearch-head]# 
> [email protected] start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

此时另外开启一个terminal,查看端口状态

[root@localhost elasticsearch-head]# netstat -lnupt |grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      114739/grunt        
[root@localhost elasticsearch-head]# netstat -lnupt |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      114626/java   

6、【验证】

打开浏览器输入http://20.0.0.140:9100/ 可以看见群集很健康是绿色

在Elasticsearch 后面的栏目中输入http://20.0.0.140:9200

然后点连接 会发现:集群健康值: green (0 of 0)
●node1信息动作
★node2信息动作

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

node2也是如此,如下图所示:

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

此时,登录20.0.0.140 node1主机 创建索引为index-demo,类型为test

[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
{
  "_index" : "index-demo",
  "_type" : "test",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "created" : true
}

随之打开浏览器输入http://20.0.0.140:9100/ 查看索引信息

node1信息动作 01234
node2信息动作 01234

●上面图可以看见索引默认被分片5个,并且有一个副本

点击数据浏览--会发现在node1上创建的索引为index-demo,类型为test, 相关的信息,如下图:

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

7、【安装logstash并做一些日志搜集输出到elasticsearch中】

#1、更改主机名关闭防火墙和核心防护
hostnamectl set-hostname apache
systemctl stop firewalld
setenforce 0
#2、安装Apahce服务(httpd)
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
#3、安装Java环境
[root@apache ~]# java -version        ###如果没有装 安装yum -y install java
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

#4、安装logstash
上传logstash-5.5.1.rpm到/opt目录下
[root@apache ~]# cd /opt
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm      ##安装logstash                         
[root@apache opt]# systemctl start logstash.service         ##启动logstash
[root@apache opt]# systemctl enable logstash.service         ##设置为开机自启
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/          ##建立logstash软连接

8、【对接测试与验证】

####使用logstash将信息写入elasticsearch中#### 输入 输出 对接
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.140:9200"] } }'
。。。。。。。。省略。。。。。。。
The stdin plugin is now waiting for input:
10:40:06.558 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}##以下是需要输入的内容
www.baidu.com                    ###输入内容
www.sina.com.cn                   ###输入内容
www.google.com.cn                ###输入内容

打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###
多出 logstash-2020.03.25

点击数浏览查看响应的内容,如下图

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

9、【登录20.0.0.141 Apache主机 做对接配置】

Logstash配置文件主要由三部分组成:input、output、filter(根据需要配置)

[root@apache opt]# chmod o+r /var/log/messages
[root@apache opt]# ll /var/log/messages
-rw----r--. 1 root root 572555 4月  16 23:50 /var/log/messages

[root@apache opt]# vi /etc/logstash/conf.d/system.conf 
input {
       file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
      }
output {
        elasticsearch {
          hosts => ["20.0.0.140:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }

[root@apache opt]# systemctl restart logstash.service ##一定要重启服务哈!!!!

打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###

多出 system-2020.03.25

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

10、【回到node1服务器上安装可视化软件Kibana,启动服务并进行验证】

[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vi kibana.yml
server.port: 5601                #### kibana打开的端口
server.host: "0.0.0.0"           ####kibana侦听的地址
elasticsearch.url: "http://20.0.0.140:9200"             ###和elasticsearch建立联系
kibana.index: ".kibana"              ####在elasticsearch中添加.kibana索引
[root@node1 kibana]# systemctl start kibana.service    ###启动kibana服务
[root@node1 kibana]# systemctl enable kibana.service   ###开机启动kibana服务

使用浏览器输入20.0.0.140:5601,首次登录创建一个索引 名字:system- ##这是对接系统日志文件
1、Index name or pattern ###下面输入system-
,然后点最下面的出面的create 按钮创建

2、最左上角的Discover按钮 会发现system-*信息

3、点下面的host旁边的add 会发现右面的图只有 Time 和host 选项了 这个比较友好

如下图所示:

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

11、【进行对Apache主机的日志文件的对接(access_log以及error_log)配置与验证】

[root@apache opt]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vi apache_log.conf
input {
       file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
        }
       file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
        }

      }
output {
        if [type] == "access" {
        elasticsearch {
          hosts => ["20.0.0.140:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["20.0.0.140:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
....省略内容

打开浏览器访问http://20.0.0.141
打开浏览器 输入http://20.0.0.140:9100/ 查看索引信息###
能发现apache_error-2020.03.25 apache_access-2020.03.25

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

接下来:打开浏览器 输入http://20.0.0.140:5601
点击左下角有个management选项---index patterns---create index pattern
----分别创建apache_error- 和 apache_access- 的索引

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

12、【存在的问题】

没有做时间同步,也可能是其他问题,出现在Discover中查看Apache日志时没有可视化数据

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

13、【时间同步后重新操作并访问Apache网页】

删除原有的index,重新执行/usr/share/logstash/bin/logstash -f apache_log.conf命令

实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)
实践出真知——部署ELK日志分析系统(提供包,超详细,可跟做!)

以上就是部署的详细流程了,主要是安装部署对应的软件,配置其主要文件,开启相关服务后进行验证测试!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK