目录
[2.2 logstash关键组件](#2.2 logstash关键组件)
[2.2 logstash数据流向](#2.2 logstash数据流向)
引言
在大数据时代,日志管理与分析已经成为运维、开发和业务优化中不可或缺的一环。而ELK ,即Elasticsearch、Logstash、Kibana三者组成的开源解决方案,以其强大的实时数据分析能力,在业界广受好评,被誉为"日志处理界的瑞士军刀"。
一、ELK简介
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求
(一)基本概述
1.Elasticsearch服务
Elasticsearch: 作为一款分布式、RESTful 风格的搜索引擎,Elasticsearch 提供了近实时的全文搜索和分析功能。它能高效地存储、检索和分析海量数据,并且支持水平扩展,以满足大规模数据处理的需求。
2.Logstash服务
Logstash: Logstash 是一个开源的数据收集引擎,可以同时从多个来源采集数据,然后进行过滤、转换,最终将结构化或非结构化的数据输出到你希望的目的地(如 Elasticsearch)。无论是系统日志、数据库记录还是应用程序日志,Logstash 都能轻松应对。
2.2 logstash关键组件
logstash有三个关键组件,分别为:input、filter、output
1. Input(输入) Input 组件是 Logstash 数据处理的第一环节,它负责从不同的数据源捕获和收集数据。这些数据源可以是本地文件、网络socket、数据库、消息队列(如 Kafka)、 syslog 服务、Beats 系列工具(如 Filebeat)等等。Logstash 支持多种输入插件,使得它能够从多样化的环境中实时抓取数据。
2. Filter(过滤器) Filter 组件位于 Input 和 Output 之间,它是数据处理的核心部分,用于对从 Input 获取的原始事件进行清洗、转换和增强。Filter 可以用来解析日志格式、去除无关信息、添加标签、进行地理编码、加密解密数据、甚至进行条件判断和数据映射等操作。常见的过滤器包括 grok(用于解析非结构化日志)、mutate(修改字段值或删除字段)、geoip(地理位置信息处理)等。
3. Output(输出) Output 组件是 Logstash 流水线的最后一个阶段,负责将经过 Filter 处理后的结构化数据发送到目标存储或系统。常见的 Output 包括 Elasticsearch(用于日志分析和搜索)、Redis(缓存或消息队列)、MySQL 或其他关系型数据库(持久化存储)、甚至是邮件服务器(发送报警通知)等。
2.2 logstash数据流向
数据在 Logstash 中的流转过程如下
① 从某个数据源(如日志文件)通过 file 输入插件收集原始日志数据。
② 收集的数据进入 Filter 阶段,通过 grok 过滤器解析日志格式,提取有用信息,并可能通过 date 过滤器标准化时间戳。
③ 经过处理的事件被送至 Output 阶段,通过 elasticsearch 输出插件将结构化日志数据推送到 Elasticsearch 集群,以便后续的搜索、分析和可视化。
3.Kibana服务
Kibana: Kibana 是一个可视化平台,它可以对 Elasticsearch 中的数据进行深度分析和展示。通过构建丰富的仪表板和交互式图表,用户能够以直观的方式对日志数据进行实时监控、问题定位和趋势分析。
(二)ELK工作流程
通常情况下,ELK的工作流程如下
1.在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
2.Logstash 负责收集来自不同源的日志数据,将这些原始日志数据经过解析、过滤。而后存入 Elasticsearch
3.Elasticsearch 进行索引和存储
4.最后,用户可以通过 Kibana 对这些已结构化的日志数据进行查询、分析并生成可视化报告。并进行前端数据的展示。
(三)ELK的应用价值
ELK Stack的整体应用价值在于
构建集中式日志管理系统,提升运维效率。
实现实时监控和告警,保障系统稳定性。
助力企业实现大数据分析和BI需求,推动业务发展。
二、部署搭建ELK
环境准备
|------------|---------------------|------------------------------------------------|
| 主机名 | IP地址 | 安装服务 |
| node1 | 192.168.83.30 | elasticsearch-6.6.1 elasticsearch-head |
| node2 | 192.168.83.40 | elasticsearch-6.6.1 |
| http | 192.168.83.60 | logstash-6.6.1 httpd |
| kibana | 192.1768.83.100 | kibana-6.6.1 |
(一)搭建Elasticsearch集群
环境准备
|-------------------|-----------|-------------------------|
| IP地址 | 主机名 | 安装软件 |
| 192.168.83.30 | node1 | elasticsearch-6.6.1 |
| 192.168.83.40 | node1 | elasticsearch-6.6.1 |
1.安装JDK
最小化安装的需要使用yum install java -y 下载安装java环境,图形界面默认安装的java环境,不过默认的JDK环境是OPENJDK,建议安装jdk
使用脚本进行安装
cs
#!/bin/bash
JAVA=`find / -name *jdk*tar* -exec dirname {} \;`
#找到jdk的压缩包所在目录,并将设置为变量JAVA
JDK=`find / -name *jdk*tar* 2>>/dev/null |awk -F/ '{print $NF}'`
#找打jdk压缩包的名字,设置为变量JDK
cd ${JAVA}
tar xf ${JDK} -C /usr/local/
#切换到压缩包所在目录,并指定解压到/usr/local/目录下
JDKAPP=`find /usr/local/ -maxdepth 1 -type d |grep jdk|awk -F/ '{print $NF}'`
#找到解压后的目录名,并设置为变量名JDKAPP
ln -s /usr/local/${JDKAPP} /usr/local/jdk
#做软链接,便于shell环境识别命令
cat > /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=/usr/local/jdk
export PATH=\$JAVA_HOME/bin:\$PATH
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=\$JAVA_HOME/lib/:\$JRE_HOME/lib/
EOF
#修改环境变量
echo "请执行 source /etc/profile.d/jdk.sh 命令,刷新文件
2.安装elasticsearch
可以直接使用rmp包进行安装
3.修改配置文件
安装完毕后先修改配置文件再启动服务
两台服务器同样操作
cs
cluster.name: elk-cluster
#设置Elasticsearch集群的名称为 "elk-cluster"。
#这意味着所有带有相同cluster.name配置的Elasticsearch节点将会尝试加入同一个集群。
node.name: node1
#指定当前节点的名字为 "node1",进行区分,便于集群内部管理和监控集群中的各个节点。
path.data: /data/elk_data
#设置Elasticsearch数据存储路径,这是Elasticsearch存放索引数据的地方。
path.logs: /var/log/elasticsearch
#设置Elasticsearch日志文件的存放路径,Elasticsearch的所有日志都会写入到这个目录下的文件
bootstrap.memory_lock: false
#设置为 "false" 表示不锁定内存。
#若设为 true,Elasticsearch将尝试锁定全部分配给它的内存,防止在操作系统层面被交换到磁盘。
#在生产环境中,通常建议开启内存锁定以获得更好的性能和稳定性,但需要有足够的权限,并确保物理内存充足。
network.host: 0.0.0.0
#设置为 "0.0.0.0",表示Elasticsearch节点监听所有可用网络接口上的连接请求,对外提供服务。
http.port: 9200
#设置HTTP协议的服务端口为 "9200"
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#设置Elasticsearch集群发现机制的初始节点列表,这里包含了 "node1" 和 "node2" 两个节点地址。
#集群中的节点通过互相ping这些地址来发现彼此并组建集群。
#在启动过程中,节点会尝试联系这个列表中的其他节点来参与集群。
修改完毕后启动服务
4.使用浏览访问节点信息
cs
"name": "node1"
表明此节点在Elasticsearch集群中的名称为"node1"。
"cluster_name": "elk-cluster"
表示此节点属于名为"elk-cluster"的Elasticsearch集群。
"cluster_uuid": "DyYgn-Z2TumAOAs1xPU7iQ"
是集群的唯一标识符,用于区分不同的Elasticsearch集群。
"version"
对象中包含有关Elasticsearch版本的具体信息:
"number": "6.6.1"
表示Elasticsearch的版本号为6.6.1。
"build_flavor": "default"
说明构建类型为默认版本。
"build_type": "rpm"
指出此版本是通过RPM包构建的,适用于基于RPM包管理系统的Linux发行版,如Red Hat或CentOS。
"build_hash": "1fd8f69"
构建哈希值,用于标识具体的构建版本。
"build_date": "2019-02-13T17:10:04.160291Z"
构建日期和时间,说明此版本是在2019年2月13日17点10分04秒UTC时间构建的。
"build_snapshot": false
表示这是一个正式发布的版本,而非snapshot快照版本。
"lucene_version": "7.6.0"
使用的Lucene搜索引擎内核版本为7.6.0。
"minimum_wire_compatibility_version": "5.6.0"
标明此Elasticsearch版本支持的最低网络通信兼容版本为5.6.0,即与5.6.0及以上版本的节点可以正常通信。
"minimum_index_compatibility_version": "5.0.0"
表示此Elasticsearch版本能够处理的最小索引兼容版本为5.0.0,即可以读取和管理5.0.0及以上版本创建的索引。
"tagline": "You Know, for Search"
Elasticsearch的标志性标语,强调它是一款强大的搜索工具
浏览器访问 http://192.168.10.13:9200/_cluster/health?pretty 查看健康情况
绿色:健康 数据和副本 全都没有问题
红色:数据都不完整
黄色:数据完整,但副本有问题
5.安装插件
为了更加直观的查看节点信息,可以安装elasticsearch-head插件
Elasticsearch-Head 是一个针对 Elasticsearch 的开源 web 界面管理工具,它提供了简洁直观的方式来查看和管理 Elasticsearch 集群的各项信息,包括但不限于索引列表、文档内容、节点状态、分片分布、集群健康状况、性能统计等。这个工具特别适合于日常的 Elasticsearch 集群运维和监控任务,因为它提供了比原生 REST API 更为友好的图形化界面。
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
cs
[root@node1 opt]#ls
elasticsearch-6.6.1.rpm elasticsearch-head.tar.gz node-v8.2.1.tar.gz
phantomjs-2.1.1-linux-x86_64.tar.bz2
#准备好elasticsearch-head、node、phantomjs三个软件包
5.1 安装node
cs
[root@node1 opt]#yum install gcc gcc-c++ make -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
....................
#安装编译环境
[root@node1 opt]#tar xf node-v8.2.1.tar.gz
#解压软件包
[root@node1 opt]#cd node-v8.2.1/
[root@node1 node-v8.2.1]#./configure
......
[root@node1 node-v8.2.1]#make -j 4 && make install
......
#安装过程会有点久,需要耐心等待
5.2 安装phantomjs
cs
[root@node1 opt]#tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
#解压至/usr/local/src/
[root@node1 opt]#cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
[root@node1 bin]#ls
phantomjs
[root@node1 bin]#cp phantomjs /usr/local/bin/
#将命令拷贝到/usr/local/bin/,使phantomjs命令在任何目录下都可以使用
5.3 安装Elasticsearch-head
cs
[root@node1 bin]#cd /opt
[root@node1 opt]#tar xf elasticsearch-head.tar.gz -C /usr/local/src/
[root@node1 opt]#cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]#ls
Dockerfile grunt_fileSets.js package.json README.textile
Dockerfile-alpine index.html package-lock.json _site
elasticsearch-head.sublime-project LICENCE plugin-descriptor.properties src
Gruntfile.js node_modules proxy test
[root@node1 elasticsearch-head]#npm install
#执行npm install,安装所有依赖项(node_modules目录下)
......
5.4 修改Elasticsearch主配置文件
cs
http.cors.enabled: true #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有
5.5 启动elasticsearch-head服务
必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败
5.6 使用浏览器访问
首先使用浏览器访问服务器的9100端口,因为elasticsearch-head 监听的端口是 9100
6.插入索引
cs
curl
#是一个用于发送HTTP请求的命令行工具。
-X PUT
#指定了HTTP方法为PUT,这里用于在Elasticsearch中创建或更新文档。
'localhost:9200/index-demo1/test/1'
#请求的目标URL,其中:
#localhost:9200 是Elasticsearch服务的主机地址和端口。
#index-demo1 是要操作的索引名称。
#test 是索引下的类型
#1 是待插入或更新的文档ID。
?pretty&pretty
#两个pretty参数用于美化返回的结果,使其更易阅读。
-H 'Content-Type: application/json'
#指定请求头中的Content-Type为application/json,说明传输的数据格式是JSON。
-d '{"user":"lisi","mesg":"hello"}'
#-d 参数后面跟着的是要发送的实际数据,这里是一个简单的JSON对象,
#表示要插入的文档内容,包含两个字段:user 和 mesg。
综合起来,这个命令的作用是在Elasticsearch的index-demo1索引中(如果索引不存在,
Elasticsearch将在插入文档时自动创建索引),创建或更新一个ID为1的文档,文档内容
是{"user": "lisi", "mesg": "hello"}。如果索引已存在且ID为1的文档也已存在,则
会更新该文档内容;否则,会创建一个新的文档。
在浏览器访问查看索引信息,可以看见索引默认被分片5个,并且有一个副本(在node2)备份文件
(二)搭建Logstash
环境准备
|-------------------|----------|------------------------------|
| IP地址 | 主机名 | 安装软件 |
| 192.168.83.30 | http | logstash-6.6.1 httpd |
Logstash 一般部署在需要监控其日志的服务器。Logstash部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。
1.下载http服务
yum install httpd -y
2.安装java环境
同样使用脚本进行安装
3.安装logstash
准备好rpm包,直接使用rpm命令安装
4.测试logstash
Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
命令解释
cs
logstash -e 'input { stdin{} } output { stdout{} }'
logstash 、
#这是Logstash命令行工具,用于处理和传输数据。
-e
#这是一个命令行参数,允许用户在命令行中直接指定Logstash的配置字符串,而不是从配置文件中读取。
配置字符串内容详解:
input { stdin{} }
#定义了一个输入插件(input plugin),这里是stdin,表示从标准输入(键盘输入)读取数据。
#当运行这个命令后,可以开始在终端窗口输入数据,这些数据会被Logstash捕获。
output { stdout{} }
#定义了一个输出插件(output plugin),这里是stdout,表示将处理过的数据输出到标准输出(屏幕)
#因此,当在终端输入数据后,Logstash会捕获这些数据并将其打印回同一终端窗口
输出信息解释
cs
"host"=> "http"
#这是一个字段,表示产生这条日志事件的源头主机名或地址。
@timestamp => 2024-04-10T10:29:14.908Z,
#这是Elasticsearch和Logstash中通用的时间戳字段,记录了该事件发生的时间。
#在这个例子中,事件发生在2024年4月10日10点29分14.908秒(协调世界时,UTC)。
"message"=> "192.168.83.40"
#这是日志消息的主要内容,即原始日志文本,此处记录的是一个具体的IPv4地址192.168.83.40。
@version"=> "1"
#表示日志事件的版本信息,这里标记为1,是Logstash标准化事件格式的一部分。
在实际生产环境中,Logstash通常会连接到更复杂的数据源(如文件、数据库、网络接口等)并将数据输出到长期存储(如Elasticsearch)或其他系统(如消息队列、文件等)
使用logstash将信息写入Elasticsearch中
通过浏览器可以查看到索引信息
5.定义logstash配置文件
Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch
cs
input { #定义input部分
file{ #指定路径读取日志数据
path =>"/var/log/messages" #监控的日志文件路径
type =>"logs" #设置了输入数据的类型为"logs",自定义
start_position =>"beginning"
#指定从文件的开头开始读取日志,即使Logstash在此之前已经运行过,也会重新读取整个文件。
}
#注意空格位置,与file插件的f字母对齐,运行在java环境下的程序,对空格与缩进要求比较高
}
output { #定义input部分
elasticsearch { #将处理过的数据发送到Elasticsearch集群。
hosts => ["192.168.83.30:9200"] #指定了Elasticsearch集群的地址和端口
index =>"logs-%{+YYYY.MM.dd}"
#设置了输出索引的名称,其中 %{+YYYY.MM.dd} 是一个动态时间格式化表达式,
#表示每天创建一个新的索引,索引名称会随着日期的变化而变化,例如:"logs-2024.04.11"。
}
#同样注意对齐
}
(三)安装kibana
环境准备
|-------------------|------------|------------------|
| IP地址 | 主机名 | 安装软件 |
| 192.168.83.30 | kibana | kibana-6.6.1 |
将kibanaan安装在节点1机器上,也可以使用新的机器进行安装
修改配置文件
cs
server.port: 5601
#指定了Kibana服务监听的HTTP端口,Kibana Web界面将通过这个端口提供服务
server.host: "0.0.0.0"
#配置了Kibana服务绑定的主机地址。这里的"0.0.0.0"意味着Kibana将监听所有的网络接口
elasticsearch.hosts: ["http://192.168.83.30:9200"]
#指定了Kibana与之通信的Elasticsearch集群地址和端口。在这个配置下,
#Kibana将连接到IP地址为192.168.83.30的服务器上的Elasticsearch服务,该服务监听9200端口。
kibana.index: ".kibana"
#设定Kibana在Elasticsearch中用于存储其元数据、配置信息和索引模式的索引名称,
#默认为".kibana"。这个索引是Kibana的核心配置和状态存储库。
使用浏览器访问elasticsearch服务器
可以看到已经存在了.kibana的索引信息,而后使用浏览器访问kinaba服务器
创建模块索引
使用模块索引查看信息
也可以指定查看字段信息
(四)监控Apache服务器日志
将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
1.开启apache服务
2.添加监听信息
3.加载配置文件
执行:logstash -f /etc/logstash/conf.d/apache.conf命令
启动Logstash,并加载指定的配置文件来运行数据处理管道
使用浏览器访问elasticsearch服务
同样可以在kibana服务中创建模块索引进行查看
三、搭建ELK+filebeat
环境准备
|--------------|---------------------|------------------------------------------------|
| 主机名 | IP地址 | 安装服务 |
| node1 | 192.168.83.30 | elasticsearch-6.6.1 elasticsearch-head |
| node2 | 192.168.83.40 | elasticsearch-6.6.1 |
| http | 192.168.83.60 | logstash-6.6.1 httpd |
| kibana | 192.1768.83.100 | kibana-6.6.1 |
| filebeat | 192.168.83.50 | filebeat-6.6.1 |
(一)Filebeat基本介绍
Filebeat是Elastic Beats系列中的一个轻量型日志采集器,它主要用于从服务器上的日志文件中读取数据,并将这些数据转发到Elasticsearch、Logstash或其他输出目的地进行存储、分析和可视化。Filebeat设计目标是在尽可能减少资源消耗的前提下高效地收集日志数据。
使用Filebeat的好处包括:
轻量级:Filebeat占用系统资源少,适合部署在生产环境中进行实时日志收集。
模块化:Filebeat包含许多预配置的模块,可以直接使用这些模块快速地从常见服务(如Apache、Nginx、MySQL等)的日志文件中收集数据。
灵活性:支持自定义配置,可以根据实际需求配置哪些文件需要收集,以及如何解析这些文件中的日志内容。
高效性:Filebeat仅读取和传输日志文件中的新增内容,而非全量读取,降低了对系统IO的影响。
可靠传输:Filebeat具有内置的重试和缓冲机制,确保日志数据能够安全到达目标系统,如Elasticsearch或Logstash。
扩展性:可以与Elasticsearch、Logstash、Kibana等工具紧密结合,形成一套完整的日志收集、处理、存储和分析解决方案。
(二)部署ELK+filebeat
1.下载安装filebeat
2.修改yml文件
该配置文件主要分为三个部分
cs
filebeat.inputs: #输入配置
- type: log #Filebeat被配置为从磁盘上的日志文件收集数据,类型(type)为"log"。
enabled: true #表示启用这个输入模块。
paths #列表中指定了两个日志文件路径,表示从这两个文件中获取日志信息
/var/log/messages #这是Linux系统中的系统日志文件。
/var/log/*.log #这个通配符路径会匹配/var/log目录下所有以.log结尾的日志文件。
fields: #附加字段
#在每个收集到的日志事件上添加额外的上下文信息,方便在Elasticsearch中做进一步的筛选和分析
service_name: filebeat_server
#定义了一个名为service_name的字段,并赋值为filebeat_server。
log_type: log
#定义了一个名为log_type的字段,并赋值为log。
service_id: 192.168.83.50
#定义了一个名为service_id的字段,并赋值为192.168.83.50。
#输出配置。
output.logstash:
#表示输出类型为Logstash。Filebeat被配置将收集到的数据发送到Logstash
hosts: ["192.168.83.60:5044"]
#指定了Logstash服务器的地址和监听端口,Filebeat将会把收集到的日志事件推送到这个地址。
3.修改logstash服务配文文件
cs
input {
#输入部分,这部分配置了Logstash接收来自Beats(如Filebeat、Metricbeat等)的数据输入方式:
beats {
port => "5044"
}
}
#在这段配置中,Logstash监听5044端口,等待接收来自Beats客户端的数据。
#这意味着Filebeat等Beats产品在收集到日志或监控数据后,会通过TCP协议将数据发送到这个端口。
output {
#输出配置: 这部分配置了Logstash将处理完的数据输出到Elasticsearch:
elasticsearch {
hosts => ["192.168.83.30:9200"]
#指定输出的elasticsearch集群的IP地址及端口号
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
#index字段指定了Elasticsearch中索引的名称格式,采用动态索引命名策略,
#索引名称由fields字段下的service_name字段值与当前日期(格式为YYYY.MM.dd)拼接而成
}
}
#在这段配置中,Logstash将处理后的数据发送到Elasticsearch集群,集群地址为192.168.83.30,
#端口为9200。这意味着每条数据将根据其携带的service_name字段值和数据处理当天的日期生成
#唯一的索引名称。
#综上所述,Logstash通过这段配置接收来自Beats的数据,并将其输出到指定的Elasticsearch集群,
#同时根据数据中的service_name字段值按天划分索引,便于后期日志管理和分析。
4.查看信息
访问elasticsearch服务进行查看
可以查看到filebeat的索引信息
创建模块索引
查看模块索引
这样就可以看到filebeat应用服务器上的/var/log/messages以及/var/log/目录下所有以.log结尾的文件,也就是除指定的其它日志文件位置与名称,可以收集到该服务器当中所有的日志信息
总结
ELK在多种场景下都发挥着重要作用,包括但不限于
系统和应用日志监控:实时查看系统运行状态,快速定位故障原因。
业务数据分析:通过对大量业务日志的深度挖掘,获取用户行为模式、产品性能表现等关键信息,驱动产品迭代与优化。
安全审计:记录并追踪系统操作行为,为安全事件回溯提供依据。
不过在使用的过程中需要注意的几个点
1.版本兼容性问题
因为安装ELK的软件较多,所以在选择版本时,需要选择相对应的版本,防止因为版本不兼容问题,导致日志信息无法收集,作为运维人员,需要即使进行版本迭代,不仅帮助自己更好的进行日常巡检,也为开发人员提高有效信息
2.yml文件的配置
因为ELK的应用基本都是运行在java环境下,在进行yml文件编辑时,一定要注意空格的问题,这涉及到配置文件的层级问题,例如input属于一级标题,file为二级标题,file字段就需要进行缩进,以此类推
在生产环境中,这十分致命,因为它不会有报错信息,在查找问题时无从下手,这就需要一定的经验累积
3.数据流向问题
数据流向是我们运维人员在进行故障处理时,必须要掌握的知识点,到底是logstash没有接收到应用服务器的日志信息,还是接收到之后没有发送到elasticsearch服务,这对于我们进行排查错误信息非常重要,能够快速的解决故障问题,不仅仅是在ELK服务中。
在生产环境中还会有一些其它的问题会发生,这就需要我们平时的日积月累,积攒经验,才能够有效的排除故障问题,完成好项目