Linux ELK内存分配问题 (linux elk无法分配内存)
ELK是目前市面上更流行的日志管理系统之一,它由三个组件组成:Elasticsearch、Logstash和Kibana。它们共同构成了一个可拓展的实时日志系统,使得我们可以快速分析海量的数据,并追踪系统的运行情况和异常。不过,随着ELK的应用范围不断扩大,很多用户也开始遇到了内存分配问题。
Linux环境下的内存分配机制具有很大的不确定性,这也是导致ELK内存分配问题的主要原因。因此,在使用ELK的过程中,我们需要合理配置内存大小,以避免因内存不足而产生的问题。
具体来说,ELK系统的内存分配问题表现为以下两种:
1.OutOfMemoryError(内存不足错误)
当ELK系统的内存使用率达到更大值时,就会出现OutOfMemoryError(内存不足错误),导致系统无法正常运行。
解决方法:
我们需要明确一点,OutOfMemoryError并不一定是因为整个系统内存不足所导致的。这种错误可能是由于分配给Java虚拟机的堆内存过小所导致,因此我们需要优先考虑增加堆内存大小来解决内存不足问题。同时,我们还可以尝试通过配置JVM参数来优化ELK的内存使用率,例如,调整垃圾回收机制策略、增加JVM线程池大小等。
2.Swapping(内存交换)
ELK系统当中,Java虚拟机与Elasticsearch进程通常运行在同一台机器上,而内存交换则可能会对性能造成巨大的影响。当系统内存不足时,Linux会将程序使用的物理内存通过磁盘虚拟内存的形式换出,这样会导致硬盘I/O的压力增加,从而严重影响系统的响应速度和可用性。
解决方法:
为了避免Swapping,我们需要保证系统运行中的Elasticsearch进程有足够的内存可用,通常情况下,需要将Elasticsearch进程运行在独立的服务器上,以便更好地管理和控制内存分配。同时,我们还可以尝试通过更好的代码和算法优化来减少内存使用率。
总体而言,ELK系统的内存分配问题需要合理配置,以便提高系统的稳定性和可用性。此外,我们还可以根据不同的应用场景来调整系统的内存分配大小,从而更好地发挥其性能优势。
相关问题拓展阅读:
- ELK应用之Filebeat
- 如何在CentOS 7上安装Elastic Stack
ELK应用之Filebeat
Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
官方网址:
Filebeat涉及两个组件:查找器prospector和采集器harvester,来读取文件(tail file)并将事件数据发送到指定的输出。
启动Filebeat时,它会启动一个或多个查找器,查看你为日志文件指定的本地让亮路径。对于prospector所在的每个日志文件,prospector启动harvester。每个harvester都会为新内容读取单个日志文件,并将新日志数据发送到libbeat,后者将聚合事件并将聚合数据发送到你为Filebeat配置的输出。
当发送数据到Logstash或Elasticsearch时,Filebeat使用一个反压力敏感(backpressure-sensitive)的协议来解释高负荷的数据量。当Logstash数据处理繁忙时,Filebeat放慢它的读取速度。一旦压力解除,Filebeat将恢复到原来的速度,继续传输数据。
Harvester负责读取单个文件的内容。读取每个文件,并将内容发送到the output,每个文件启动一个harvester, harvester负责打开和关闭文件,这意味着在运行时文件描述符保持打开状态。
如果文件在读取时被删除或重命名,Filebeat将继续读取文件。这有副作用,即在harvester关闭之前,磁盘岩滑猛上的空间被保留。默认情况下,Filebeat将文件保持打开状态,直到达到close_inactive状态
关闭harvester会产生以下结果:
1)如果在harvester仍在读取文件时文件被删除,则关闭文件句柄,释放底层资源。
2)文件的采集只会在scan_frequency过后重新开始。
3)如果在harvester关闭的情况下移动或移除文件,则不会继续处理文件。
要控制收割机何时关闭,请使用close_ *配置选项
Prospector负责管理harvester并找到所有要读取的文件来源。如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。每个prospector都在自己的Go协程中运行。
Filebeat目前支持两种prospector类型:log和stdin。每个prospector类型可以定义多次。日志prospector检查每个文件来查看harvester是否需要启动,是否已经运行,或者该文件是否可以粗桥被忽略(请参阅ignore_older)。
只有在harvester关闭后文件的大小发生了变化,才会读取到新行。
注:Filebeat prospector只能读取本地文件,没有功能可以连接到远程主机来读取存储的文件或日志。
配置文件:$FILEBEAT_HOME/filebeat.yml。Filebeat可以一次读取某个文件夹下的所有后缀名为log的文件,也可以读取指定的某一个后缀名为log的文件。
配置文件详解(
)
(1)字段解释
paths: 指定要监控的日志,目前按照Go语言的glob函数处理。没有对配置目录做递归处理,比如配置的如果是:
/var/log/* /*.log
则只会去/var/log目录的所有子目录中寻找以”.log”结尾的文件,而不会寻找/var/log目录下以”.log”结尾的文件。
encoding: 指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的。
input_type: 指定文件的输入类型log(默认)或者stdin。
exclude_lines: 在输入中排除符合正则表达式列表的那些行。
include_lines: 包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines。
exclude_files: 忽略掉符合正则表达式列表的文件(默认为每一个符合paths定义的文件都创建一个harvester)。
fields: 向输出的每一条日志添加额外的信息,比如”level:debug”,方便后续对日志进行分组统计。默认情况下,会在输出信息的fields子目录下以指定的新增fields建立子目录,
fields_under_root: 如果该选项设置为true,则新增fields成为顶级目录,而不是将其放在fields目录下。自定义的field会覆盖filebeat默认的field。
ignore_older: 可以指定Filebeat忽略指定时间段以外修改的日志内容,比如2h(两个小时)或者5m(5分钟)。
close_older: 如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle。默认1h。
force_close_files: Filebeat会在没有到达close_older之前一直保持文件的handle,如果在这个时间窗内删除文件会有问题,所以可以把force_close_files设置为true,只要filebeat检测到文件名字发生变化,就会关掉这个handle。
scan_frequency: Filebeat以多快的频率去prospector指定的目录下面检测文件更新(比如是否有新增文件),如果设置为0s,则Filebeat会尽可能快地感知更新(占用的CPU会变高)。默认是10s。
document_type: 设定Elasticsearch输出时的document的type字段,也可以用来给日志进行分类。
harvester_buffer_size: 每个harvester监控文件时,使用的buffer的大小。
max_bytes: 日志文件中增加一行算一个日志事件,max_bytes限制在一次日志事件中最多上传的字节数,多出的字节会被丢弃。默认是10MB。
multiline: 适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈。这个配置的下面包含如下配置:
pattern: 多行日志开始的那一行匹配的pattern
negate: 是否需要对pattern条件转置使用,不翻转设为true,反转设置为false。
match: 匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志
max_lines: 合并的最多行数(包含匹配pattern的那一行),默认为500行。
timeout: 到了timeout之后,即使没有匹配一个新的pattern(发生一个新的事件),也把已经匹配的日志事件发送出去
tail_files: 如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,而不是从文件开始处重新发送所有内容。
backoff: Filebeat检测到某个文件到了EOF之后,每次等待多久再去检测文件是否有更新,默认为1s。
max_backoff: Filebeat检测到某个文件到了EOF之后,等待检测文件更新的更大时间,默认是10秒。
backoff_factor: 定义到达max_backoff的速度,默认因子是2,到达max_backoff后,变成每次等待max_backoff那么长的时间才backoff一次,直到文件有更新才会重置为backoff。比如:
如果设置成1,意味着去使能了退避算法,每隔backoff那么长的时间退避一次。
spool_size: spooler的大小,spooler中的事件数量超过这个阈值的时候会清空发送出去(不论是否到达超时时间),默认1MB。
idle_timeout: spooler的超时时间,如果到了超时时间,spooler也会清空发送出去(不论是否到达容量的阈值),默认1s。
registry_file: 记录filebeat处理日志文件的位置的文件
config_dir: 如果要在本配置文件中引入其他位置的配置文件,可以写在这里(需要写完整路径),但是只处理prospector的部分。
publish_async: 是否采用异步发送模式(实验功能)。
具体的一个yml采集配置样例如下:该配置文件是filebeat采集数据的依据,并根据需求添加必要配置,filebeat收集日志后发往logstash,配置如下:
cd FILEBEAT_HOME
nohup ./bin/filebeat -f config/test.conf >>/FILEBEAT_HOME/logs/filebeat.log &
后台启动filebeat,配置对应的参数
启动多个filebeat配置,新建一个目录(conf)存放多个filebeat的配置文件,
#nohup ./bin/filebeat -f conf/* >>/FILEBEAT_HOME/logs/filebeat.log &
注意:一台服务器只能启动一个filebeat进程。
ps -ef |grep filebeat
kill -9 $pid
注意: 非紧急情况下,杀掉进程只能用优雅方式。
A、filebeat运行不成功
问题:配置文件格式有问题,配置文件遵循yml文件格式, 多或少一个空格 都会导致启动问题,可以使用cmd命令窗口到filebeat安装路径下,使用filebeat.exe –c filebeat.yml 查看报错,也可以看filebeat路径下的log文件夹中的filebeat文件
B、 filebeat之一次运行成功无数据
问题:a、路径有问题
b、运行条件设置有问题(例如只采集某个条件下的数据,文件中没有符合条件的数据,这种情况下先注释掉采集条件测试一下)
C、filebeat运行成功之一次运行后有数据,第二次无数据
问题:filebeat读取文件后会生成一个registry文件,注意windows机器中这个文件在手动启动的情况下会在filebeat安装目录下的data文件夹中,服务注册启动的情况下会在C盘下隐藏文件夹C:\ProgramData\filebeat中,删除掉这个就可以了
D、filebeat运行成功有数据,但是新添加数据不读取问题
问题:filebeat传输存在反压机制,在数据量特别大或者传输通道不通的情况下,filebeat会进行反压,暂停发送,等到数据量稳定或者数据传输通道正常的之后才会发送
Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用时继续读取文件。
在Filebeat运行时,每个prospector内存中也会保存文件状态信息,当重新启动Filebeat时,将使用注册文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
每个prospector为它找到的每个文件保留一个状态。由于文件可以被重命名或移动,因此文件名和路径不足以识别文件。对于每个文件,Filebeat存储唯一标识符以检测文件是否先前已被采集过。
如果你使用的案例涉及每天创建大量新文件,你可能会发现注册文件增长过大。请参阅注册表文件太大?编辑有关你可以设置以解决此问题的配置选项的详细信息。
Filebeat保证事件至少会被传送到配置的输出一次,并且不会丢失数据。 Filebeat能够实现此行为,因为它将每个事件的传递状态存储在注册文件中。
在输出阻塞或未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到接收端确认已收到。如果Filebeat在发送事件的过程中关闭,它不会等待输出确认所有收到事件。
发送到输出但在Filebeat关闭前未确认的任何事件在重新启动Filebeat时会再次发送。这可以确保每个事件至少发送一次,但最终会将重复事件发送到输出。
也可以通过设置shutdown_timeout选项来配置Filebeat以在关闭之前等待特定时间。
注意:Filebeat的至少一次交付保证包括日志轮换和删除旧文件的限制。如果将日志文件写入磁盘并且写入速度超过Filebeat可以处理的速度,或者在输出不可用时删除了文件,则可能会丢失数据。
在Linux上,Filebeat也可能因inode重用而跳过行。有关inode重用问题的更多详细信息,请参阅filebeat常见问题解答。
Logback日志切割用的是JDK里File#renameTo()方法。如果该方法失败,就再尝试使用复制数据的方式切割日志。查找该方法相关资料得知,只有当源文件和目标目录处于同一个文件系统、同volumn(即windows下的C, D盘)下该方法才会成功,切不会为重命名的后的文件分配新的inode值。也就是说,如果程序里一直保存着该文件的描述符,那么当程序再写日志时,就会向重命名后的文件中写。那么问题来了,filebeat是会一直打开并保存文件描述符的,那么它是怎么得知日志被切割这件事的呢?
如果只用当前文件描述符一路监控到天黑的话,那么当logback把日志重命名后,filebeat仍然会监控重命名后的日志,新创建的日志文件就看不到了。实际上,filebeat是通过close_inactive和scan_frequency两个参数(机制)来应对这种情况的:
(1)close_inactive
该参数指定当被监控的文件多长时间没有变化后就关闭文件句柄(file handle)。官方建议将这个参数设置为一个比文件更大更新间隔大的值。比如文件最长5s更新一次,那就设置成1min。默认值为5min。
(2)scan_frequency
该参数指定Filebeat搜索新文件的频率(时间间隔)。当发现新的文件被创建时, Filebeat会为它再启动一个 harvester 进行监控,默认为10s。
综合以上两个机制,当logback完成日志切割后(即重命名),此时老的harvester仍然在监控重命名后的日志文件,但是由于该文件不会再更新,因此会在close_inactive时间后关闭这个文件的 harvester。当scan_frequency时间过后,Filebeat会发现目录中出现了新文件,于是为该文件启动 harvester 进行监控。这样就保证了切割日志时也能不丢不重的传输数据。(不重是通过为每个日志文件保存offset实现的)
如何在CentOS 7上安装Elastic Stack
步骤 1 – 操作系统初始化
禁用腊租旁 CentOS 7 服务器上的 SELinux
我们将禁用 CentOS 7 服务器上的 SELinux。 编辑 SELinux 配置文件。
vim /etc/sysconfig/selinux
将 SELINUX 的值从 enforcing改成disabled
SELINUX=disabled
然后重启服务器:
reboot
再次登录服务器并检查 SELinux 状态。
getenforce
disabled
步骤 2 – 安装 Java环境
部署 Elastic stack 依赖于Java,Elasticsearch 需要 Java 8 版本,推荐使用 Oracle JDK 1.8 。从官方的 Oracle rpm 包安装 Java 8。
wget
\\下载java8的版本
rpm -ivh jdk-8u77-linux-x64.rpm\\rpm安装jdk环境
java -version\\查看java的版本 检查能否工作
步轮橡骤 3 – 安装和配置 Elasticsearch
在此步骤中,我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch,并将其配置运行在 localhost 上(以确保该程序安全,而且不能从外部访问)。
将 elastic.co 的密钥添加到服务器
elastic.co网站是一个https的网站(私有证书),我们需要添加证书秘钥才能安全的顺利下载。
rpm –import
步骤 3 – 安装和配置 Elasticsearch
在此步骤中,我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch,并将其配置运行在 localhost 上(以确保该程序安全,而且不能从外部访问)。
将 elastic.co 的密钥添加到服务器
elastic.co网站是一个https的网站(私有证书),我们需要添加证书秘钥才能安全的顺利下载。
rpm –import
下载安装 Elasticsearch 5.1
wget
rpm -ivh elasticsearch-5.1.1.rpm
安装完成后型唯我们编辑配置文件
配置文件名称:elasticsaerch.yml
cd /etc/elasticsearch/
vim elasticsearch.yml
bootstrap.memory_lock: true
\\去掉第 40 行的注释,启用 Elasticsearch 的内存锁。这将禁用 Elasticsearch 的内存交换。
network.host: localhost
http.port: 9200
\\在 Network 块中,取消注释 network.host 和 http.port 行。
编辑 elasticsearch.service 文件的内存锁配置。
vim /usr/lib/systemd/system/elasticsearch.service
MAX_LOCKED_MEMORY=unlimited
\\去掉第 60 行的注释,确保该值为 unlimited。
设置服务启动
Elasticsearch监听端口号9200,启用 CentOS 服务器上启用mlockall 来禁用内存交换,设置Elasticsearch开机自启动,然后启动服务。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
检查对外监听端口:
netstat -plntu
内存锁启用 mlockall,检查 Elasticsearch 是否正在运行。
curl -XGET ‘localhost:9200/_nodes?filter_path=**.mlockall&pretty’
curl -XGET ‘localhost:9200/?pretty’
步骤 4 – 安装和配置 Kibana 和 Nginx
先安装Kibana,然后安装nginx,最后设置nginx反向代理kibana
安装并配置Kibana
wget
rpm -ivh kibana-5.1.1-x86_64.rpm
编辑 Kibana 配置文件。
vim /etc/kibana/kibana.yml
在配置文件中找的一下三行,修改配置
server.port: 5601
server.host: “localhost”
elasticsearch.url: “
“
将 Kibana 设为开机启动
sudo systemctl enable kibana
sudo systemctl start kibana
检查Kibana 对外监听端口 5601 确保其正常启动。
netstat -plntu
安装并配置nginx服务器
yum -y install epel-release
nginx 服务的yum包在epel包中可以找的 直接yum安装
yum -y install nginx httpd-tools
httpd-tools 软件包包含 Web 服务器的工具,可以为 Kibana 添加 htpasswd 基础认证。
编辑 Nginx 配置文件并删除 server {}模块,这样我们添加新的虚拟主机配置。
cd /etc/nginx/
vim nginx.conf
\\删除 server { } 块。
创建kibana.conf的虚拟主机:
vim /etc/nginx/conf.d/kibana.conf
server {
listen 80;
server_name elk-stack.co;
auth_basic “Restricted Access”;
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
使用 htpasswd 命令创建一个新的基本认证文件。
sudo htpasswd -c /etc/nginx/.kibana-user admin
“输入你的密码”
启动 Nginx。
nginx -t
systemctl enable nginx
systemctl start nginx
步骤 5 – 安装和配置 Logstash
在此步骤中,我们将安装 Logstash,并将其配置为:从配置了 filebeat 的 logstash 客户端里集中化服务器的日志,然后过滤和转换 Syslog 数据,并将其移动到存储中心(Elasticsearch)中。
下载 Logstash 并使用 rpm 进行安装。
wget
rpm -ivh logstash-5.1.1.rpm
生成新的 SSL 证书文件,以便客户端可以识别 elastic 服务端。
cd /etc/pki/tls
\\ 进入 tls 目录并编辑 openssl.cnf 文件。
vim openssl.cnf
在 部分添加服务器标识。
# Server IP Address
subjectAltName = IP: 10.0.15.10
使用 openssl 命令生成证书文件。
openssl
req -config /etc/pki/tls/openssl.cnf -x509 -dayatch -nodes
-newkey rsa:2023 -keyout /etc/pki/tls/private/logstash-forwarder.key
-out /etc/pki/tls/certs/logstash-forwarder.crt
证书文件可以在 /etc/pki/tls/certs/ 和 /etc/pki/tls/private/ 目录中找到。
接下来,我们会为
Logstash 创建新的配置文件。创建一个新的 filebeat-input.conf 文件来为 filebeat 配置日志源,然后创建一个
syslog-filter.conf 配置文件来处理 syslog,再创建一个 output-elasticsearch.conf
文件来定义输出日志数据到 Elasticsearch。
转到 logstash 配置目录,并在 conf.d 子目录中创建新的配置文件。
cd /etc/logstash/
vim conf.d/filebeat-input.conf
输入配置,粘贴以下配置:
input {
beats {
port => 5443
ssl => true
ssl_certificate => “/etc/pki/tls/certs/logstash-forwarder.crt”
ssl_key => “/etc/pki/tls/private/logstash-forwarder.key”
}
}
创建 syslog-filter.conf 文件
vim conf.d/syslog-filter.conf
粘贴以下配置:
filter {
if == “syslog” {
grok {
match => { “message” => “%{SYSLOGTIMESTAMP:syslog_timestamp}
%{SYSLOGHOST:syslog_hostname}
%{DATA:syslog_program}(?:\)?:
%{GREEDYDATA:syslog_message}” }
add_field =>
add_field =>
}
date {
match =>
}
}
}
我们使用名为 grok 的过滤器插件来解析 syslog 文件。
创建输出配置文件 output-elasticsearch.conf。
vim conf.d/output-elasticsearch.conf
output {
elasticsearch { hosts =>
hosts => “localhost:9200”
manage_template => false
index => “%{}-%{+YYYY.MM.dd}”
document_type => “%{}”
}
}
启动logstash服务
sudo systemctl enable logstash
sudo systemctl start logstash
步骤 6 – 在 CentOS 客户端上安装并配置 Filebeat
Beat
作为数据发送人的角色,是一种可以安装在客户端节点上的轻量级代理,将大量数据从客户机发送到 Logstash 或 Elasticsearch
服务器。有 4 种 beat,Filebeat 用于发送“日志文件”,Metricbeat 用于发送“指标”,Packetbeat
用于发送“网络数据”,Winlogbeat 用于发送 Windows 客户端的“事件日志”。
在本教程中,我将向您展示如何安装和配置 Filebeat,通过 SSL 连接将数据日志文件传输到 Logstash 服务器。
登录到客户端1的服务器上。 然后将证书文件从 elastic 服务器复制到客户端1的服务器上。
ssh root@client1IP
scp root@elk-serverIP:~/logstash-forwarder.crt .
…..
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
接下来,在客户端 1 服务器上导入 elastic 密钥。
rpm –import
下载 Filebeat 并且用 rpm 命令安装。
wget
rpm -ivh filebeat-5.1.1-x86_64.rpm
Filebeat 已经安装好了,请转到配置目录并编辑 filebeat.yml 文件。
cd /etc/filebeat/
vim filebeat.yml
\\ 在第 21 行的路径部分,添加新的日志文件。 我们将创建两个文件,记录 ssh 活动的 /var/log/secure 文件 ,以及服务器日志 /var/log/messages :
paths:
– /var/log/secure
– /var/log/messages
\\在第 26 行添加一个新配置来定义 syslog 类型的文件:
document-type: syslog
\\在 83 行和 85 行添加注释来禁用 Elasticsearch 输出,更改为 Logshtash:
–
#Elasticsearch output—
#output.elasticsearch:
# Array of hosts to connect to.
# hosts:
—
—-现在添加新的 logstash 输出配置
output.logstash:
# The Logstash hosts
hosts:
bulk_max_size: 1024
ssl.certificate_authorities:
template.name: “filebeat”
template.path: “filebeat.template.json”
template.overwrite: false
—
PS:Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。
将 Filebeat 设定为开机启动并启动。
sudo systemctl enable filebeat
sudo systemctl start filebeat
步骤 7 – 在 Ubuntu 客户端上安装并配置 Filebeat
从服务端拷贝证书文件
ssh root@ubuntu-clientIP
scp root@elk-serverIP:~/logstash-forwarder.crt .
…….
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
在服务器上导入 elastic 密钥。
wget -qO –
| sudo apt-key add –
下载 Filebeat .deb 包并且使用 dpkg 命令进行安装。
wget
dpkg -i filebeat-5.1.1-amd64.deb
转到配置目录并编辑 filebeat.yml 文件。
cd /etc/filebeat/
vim filebeat.yml
\\ 在第 21 行的路径部分,添加新的日志文件。 我们将创建两个文件,记录 ssh 活动的 /var/log/secure 文件 ,以及服务器日志 /var/log/messages :
paths:
– /var/log/secure
– /var/log/messages
\\在第 26 行添加一个新配置来定义 syslog 类型的文件:
document-type: syslog
\\在 83 行和 85 行添加注释来禁用 Elasticsearch 输出,更改为 Logshtash:
–
#Elasticsearch output—
#output.elasticsearch:
# Array of hosts to connect to.
# hosts:
—
—-现在添加新的 logstash 输出配置
output.logstash:
# The Logstash hosts
hosts:
bulk_max_size: 1024
ssl.certificate_authorities:
template.name: “filebeat”
template.path: “filebeat.template.json”
template.overwrite: false
—
PS:Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。
将 Filebeat 设定为开机启动并启动。
sudo systemctl enable filebeat
sudo systemctl start filebeat
检查服务状态:
systemctl status filebeat
打开您的网络浏览器,并访问您在 Nginx 中配置的 elastic stack 域名,我的是“elk-stack.co”。 使用管理员密码登录,然后按 Enter 键登录 Kibana 仪表盘。
创建一个新的默认索引 filebeat-*,然后点击“创建”按钮。
默认索引已创建。 如果 elastic stack 上有多个 beat,您可以在“星形”按钮上点击一下即可配置默认 beat。
转到 “发现” 菜单,您就可以看到 elk-client1 和 elk-client2 服务器上的所有日志文件。
来自 elk-client1 服务器日志中的无效 ssh 登录的 ON 输出示例。
使用其他的选项,你可以使用 Kibana 仪表盘做更多的事情。
Elastic Stack 已安装在 CentOS 7 服务器上。 Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。
返回列表上一篇:bt5和kali linux
linux elk无法分配内存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux elk无法分配内存,Linux ELK内存分配问题,ELK应用之Filebeat,如何在CentOS 7上安装Elastic Stack的信息别忘了在本站进行查找喔。