前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ELK7.14.0日志分析系统搭建

ELK7.14.0日志分析系统搭建

作者头像
乌鸦安全
发布于 2021-10-14 03:26:32
发布于 2021-10-14 03:26:32
1.2K00
代码可运行
举报
文章被收录于专栏:乌鸦安全乌鸦安全
运行总次数:0
代码可运行

ELK介绍 在平时的工作当中,需要一个日志分析系统来分析各种各样的告警信息,而ELK可以简单满足这个需求。

ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。

官方网站:https://www.elastic.co/

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
下载地址:https://www.elastic.co/downloads/elasticsearch

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
下载地址:https://www.elastic.co/downloads/logstash

Kibana 也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
下载地址:https://www.elastic.co/downloads/kibana

Logstash收集服务器产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

1.环境搭建

Ubuntu 16.0.4 2H4G IP为192.168.11.128

ElasticSearch: 7.14.0

Logstash: 7.14.0

Kibana: 7.14.0

Java: openjdk version "1.8"

ElasticSearch,Logstash和Kibana的版本最好一样

说明:这里为了演示ELK都安装在一台服务器上,服务器内存越大越好。

2.安装JDK

更新一下包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt update && sudo apt upgrade

查看java信息,发现没有安装java。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -version

安装java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install openjdk-8-jre-headless

可以看到java已安装

3.安装ElasticSearch

ElasticSearch不允许以root用户运行,因为我们当前用户是bolean,所以问题不大。

进入ElasticSearch页面查看安装包信息,选择适合ubuntu的安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.elastic.co/downloads/elasticsearch

下载elasticsearch并解压到当前目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
tar zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz

需要修改elasticsearch的配置文件

Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim jvm.options

修改默认配置:-Xms1g -Xmx1g为512m,去掉前面的注释。

编辑elasticsearch.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim elasticsearch.yml

修改以下数据,取消前面的注释。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.name: node-1   #配置当前es节点名称(默认是被注释的,并且默认有一个节点名
network.host: 0.0.0.0    #绑定的ip,默认只允许本机访问,修改为0.0.0.0后则可以远程访问
http.port: 9200
cluster.initial_master_nodes: ["node-1"]     #这个节点名称就是node.name设置的参数值

在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令sysctl -p。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /etc/sysctl.conf

修改/etc/security/limits.conf文件,增加配置信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* soft nofile 65536
* hard nofile 65536

在elasticsearch目录下启动elasticsearch,因为在一台服务器上启动多个软件,所以可以用screen新建一个会话窗口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install screen
screen -S  elasticsearch
./bin/elasticsearch

访问http://192.168.11.128:9200/

4.安装kibana

查看安装包信息,选择适合ubuntu的安装包。

https://www.elastic.co/downloads/kibana

下载kibana并解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
tar zxvf kibana-7.14.0-linux-x86_64.tar.gz

修改kibana的配置文件kibana.yml

主要修改这两项,取消前面的注释。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.11.128:9200"] #设置为你服务器的ip地址

新建一个screen会话,在kibana目录下运行kibana。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
screen -S kibana
./bin/kibana

需要先运行elasticsearch才能运行成功

访问http://192.168.11.128:5601/app/home

可以看到有两个会话了,接下来还要安装一个软件。

5.安装logstash

查看logstash页面,选择适合logstash的安装包。https://www.elastic.co/downloads/logstash

下载kibana并解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-linux-x86_64.tar.gz
tar zxvf logstash-7.14.0-linux-x86_64.tar.gz

Logstash管道有两个最基本元素,输入和输出,和一个可选的元素,拦截器。输入插件从一个输入源中消费数据,拦截器插件按照你指定的方式修改数据,然后输出插件将数据写入到一个目的地。

在bin目录新建一个配置文件logstash.conf。配置文件以suricata日志为例,请自行安装suricata,文件内容如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {
  file {
    path => ["/var/log/suricata/eve.json"]   #这里读取suricata的日志
    codec => "json"
    type => "SuricataAlert"
  }
}

output {
  elasticsearch {
    action => "index"
    hosts => ["http://192.168.11.128:9200"]    #是指服务器的ip
    index => "suricata-%{+YYYY.MM.dd}"         #建立索引,记住suricata这个名称
  }
}

新建一个screen会话,启动logstash

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
screen -S logstash
./logstash -f logstash.conf

成功如下所示

可以看到已经创建了三个会话

如果运行失败可以加个-t参数查看失败原因,这样不会运行,可以帮助排查错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./logstash -t -f logstash.conf

在2H2G的云服务器上运行logstash会显示失败,虚拟机运行没问题,初步认为这台云服务配置虚高。

如果带不动修改 jvm.options 文件。修改内容如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim  jvm.options
-Xms200m
-Xmx200m

下图为logstash启动失败页面

6.导入suricata日志

点击manage

选择index patterns,然后选择create。

匹配索引,suricata就是logstash配置文件中的索引,选择下一步。

选择筛选条件,然后点击创建。

接下来点击discover

可以看到suricata日志,但是还不太直观。

下载下面三个json文件并导入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://aka.ms/networkwatchersuricatadashboard
https://aka.ms/networkwatchersuricatavisualization
https://aka.ms/networkwatchersuricatasavedsearch

注意导入第二个和第三个的时候需要选择之前创建的索引。

三个文件导入完成后就可以方便的查看日志了

注意查看日志需要设置好时间,不然查看不到。上述只是介绍一下简单的配置方式,方便为了演示,如需配置更复杂的功能,请参考官方说明。

参考链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.cnblogs.com/weibanggang/p/11589464.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
这些 Redis 面试题虽然简单,但是面试常常问到
Redis应该算面试中必问的一个知识点,但是发现很多童鞋并不熟悉这块,这篇就常见的一些问题做一些整理,有不对的地方欢迎留言指正!
咸鱼学Python
2020/04/27
7610
Redis 有哪些架构模式?讲讲各自的特点
Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。
张哥编程
2024/12/07
1100
Redis 有哪些架构模式?讲讲各自的特点
【redis从入门到上线(3)】- redis高可用之sentinel
本期原本计划是写些redis高可用架构选型,分析,及实战,发现篇幅过长,所以拆开来写了。这期先讲一些官方提供的高可用功能,主从,sentinel,以及redis cluster。
一条老狗
2019/12/26
4440
Redis Cluster深入与实践(续)
前文回顾 上一篇文章基于redis的分布式锁实现写了基于redis实现的分布式锁。分布式环境下,不会还使用单点的redis,做到高可用和容灾,起码也是redis主从。redis的单线程工作,一台物理机只运行一个redis实例太过浪费,redis单机显然是存在单点故障的隐患。内存资源往往受限,纵向不停扩展内存并不是很实际,因此横向可伸缩扩展,需要多台主机协同提供服务,即分布式下多个Redis实例协同运行。 在之前的文章Redis Cluster深入与实践介绍过Redis Cluster的相关内容,之前特地花
aoho求索
2018/04/03
1.2K0
Redis Cluster深入与实践(续)
Redis常见面试题
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
JAVA葵花宝典
2019/12/02
4340
Redis:面试几十多家公司,这些必须掌握
面试时有关Redis有关的问题经常被问住,然后在网上找了大量相关的资料,整理出来,和大家一起学习。
木野归郎
2020/06/15
4430
Redis:面试几十多家公司,这些必须掌握
『互联网架构』软件架构-Nosql之redis(47)
1.内存容量有限(redis本身是存储在内存里面,硬件机器本身的内容容量是有限,往redis存储的量可能很大,就会出现内存容量的问题) 2.处理能力有限(一个人干活跟二个人干活的区别。跟内存的限制相似,类似网络不好,能力就收到限制) 3.无法高可用(一旦请求量上去,可能存在系统挂掉,挂掉其他的调用系统就无法调用了)
IT架构圈
2019/05/14
6190
『互联网架构』软件架构-Nosql之redis(47)
一起来认识Nosql:redis详解
1.传统数据库遵循 ACID 规则。( A (Atomicity) 原子性,C (Consistency) 一致性,I (Isolation) 独立性,D (Durability) 持久性)2.Nosql 一般为分布式而分布式一般遵循 CAP 定理(一致性(Consistency) (所有节点在同一时间具有相同的数据), 可用性(Availability) (保证每个请求不管成功或者失败都有响应) ,分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作))
IT架构圈
2021/09/17
6760
一起来认识Nosql:redis详解
Redis高可用及分片集群
一、主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化操作即可。
星哥玩云
2022/08/16
4650
Redis高可用及分片集群
Redis集群机制及一个Redis架构演进实例
Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份,从而达到主从机制。为了实现主从复制,我们准备三个redis服务,依次命名为master,slave1,slave2。
程序视点
2025/03/16
1510
互联网公司面试必问的Redis题目
Redis是一个非常火的非关系型数据库,火到什么程度呢?只要是一个互联网公司都会使用到。Redis相关的问题可以说是面试必问的,下面我从个人当面试官的经验,总结几个必须要掌握的知识点。
TimeFriends
2022/08/12
2910
Redis入坟(六)分布式集群,概念、原理、实操
可用性、数据安全、性能都可以通过搭建多个 Reids 服务实现。其中有一个是主节点(master),可以有多个从节点(slave)。主从之间通过数据同步,存储完全相同的数据。如果主节点发生故障,则把某个从节点改成主节点,访问新的主节点。
源码之路
2020/09/04
8460
Redis入坟(六)分布式集群,概念、原理、实操
Redis集群方案怎么做?大牛给你介绍五种方案!
Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片技术,解决单实例内存增大带来的一系列问题。
JKXQJ
2018/07/24
1.8K0
Redis集群方案怎么做?大牛给你介绍五种方案!
Redis集群方案怎么做?大牛给你介绍五种方案!
Redis集群方案 Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片技术,解决单实例内存增大带来的一系列问题。 本篇文章简单介绍五种方案: 官方cluster方案 twemproxy代理方案 哨兵模式 codis 客户端分片 官方cluser方案 从redis 3.0版本开始支持redis-cluster集群,redis-cluster采用无中心结构,每个
美的让人心动
2018/06/14
8880
高可用集群Redis Cluster
假设我们在一台主从机器上配置了200G内存,但是业务需求是需要500G的时候,主从结构+哨兵可以实现高可用故障切换+冗余备份,但是并不能解决数据容量的问题,用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。
炒香菇的书呆子
2023/10/06
3690
Redis高可用技术解决方案总结分析
Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。
Java周某人
2019/08/05
6750
Redis高可用技术解决方案总结分析
探索Redis设计与实现13:Redis集群机制及一个Redis架构演进实例
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/12/03
4350
写的很全面的Redis高可用技术解决方案大全
很多朋友向我咨询关于里面提到的高可用的方案的优缺点以及如何选择合适的方案线上使用,这里再整理发出来,供大家参考,如有不妥之处,欢迎批评指正,也欢迎推荐更好的技术方案。不废话了,来看看方案吧~
Java架构技术
2018/11/16
4760
Redis分布式篇
Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是 会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作
编程之心
2021/07/14
4450
面试官:熟悉Redis官方的高可用性解决方案吗?
今天有位朋友私下和我说,他昨天电话面试被问到Redis的高可用方案。于是决定今天来分享这个问题。如果你对此有另外的答案,不妨微信联系我,我拉你进群,让更多的人知道,做一个纯粹的技术分享达人。
田维常
2021/03/16
2640
推荐阅读
相关推荐
这些 Redis 面试题虽然简单,但是面试常常问到
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档