centos 7.3搭建ELK日志分析系统详解

一、前言:

日志分析是我们运维解决系统故障、发现问题的主要手段。为了可以集中管理多台服务器的日志记录,开源实时日志分析ELK平台应用而生,ELK由Elasticsearch、Logstash和Kibana三个开源工具组成,这三个工具可以分别部署在不同的服务器上,并且相互关联,不过需要收集哪台服务器的日志,就必须在该服务器上部署Logstash。ELK的官网是:Elastic官网

ELK的工作原理如下(懂得其中原理,才可部署一个高可用的ELK平台):
Logstash收集APPServer(应用服务器)产生的log,并存放到Elasticsearch群集中,而Kibana则从Elasticsearch群集中查询数据生成图表,在返回给browser(浏览器)。简单来说,进行日志处理分析,一般需要以下几个步骤:

  • Logstash将日志进行集中化管理。
  • 将日志格式化(Logstash)并输出到Elasticsearch。
  • Elasticsearch对格式化后的数据进行索引和存储。
  • Kibana对前端数据的展示。

二、搭建ELK平台:

(一)部署前准备:

  • 服务器如下:
  • 放行防火墙相关端口的流量,我这里直接关闭了防火墙。
  • 所有服务器的时间最好同步,可以搭建时间同步服务器,也可手动同步。
  • Node1、Node2节点内存最少分配4G,Apache节点无所谓。
  • 下载所需软件包。提取码:gy10 ,三台服务器都要挂载我提供的.iso文件。
  • 修改节点服务器名称,并通过本地/etc/hosts配置域名解析,检查Java环境,必须是Java 1.8或更高的版本,修改后如下所示:
    node1节点:
[[email protected] ~]# hostname       #查看主机名
node1
[[email protected] ~]# cat /etc/hosts          #更改本地解析文件,添加如下两行
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.1 node1         # 添加
192.168.1.2 node2         #添加
#添加完毕后,保存退出即可。
[[email protected] ~]# java -version             #检查Java环境
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

node2节点:

[[email protected] ~]# hostname             #查看主机名
node2
[[email protected] ~]# cat /etc/hosts              #更改本地解析文件,添加如下两行
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.1 node1                        # 添加
192.168.1.2 node2                        # 添加
[[email protected] ~]# java -version                        #检查Java环境
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

(二)开始安装Elasticsearch:
1、node1配置如下:

[[email protected] ~]# mount /dev/cdrom /media              #挂载我提供的.iso文件
[[email protected] ~]# cd /media              #切换至光盘挂载目录
[[email protected] media]# cp * /usr/src                      #将所有软件包复制至指定目录
[[email protected] media]# cd /usr/src                     #切换至指定目录
[[email protected] src]# rpm -ivh elasticsearch-5.5.0.rpm                   #安装Elasticsearch。
[[email protected] src]# systemctl daemon-reload
[[email protected] src]# systemctl enable elasticsearch.service            #设置为开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants.....................
[[email protected] src]# vim /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                                      #侦听端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]             #群集发现通过单播实现
#修改完毕后,保存退出即可。
[[email protected] src]# mkdir -p /data/elk_data          #创建数据存放目录
[[email protected] src]# chown elasticsearch:elasticsearch /data/elk_data/     #更改属主及属组
[[email protected] src]# systemctl start elasticsearch.service              #启动服务
[[email protected] src]# netstat -anpt | grep 9200
#端口号不会立马看到,启动服务后再等待十秒左右才可查看到
tcp6       0      0 :::9200        :::*           LISTEN      3410/java           

2、node2配置如下:

[[email protected] ~]# mount /dev/cdrom /media              #挂载我提供的.iso文件
[[email protected] ~]# cd /media              #切换至光盘挂载目录
[[email protected] media]# cp * /usr/src                      #将所有软件包复制至指定目录
[[email protected] media]# cd /usr/src                     #切换至指定目录
[[email protected] src]# rpm -ivh elasticsearch-5.5.0.rpm                   #安装Elasticsearch。
[[email protected] src]# systemctl daemon-reload
[[email protected] src]# systemctl enable elasticsearch.service            #设置为开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants.....................
[[email protected] src]# scp [email protected]:/etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/
#将node1的配置文件复制过来
The authenticity of host ‘192.168.1.1 (192.168.1.1)‘ can t be established.
ECDSA key fingerprint is SHA256:BS+lKMN05pYF3F1XeIYU69VnHjzKBiBiMZ1SDKgsxxs.
ECDSA key fingerprint is MD5:ba:0b:a7:47:55:01:6f:41:41:5f:ee:b8:88:bf:7a:60.
Are you sure you want to continue connecting (yes/no)? yes           #输入“yes”
Warning: Permanently added 192.168.1.1 (ECDSA) to the list of known hosts.
[email protected] s password:                       #输入对端主机用户的密码
elasticsearch.yml                                100% 2851     1.8MB/s   00:00
[[email protected] src]# vim /etc/elasticsearch/elasticsearch.yml           #稍作修改
node.name: node2                #就更改一下节点名称即可,其余不变
#更改后保存退出。
[[email protected] src]# mkdir -p /data/elk_data              #创建数据存放目录
[[email protected] src]# chown elasticsearch:elasticsearch /data/elk_data/   #更改属主及属组
[[email protected] src]# systemctl start elasticsearch.service              #启动服务
[[email protected] src]# netstat -anpt | grep 9200          #同理,等会再查看端口
tcp6       0      0 :::9200        :::*           LISTEN      4191/java        

3、查看节点信息:

node1的节点信息:

node2的节点信息:

访问http://192.168.1.1:9200/_cluster/health?pretty 查看群集的健康状态:

访问http://192.168.1.1:9200/_cluster/state?pretty 查看群集的状态信息:

通过以上方式查看群集状体对我们显示的并不友好,可以通过安装Elasticsearch-head插件,可以更方便的管理群集:

在node1安装Elasticsearch-head插件(需要提前安装node和phantomjs):

[[email protected] src]# tar zxf node-v8.2.1.tar.gz              #解压node源码包
[[email protected] src]# cd node-v8.2.1/           #切换至解压后的目录
[[email protected] node-v8.2.1]# ./configure && make && make install
#安装,时间较长,约需40分钟左右
[[email protected] src]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2         #解包
[[email protected] src]# cd phantomjs-2.1.1-linux-x86_64/bin/             #切换到指定目录
[[email protected] bin]# cp phantomjs /usr/local/bin/                #复制该文件到指定目录
[[email protected] bin]# cd /usr/src
[[email protected] src]# tar zxf elasticsearch-head.tar.gz            #解包
[[email protected] src]# cd elasticsearch-head/                    #切换至解压后的目录
[[email protected] elasticsearch-head]# npm install               #安装依赖包
[[email protected] elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#编辑主配置文件,在任意位置添加如下两行:
http.cors.enabled: true                #添加该行,开启跨域访问支持
http.cors.allow-origin: "*"             #添加该行,跨域访问允许的域名地址
[[email protected] elasticsearch-head]# systemctl restart elasticsearch       #重启服务
[[email protected] elasticsearch-head]# npm run start &
#设置服务后台启动,如果前台启动,一旦关闭中断,服务也将关闭。
#并且启动服务时,必须在解压后的elasticsearch-head下启动服务,
#进程会读取该目录下的一个文件,否则可能启动失败。
[[email protected] elasticsearch-head]# netstat -anpt | grep 9100           #查看端口号9100
tcp        0      0 0.0.0.0:9100   0.0.0.0:*      LISTEN      105465/grunt
[[email protected] elasticsearch-head]# netstat -anpt | grep 9200           #查看端口号9200
tcp6       0      0 :::9200        :::*           LISTEN      105380/java         

现在就可以通过浏览器访问http://192.168.1.1:9100 去查看群集信息了,如下:

4、安装Kibana(可单独安装在一台服务器上,我这里资源有限,所以安装在了node1上):

[[email protected] ~]# cd /usr/src
[[email protected] src]# rpm -ivh kibana-5.5.1-x86_64.rpm        #安装Kibana
[[email protected] src]# systemctl enable kibana             #设置开机自启
[[email protected] src]# vim /etc/kibana/kibana.yml       #编辑主配置文件,修改以下几项
server.port: 5601          #Kibana打开的端口
server.host: "0.0.0.0"               #Kibana侦听的地址,0.0.0.0代表该主机上的所有地址
elasticsearch.url: "http://192.168.1.1:9200"                   #和Elasticsearch建立连接
kibana.index: ".kibana"                      #在Elasticsearch中添加.kibana索引
[[email protected] src]# systemctl start kibana                   #启动Kibana

5、配置apache服务器(自行搭建网站):

[[email protected] ~]# systemctl start httpd         #启动httpd服务
[[email protected] ~]# java -version                  #检查Java环境是否为1.8
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[[email protected] ~]# mount /dev/cdrom /media           #挂载我提供的.iso文件
mount: /dev/sr0 写保护,将以只读方式挂载
[[email protected] ~]# cd /media
[[email protected] media]# rpm -ivh logstash-5.5.1.rpm                #安装logstash
[[email protected] media]# systemctl daemon-reload
[[email protected] media]# systemctl enable logstash.service         #设置开机自启动
[[email protected] media]# cd /etc/logstash/conf.d/               #切换至指定路径
[[email protected] conf.d]# vim apache_log.conf        #编辑采集apache日志文件和系统日志
#以下就以系统日志为例做解释,其余的照着来就行,格式都差不多
input {
      file{
        path => "/var/log/messages"             #指定要收集的日志文件
  type => "system"  #指定类型为system,可以自定义,type值和output{ } 中的type对应即可
        start_position => "beginning"       #从开始处收集
        }
      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] == "system" {           #如果type为system,
           elasticsearch {                  #就输出到Elasticsearch服务器
             hosts => ["192.168.1.1:9200"]               #Elasticsearch监听地址及端口
             index => "system-%{+YYYY.MM.dd}"           #指定索引格式
                }
             }
        if [type] == "access" {
  elasticsearch {
             hosts => ["192.168.1.1:9200"]
             index => "apache_access-%{+YYYY.MM.dd}"
               }
             }
        if [type] == "error" {
          elasticsearch {
             hosts => ["192.168.1.1:9200"]
             index => "apache_error-%{+YYYY.MM.dd}"
             }
          }
        }
#写完保存退出即可。
[[email protected] ~]# chmod o+r /var/log/messages           #赋予该目录其他人的读权限
[[email protected] conf.d]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#创建命令软连接
[[email protected] conf.d]# systemctl start logstash             #启动服务
[[email protected] conf.d]# logstash -f apache_log.conf &
#指定刚才编写文件为Logstash的配置文件,并且在后台运行

6、创建索引:

1、通过浏览器访问 http://192.168.1.1:9100 查看索引是否创建:

关于索引,有几个很重要的概念:

  • 索引:类似于关系数据库中的“库”;
  • Type(编写Logstash时指定的type):类似于关系数据库中的“表”;

刚才创建的索引,在我标记红框中,可以看到node1和node2对应的位置,都有绿色背景的0、1、2、3、4、5表示是该索引被分为了5个分片,其中因为在Logstash中指定的Elasticsearch服务器是node1,所以node1的分片是主分片,node2会自动同步node1的分片,node2的分片为备份分片,称为副本,用来提供数据冗余及负载分担。默认情况下,Elasticsearch自动对索引请求进行负载分担。

现在访问http://192.168.1.1:5601 登录到Kibana,添加索引:

关于apache的错误日志索引,自行添加即可,添加完毕后,单击“discover”即可,在下面的下拉列表选择一个索引,如apache_access-,可以查看相应的图表及日志信息:

齐活....................

原文地址:https://blog.51cto.com/14154700/2420714

时间: 2024-08-15 05:24:03

centos 7.3搭建ELK日志分析系统详解的相关文章

ELK 日志分析系统详解

大纲: 一.简介 二.Logstash 三.Redis 四.Elasticsearch 五.Kinaba 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用 kibana 是一个开源和

centos 7搭建ELK日志分析系统

一.ELK的组成 ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成,其官方网站为https://www.elastic.co/cn Elasticsearch:是个开源分布实时分析搜索引擎,建立在全文搜索引擎库Apache Lucens基础上,同时隐藏了Apache Luces的复杂性.Elasticsearch将所有的功能打包成一个独立的服务,并提供了一个简单的RESTful API接口,它具有分布式.零配置.自动发现.索引自动分片.索引副本机制.RESTf

Ubuntu14.04搭建ELK日志分析系统

系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误.日志的作用不言而喻,但对于数量庞大且分布在多台机器上的日志,查看就显得特别麻烦了.所以,对于运维人员来说,使用日志分析系统是非常有必要的. 开源实时日志分析ELK平台能够实现日志的监控与分析,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.官方网站:https://www.elastic.co/pr

快速搭建ELK日志分析系统

一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/5.x/rpm.html ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部. Elas

ELK日志分析系统搭建配置

我们主要用ELK日志分析系统来分析Nginx访问日志,mysql慢查询日志,tomcat运行日志以及系统日志等. 介绍:ELK:ElasticSearch+LogStash+Kibana=ElkStackElasticSearch:存储.收索.分析(可以用solr替代)LogStash:收集器,输入,处理分析,存储到ESKibana:展示备注:ElasticSearch支持集群功能,日志收集后会在每个节点存放一份(可以选择) 1.安装jdkwget http://sg-new.oss-cn-ha

十分钟搭建和使用ELK日志分析系统

前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为"十分钟搭建和使用ELK日志分析系统"听起来有点唬人,其实如果单纯满足可视化要求,并且各软件都已经下载到本地,十分钟是可以搭建一个ELK系统的.本文介绍如何快速安装.配置.使用EK+FILEBEAT去实现日志搜集.本文中没有使用LOGSTASH做日志搜集过滤,但为了后期需要先进行了安装. 工作原理 ElasticSearch:是

在CentOS7中部署ELK日志分析系统

在CentOS7中部署ELK日志分析系统 ELK原理介绍 什么是ELK ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开放REST和JAVA API等

ELK日志分析系统 介绍 安装配置

ELK日志分析系统 一.ELK介绍 ELK顾名思义:是由Elasticsearch,Logstash 和 Kibana三部分组成的. 其中Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写.目前,最新的版本是 5.4. 主要特点 实时分析 分布式实时文件存储,并将每一个字段都编入索引 文档导向,所有的对象全部是文档 高可用性,易扩展,支持集群(Cl

ELKR分布式搭建nginx日志分析系统

ELKR分布式搭建nginx日志分析系统 一.名词介绍 1.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 2.Elasticsearch 2.1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引