飞道的博客

ELK企业级日志分析系统

493人阅读  评论(0)


前言

服务所需软件包,自取

链接:https://pan.baidu.com/s/1GzQ68gYy4cKTkSVuo_Mreg
提取码:t8tk

一、概述

  • ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成,是个开源实时日志分析平台。

二、组件详解

2.1、ElasticSearch介绍

  • Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
  • Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
  • 强烈建议在配置elasticsearch时,配置成集群模式

ElasticSearch-head插件

  • ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件
  • 如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作

2.2、Logstash介绍

  • Logstash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上。
  • LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。

logStash的主要组件:

  1. Shipper:日志收集者 。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可;
  2. Indexer:日志存储者。负责接收日志并写入到本地文件。
  3. Broker:日志Hub。负责连接多个Shipper和多个Indexer
  4. Search and Storage:允许对事件进行搜索和存储;
  5. Web Interface:基于Web的展示界面

2.3、Kibana介绍

  • Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。
  • 它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

三、ELK工作流程

【APPServer集群】→→【logstash Agent 采集器】→→【ElasticSearch Cluster】→→【Kibana Server】→→【Browser】

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

四、部署ELK并与apache日志对接

环境介绍

2台Elasticsearch服务器组成一个集群,并在master节点上安装kinaba,

  • 3台服务器关闭防火墙,做好IP地址映射
systemctl stop firewalld
systemctl disable firewalld
setenforce  0
vi /etc/hosts
##末尾添加
192.168.5.10 node1
192.168.5.30 node2
192.168.5.20 apache

4.1、node1配置

##安装jdk,需要1.8.0版本
yum install java-1.8.0  -y
 java -version    ##查看当前版本
openjdk version "1.8.0_131"
  • 安装elasticsearch软件
###上传源码包到/opt目录,并解压
rpm -ivh elasticsearch-5.5.0.rpm     ##解压
  • 修改elasticsearch配置文件
####先安全备份
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
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"]           ####集群发现通过单播实现
##在末尾添加以下
http.cors.enabled: true
http.cors.allow-origin: "*"
  • 查看修改详情
 grep -v "^#" /etc/elasticsearch/elasticsearch.yml

  • 创建数据存放路径并授权
mkdir -p /data/elk_data
 chown elasticsearch:elasticsearch /data/elk_data/
  • 加载系统服务,启动elasticsearch
systemctl daemon-reload
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      64463/java 
  • 此时可以用浏览器访问node1节点查看信息

  • 安装node组件
####解压源码包到opt
tar xzvf node-v8.2.1.tar.gz -C /opt
 ##进入解压目录
cd node-v8.2.1/
##执行
./configure
##编译并安装
make -j3 & make install
  • 安装phantomjs
##上传软件包到/usr/local/src/,并解压
tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C  /usr/local/src/
###将phantomjs命令加入到系统中
cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
  • 安装ElasticSearch-head插件
##上传软件包到/usr/local/src/,并解压
tar xzvf elasticsearch-head.tar.gz -C /usr/local/src/
###初始化
cd elasticsearch-head/
npm install

4.2、node2配置

  • node2配置与node1配置基本相同,只需将elasticsearch配置文件中的节点名字改为node2
vi   /etc/elasticsearch/elasticsearch.yml 
node.name: node2                                 ####节点名字
  • 2个节点都启动elasticsearch-head , 启动服务器
 systemctl restart elasticsearch
 cd /usr/local/src/elasticsearch-head/
 npm run start & 

netstat -lnupt |grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      114739/grunt        
netstat -lnupt |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      114626/java     

  • 此时可以通过浏览器进入/elasticsearch-head/平台,查看健康情况

4.3、apache节点配置

  • 安装httpd服务并启动,安装jdk
###安装apache服务
yum -y install httpd
systemctl start httpd
systemctl enable httpd
###安装jdk
yum -y install java-1.8.0  -y
 java -version    ##查看当前版本
openjdk version "1.8.0_131"
  • 安装logstash
###上传源码包到/opt目录,并解压
rpm -ivh logstash-5.5.1.rpm 
  • 启动logstash服务
systemctl start logstash.service   
systemctl enable logstash.service
##建立软链接,让系统识别logstash命令
 ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
  • logstash与ElasticSearch做对接配置
chmod o+r /var/log/messages
vi /etc/logstash/conf.d/system.conf
###插入以下字段
input {
       file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
      }
output {
        elasticsearch {
          hosts => ["192.168.5.10:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }

  • 重启logstash服务,登陆ElasticSearch查看索引信息
 systemctl restart logstash.service

4.4、在node1节点上安装kibana

###上传源码包到/usr/local/src并解压
cd /usr/local/src/
rpm -ivh kibana-5.5.1-x86_64.rpm
  • 修改kibana配置文件
vi /etc/kibana/kibana.yml
server.port: 5601                #### kibana打开的端口
server.host: "0.0.0.0"           ####kibana侦听的地址
elasticsearch.url: "http://192.168.5.10:9200"             ###和elasticsearch建立联系
kibana.index: ".kibana"              ####在elasticsearch中添加.kibana索引
  • 启动kibana
systemctl start kibana.service   
systemctl enable kibana.service
  • 对接apache的日志文件,在apache节点上操作
###进入apache节点
cd /etc/logstash/conf.d/
touch apache_log.conf    ##创建对接日志
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 => ["192.168.5.10:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.5.10:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }
        
###指定logstash配置文件为apache_log.conf
/usr/share/logstash/bin/logstash -f apache_log.conf
  • 此时用浏览器访问下192.168.5.20 apache服务让其生成访问日志

  • 用浏览器进入ElasticSearch服务查看索引信息

配置kibana

打开浏览器进入192.168.5.10:5601

首次登录创建一个索引 名字:system-* ,这是对接系统日志文件

创建apache日志索引(access和error)

点击左下角management选项

点击index patterns

点击create index pattern

创建error和access索引


可以在看kibana上查看apache日志信息


转载:https://blog.csdn.net/weixin_42953006/article/details/105148990
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场