当前位置:   article > 正文

企业级日志分析系统——ELK_企业级日志管理与分析

企业级日志管理与分析

1.ELK日志分析系统简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8S8fRerm-1605746105940)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201117181639589.png)]

日志服务器
	提高安全性
	集中存放日志
	缺陷:对日志分析困难
ELK日志分析系统
	Elasticsearch
	Logstash
	Kibana
日志处理步骤
	将日志进行集中化管理
	将日志格式化(Logstash)并输出到(Elasticsearch)
	对格式化后的数据进行索引和存储(Elasticsearch)
	前端数据的展示(Kibana)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

1、ElasticSearch

ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在elasticsearch中,所有节点的数据是均等的。
2、Logstash

Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。
logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
3、Kibana

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具。
Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2.Elasticsearch介绍

Elasticsearch的概述
	提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch核心概念
	接近实时
	集群
	节点
	索引
		索引(库)--->类型(表)--->文档(记录)
	分片和副本
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.Logstash介绍

Logstash介绍
	一款强大的数据处理工具
	可实现数据传输、格式处理、格式化输出
	数据输入、数据加工(如过滤、改写等)以及数据输出
LogStash主要组件
	Shipper		//日志收集者。负责监控本地日志文件的变化,即时收集最新的日志文件内容
	Indexer		//日志存储者。负责接收日志并写入到本地文件
	Broker		//日志Hub。负责连接多个Shipper和多个Indexer
	Search and Storage	//允许对事件进行搜索和存储
	Web Interface		//基于Web的展示界面

//在Logstash中,包括了三个阶段,分别是输入(Input)、处理(Filter,非必需)和输出(Output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.Kibana介绍

Kibana介绍
	一个针对Elasticsearch的开源分析及可视化平台
	搜索、查看存储在Elasticsearch索引中的数据
	通过各种图表进行高级数据分析及展示
Kibana主要功能
	Elasticsearch无缝之集成
	整合数据,复杂数据分析
	让更多团队成员受益
	接口灵活,分享更容易
	配置简单,可视化多数据源
	简单数据导出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.部署ELK日志分析系统

困境
1:开发人员不能登录线上服务器查看日志
2:各个系统都有日志,日志分散难以查找
3:日志数据量大,查找慢,数据不够实时

Elastic Search  分布式搜索引擎
LogStash  日志收集
Kibana   日志展示 

日志收集最好的开发语言就是java 因为有JVM
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kn13mjRG-1605746105947)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201117184200855.png)]

1.安装elasticsearch

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

cd /etc/yum.repos.d/
vim elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum list

yum install elasticsearch -y

yum install java -y  (1.8版本)

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)

cd /etc/elasticsearch/

vim elasticsearch.yml

17行 集群名称
cluster.name: abner

23行 节点名称
node.name: linux-node1

33行 工作目录
path.data: /data/es-data
path.logs: /var/log/elasticsearch/

43行 防止交换swap分区
bootstrap.memory_lock: true

54行 监听网络
network.host: 0.0.0.0

58行 端口
http.port: 9200


mkdir -p /data/es-data

chown -R elasticsearch:elasticsearch /data/es-data/

systemctl start elasticsearch.service

netstat -ntap | grep 9200

测试
http://192.168.100.11:9200

安装ES插件
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

测试
http://192.168.100.11:9200/_plugin/head/

在第二台服务器上同时安装ES服务同上
17行 集群名称
cluster.name: abner

23行 节点名称
node.name: linux-node2

69行 自动发现机制
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.100.11"]

启动elasticsearch

同样在linux-node1中配置

69行 单播列表自动发现机制
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.100.12"]


测试
http://192.168.100.12:9200/_plugin/head/
会看到主分片和副本分片

//node-01和node-02日志提示不让锁内存
less /var/log/elasticsearch/abner.log
...
[2018-08-19 22:01:12,224][WARN ][bootstrap                ] 
These can be adjusted by modifying /etc/security/limits.conf, for example: 
	# allow user 'elasticsearch' mlockall
	elasticsearch soft memlock unlimited
	elasticsearch hard memlock unlimited
...

vim /etc/security/limits.conf
//末尾插入
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

systemctl stop elasticsearch.service
systemctl start elasticsearch.service

--------------生产环境中必须要修改(注意)------------------
ulimit -a
open files                      (-n) 1024
方法:
/etc/security/limits.conf

* soft nofile 65535        

* hard nofile 65535
//重启生效
--------------------------------------------------
//监控组件
github.com  中查找 kopf

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

http://192.168.100.11:9200/_plugin/kopf/#!/cluster
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123

2.安装logstash

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
cd /etc/yum.repos.d/
vim logstash.repo

[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

yum install logstash -y

------------------logstash收集系统日志--------------------------
ln -s /opt/logstash/bin/logstash /usr/bin/

[root@localhost ~]# vim file.conf

input {

      file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
      }     
      file {
          path => "/var/log/elasticsearch/yun.log"
          type => "es-error"
          start_position => "beginning"   
          codec => multiline {
          pattern => "^\["
          negate => true
          what => "previous"
        }
      }
}

output {
    
     if [type] == "system" {
         elasticsearch {
             hosts => ["192.168.100.11:9200"]
             index => "system-%{+YYYY.MM.dd}"
         }
     } 

     if [type] == "es-error" {
         elasticsearch {
             hosts => ["192.168.100.11:9200"]
             index => "es-error-%{+YYYY.MM.dd}"
         }
     } 
}

//添加多行日志内容进行验证
logstash -f /root/file.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

3.安装kibana

tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/

mv kibana-4.3.1-linux-x64/ /usr/local/

mv kibana-4.3.1-linux-x64/ kibana

vim /usr/local/kibana/config/kibana.yml

//2行 
server.port: 5601

//5行
server.host: "0.0.0.0"


//12行 ES地址
elasticsearch.url: "http://192.168.175.132:9200"

//20行
kibana.index: ".kibana"


yum install screen -y

//启动监听
/usr/local/kibana/bin/kibana

ctrl+a+d  进行丢入后台

http://192.168.175.132:5601/

es-error-*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/442363
推荐阅读
相关标签
  

闽ICP备14008679号