朝花夕拾3-使用ELK系统管理日志

本文介绍了如何利用ElasticSearch、Logstash和Kibana构建企业级的日志管理系统,涵盖了从基本架构、数据收集、存储优化到安全性的各个方面,包括消息队列在高流量场景的应用和Elasticsearch的性能调优。
摘要由CSDN通过智能技术生成

系统日志对于任何公司都是非常重要的。日志记载着各个系统状态、设备的访问使用等等的情况。
有助于我们发现设备的故障,协助我们检查网络访问的合规性,找到应用的异常信息等等。

目前很多公司都有建立自己的日志管理系统,大公司将日常日志的保存与管理看作公司IT运行的最重要任务之一。内外部的审计,日志保存与管理也是重要的一环。

系统日志分类:网络设备日志, 操作系统日志, 应用程序日志

ElasticSearch 简称 ES ,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash 是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给 ES
Kibana Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。

简单架构一:

仅使用最基本的ELK ElasticSearchLogstash Kibana )组件,这种架构非常简单,使用场景也有限。可以构建于单独的一台机器上使用。适用于数据量不大,吞吐量小的小微环境。

简单架构二:

引入更为轻量型的Beat组件作为日志收集的工具,解放相对笨重且耗资源的Logstash,使其只用作数据集中处理的组件。

引入消息队列机制的架构一:

日志的使用并非实时性很高的业务,但是日志的完整性是需要确保的。

业务高峰时段数据量大,为了缓解日志解析的压力,可以增加消息队列机制,

可以缓存数据源收集过来的日志并等到非高峰业务时期再进行日志解析。

日志收集可以使用更加轻量型的Beat,也可以直接rsyslog吐给消息队列。消息队列可以是Kafka,也可以使redisKafka对于大数据量的业务使用较为广泛。
1.从卡夫卡输入例   
input {    
    kafka {    
      bootstrap_servers => "172.30.0.182:9092"    
      topics => ["log-pa167"]        
      type => "log-pa167"    
         }    
}    
2.从redis输入例    
input {    
        redis {    
        host => "172.30.0.182"    
        port => "6379"    
        db => "6"    
        data_type => "list"    
        key => "demo"    
    }    
}    

引入消息队列机制的架构二:

为了确保不出现单点故障,也确保数据在缓存期间的完整性。可以给消息队列再增加集群机制,引入zookeeper分布式协调器即可实现这个需求。通过各Beat组件,或者Logstash组件收集日志给到收集用的各个Logstash服务器,再转储到由zookeeper控制的kafka集群消息队列。再发给Logstash(亦可以是多台,订阅kafka中不同的topic)进行分析和转储至ES。多台ES可以实现集群化,保证最终数据存储的安全性。

使用logstash-output-zabbix插件,logstash收集到的数据过滤出异常日志输出到ZABBIX实现告警推送,有些自身无法恢复的item要trapper模式并设置自动恢复。

具体过滤告警方式上一篇介绍过了。

安全性和日志隔离:

ELK7版本以后将x-pack模块加入了默认的安装包中,配置文件中将其开启,即可获得免费的安全功能;

通过elasticsearch-setup-passwords命令,进行各个安全相关密码的初始化自动或交互方式生成内置账户密码: 

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto/interactive

ELK内置账户及其功能

ELK免费订阅可以实现的安全功能

 
1.Logstash是一个开源数据收集引擎,具有实时管道功能。可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
输入-input:采集各种样式、大小和来源的数据,
        常用组件:stdin,codec,syslog,tcp,udp,file, beats, kafka,redis 等
过滤器-fillter:实时解析和转换数据
       常用组件:csv, dissect, grok, json, kv, mutate, ruby, split, prune, date,geoip等
输出-output:选择你的存储,导出你的数据
        常用组件:stdout, elasticsearch,file,zabbix, kafka等
配置案例
相关组件参考官网reference
https://www.elastic.co/guide/en/logstash/current/index.html

2.Elasticsearch是一个基于Lucene的搜索服务器
Elasticsearch提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

它不仅包括了全文搜索功能,还可以进行以下工作:
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
主要概念:
接近实时(NRT),集群(cluster),节点(node),索引(index),类型(type),文档(document),分片和复制(shards & replicas) 

系统参数的主要性能调优方向:

​Disable swapping
Increase file descriptors
Ensure sufficient virtual memory
Ensure sufficient threads
JVM DNS cache settings
Temporary directory not mounted with noexec
TCP retransmission timeout

关于磁盘空间调优:

禁用_source,空间占用量下降30%左右;
禁用doc values,空间占用量下降10%左右;
压缩算法将LZ4改为Deflate,空间占用量可以下降15%~25%。
disable doc_value会怎样
消极影响:sort、aggregate、access the field from script将会无法使用
积极影响:节省磁盘空间

3.    Kibana 是一款免费开源的前端应用程序,其基础是 Elastic Stack,可以为 Elasticsearch 中索引的数据提供搜索和数据可视化功能。

GUI上kibana主要菜单和作用
Discover--查看从es导入kibana的数据,选取字段
dashboard--看板-多图集合
canvas帐篷--基于图像的数据分布,如人体各部位服装的销售数据等--有demo
Maps--基于地理的图片展示,热点展示--无demo,用到geoip
Machine learning-机器学习,创建job根据数据和模型学习趋势
Graph--有demo
Visualize--根据数据作图
 
observability:
Logs--kibana自身日志
Metrics--对应metricsbeat,安装在elk各个节点或监控主机上,深度检测性能
APM--application performance monitoring,搜集app端的深度性能数据和错误,需要设置apm server
Uptime--集群环境下搜集心跳数据,生成索引 heartbeat-7*

Security
SIEM-
安全信息和事件管理(SIEM)是一个软件解决方案

management
Devtools--REST API管理数据索引角色等对象
Stack monitoring-需要开各个节点metrics
Stackmanagement-通过导航栏管理stack各个组件

项目大体架构为:

基本作图样式1:Paloalto防火墙流量日志

样式2,windows事件日志

样式3,linux系统日志
日志采集端:大量使用过filebeat和winbeat,简单用过metricsbeat,audibeat等。
其他:使用过node组件管理节点和索引,用过清理工具curator;
分析过nginx,squid,多种网络设备等日志接收,整形并出图;
输入输出尝试过包括redis和kafka等多种数据源和输出对象;
应对过公司等保项目,包括RBAC的设计和作图展示。
不足之处总结:对于分词,索引模板和SIEM等理解不足,handson不够;
规划上对于定期按时间自动清理不足,对api管理/ecs等理解一般;
工作精力原因对7.12以后的新功能没有再关注。
以上为主导设计并实施过社内ELK日志管理项目的情况,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值