ELK日志分析和管理

ELK日志分析和管理

ELK的组成

ELK=Elasticsearch+Logstash+Kibana

  • Logstash:日志的手机和输出
  • Elasticsearch:是一个数据库
  • Kibana:做出展示

ELK日志分析系统简介

  • 日志服务器

1.提高安全性
2.集中 存放日志
缺陷

对日志的分析困难

  • ELK日志分析系统

Elasticsearch
Logstash
Kibana

  • 日志处理步骤

1.将日志进行集中化管理
2.志格式化(Logstash)并输出到Elasticsearch
3.对格式化后的数控进行索引好人存储(Elasticsearch)
4.前段的数据的展示(Kibana)

Elasticsearch的介绍

  • Elasticsearch的概述

提供一个分布式多用户能力的全文搜索引擎

  • Elasticsearch核心概念

1.接近实时

Elasticsearch是一个接近实时的搜索的平台。有轻微延迟 通常1秒)

2.集群

一个集群就是有一个或者多个节点组织在一起,他们共同持有你整个的数据,并一起提供索引和搜索功能
3.节点
节点就是一台单一的服务器,是群集的一部分,存储数据并参与集群的索引和搜索功能。想群集一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义,改名字也很重要,在集群中用于识别服务器对应的节点。节点可以通过指定集群名字来加入到集群中,默认情况,每个节点被设置成加入到Elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为Elasticsearch的集群。

4.索引

一个索引就是一个拥有几分相似特征的文档的集合。一个索引由一个名字来标识(必须全部是小写字母)并且当我们要对对应于这个索引中文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,如果你想你可以定义任意多个的索引。

5.分片和副本

分片:1.水平分割扩展,增大存储量
2.分布式并行跨分片操作,提高性能和吞吐量。
副本:1.高可用性,以应对分片或者节点故障,处于这个原因,分片副本要在不同的节点上。
2高可用能,增大吞吐量,搜索可以在并行在所有副本上执行。

Logstash介绍

  • Logstash

1.一款强大的数据处理工具
2.可实现数据传输、格式化处理。格式化输出
3.数据输入、数据加工(如过滤、改写等)以及数据输出

  • Logstash主要组建

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

  • Logstash 简单的理念
    1.Collect:数据输入
    2.Enrich:数据加工、如过滤,改写符
    3.Transport:数据输出(被其他模块进行调用)

Kibana

  • Kibana介绍

1.一个针对Elasticsearch的开源分析及可视化平台
2.搜索、查看存储在Elasticsearch索引中的数据
3.通过各种图表进行高级数据分析及展示

  • Kibana主要功能

1.Elasticsearch无缝之集成
2.整合数据、复杂数据分析
3.让跟多团队成员收益
4.接口灵活、分享更容易
5.配置简单、可视化多数据源
6.简单数据导出

简单的ELK项目


apache ip :20.0.0.13
node1 ip:  20.0.0.14
node2 ip:  20.0.0.15

[root@apache ~]# vi /etc/hosts (所有机子都要进行这项操作)
20.0.0.13 apache
20.0.0.14 node1
20.0.0.15 node2

node1 与node2 相同操作

[root@node1 ~]# unzip elk.zip 
[root@node1 ~]# cd elk/
[root@node1 elk]# rpm -ivh elasticsearch-5.5.0.rpm 
[root@node1 elk]# cd /etc/elasticsearch/
[root@node1elasticsearch]#cp elasticsearch.yml elasticsearch.yml.bak#备份
[root@node1 elasticsearch]# vim elasticsearch.yml#修改配置参数
17 cluster.name: my-elk-cluster
23 node.name: node1
32 path.data: /data/elk_data
37 path.logs: /var/log/elasticsearch/
43 bootstrap.memory_lock: false
55network.host: 0.0.0.0
59 http.port: 9200
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
[root@node1 elasticsearch]# 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"]

[root@node1 elasticsearch]# mkdir -p /data/elk_data#递归创建

[root@node1 elasticsearch]# chown elasticsearch:elasticsearch /data/elk_data/ #给与权限
[root@node1 elasticsearch]# systemctl start elasticsearch 
[root@node1 elasticsearch]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                 LISTEN      13707/java    

浏览器 输入:20.0.0.14:9200

{
    
     "name" : "node1", "cluster_name" : "my-elk-cluster", "cluster_uuid" : "cDpw29cVRiCpKo9AFzW20A", "version" : {
    
     "number" : "5.5.0", "build_hash" : "260387d", "build_date" : "2017-06-30T23:16:05.735Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }

在这里插入图片描述
在这里插入图片描述

健康检查

在这里插入图片描述
在这里插入图片描述

检查群集状态信息

在这里插入图片描述
在这里插入图片描述

安装elasticsearch-head插件

**为了方便管理 **
1.安装一栏环境(node1 和node2 一样操作)

[root@glt6 elk]# yum install gcc gcc-c++ make -y

2.编译安装node组件依赖包

[root@glt6 elk]# tar zxvf node-v8.2.1.tar.gz 
[root@glt6 elk]# cd node-v8.2.1/
[root@glt6 node-v8.2.1]# ./configure 
[root@glt6 node-v8.2.1]# make && make install

安装phantomjs前端框架

[root@node2 elk]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/ #解压缩

拷贝到本机目录下,方便使用命令

[root@node2 elk]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
[root@node2 bin]# cp phantomjs /usr/local/bin/
[root@node2 elasticsearch-head]# npm install

安装elasticsearch数据可视化工具

[root@node2 elk]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/
cd elasticsearch-head/
npm install

编辑主配置文件

[root@node2 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true  #末尾添加
http.cors.allow-origin: "*"#末尾添加
[root@node2 elasticsearch-head]# systemctl restart elasticsearch.service 
[root@node2 elasticsearch-head]#  npm run start &
[root@node2 elasticsearch-head]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      98554/java    
[root@node2 elasticsearch-head]# netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      98652/grunt
          

浏览器上输入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
g-blog.csdnimg.cn/20210108085748717.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDM0NjkwMg==,size_16,color_FFFFFF,t_70)

在这里插入图片描述
在这里插入图片描述
node1上查看添加的索引

[root@node1 elasticsearch-head]# 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
      }

-XPUT ‘localhost:9200:指定在本地
/index-demo/test/:索引中建立test
1?pretty&pretty’:问好后面跟一些参数
application/json:以json格式插入数据
在这里插入图片描述
证明es中可以存储数据,可以使用

第三台主机安装logstash

做一些日志搜集输出到elasticsearch中
在apache主机上

[root@apache ~]# yum -y install httpd
[root@apache ~]# unzip elk.zip 
[root@apache ~]# cd elk/
[root@apache elk]# rpm -ivh logstash-5.5.1.rpm 
[root@apache elk]# systemctl start logstash.service 
[root@apache elk]# systemctl enable logstash.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.

创建软连接,将命令连接到本机bin目录下

 [root@apache elk]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

logstash(apache)与elasticsearch(node)功能是否正常,做对接测试
Logstash这个命令测试
字段描述解释:
-f通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e后面跟着字符出该字符串可以被当做logstash的配置(如果是””,则默认使用stdin做为输入、stdout作为输出)
-t测试配置文件是否正确,然后退出

[root@apache elk]# logstash -e 'input { stdin{} } output { stdout{} }'
00:39:41.237 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {
    
    :port=>9600}#输入网址

www.baidu.com
2021-01-05T16:35:07.633Z apache www.baidu.com
 www.sina.com
 2021-01-05T16:35:26.921Z apache www.sina.com
[root@apache elk]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
证实logstash可进行格式化输出

www.baidu.com
{
    
    
  "@timestamp" => 2021-01-05T16:39:49.486Z,     
   "@version" => "1",         
    "host" => "apache",       
    "message" => "www.baidu.com"
    }
    

使用logstash将信息写入到elasticsearch

[root@apache elk]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.14:9200"] } }'



01:11:13.182 [Api Webserver] INFO  logstash.agent - Successfully 
started Logstash API endpoint {
    
    :port=>9600}
www.baidu.com
www.sina.com

打开浏览器集群http://20.0.0.14:9200/
在这里插入图片描述
在这里插入图片描述
证实,数据出口导向可对接上es,并且成功完成分片及副本

在apache主机做对接配置

1查看apache日志
为other添加可读权限
[root@apache ~]# cd /var/log/
[root@apache log]# ll
在这里插入图片描述
[root@apache log]# chmod o+r messages
在这里插入图片描述

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

在这里插入图片描述

在node1上装kibana

[root@node1 elk]# rpm -ivh kibana-5.5.1-x86_64.rpm 
[root@node1 elk]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml  kibana.yml.bak#备份数据
[root@node1 kibana]# vim kibana.yml
2 server.host: "0.0.0.0"
7 server.host: "0.0.0.0"
21 elasticsearch.url: "http://20.0.0.14:9200"
30 kibana.index: ".kibana"
[root@node1 kibana]# systemctl start kibana.service  //重启服务
[root@node1 kibana]# systemctl enable kibana.service  //设置开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.

做一个时间同步
在这里插入图片描述

对接apache主机的apache日志文件(访问、错误的)

在apache主机

[root@apache ~]# cd /etc/logstash/
[root@apache logstash]# cd conf.d/
[root@apache conf.d]# vim 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.15:9200"]
         index => "apache_access-%{+YYYY.MM.dd}"
         }
        }
        if [type] == "error" {
    
    
        elasticsearch {
    
    
         hosts => ["20.0.0.10:9200"]
         index => "apache_error-%{+YYYY.MM.dd}"
         }
       }
      }
[root@apache conf.d]# logstash -f apache_log.conf #apache_log.conf 是在con.f 的路径下所以可以使用相对路径  否则使用绝对路径

需要在浏览器上输入Apache的地址使其有日志记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50346902/article/details/112258657