首页 > 系统相关 >centos7 ELK的搭建

centos7 ELK的搭建

时间:2022-12-12 14:33:53浏览次数:57  
标签:ELK system auth logstash centos7 Elasticsearch DATA Logstash 搭建

介绍

Elastic Stack 有四个主要组件:

Elasticsearch:一个分布式RESTful搜索引擎,存储所有收集的数据。 Logstash:Elastic Stack 的数据处理组件,将传入数据发送到 Elasticsearch。 Kibana:用于搜索和可视化日志的 Web 界面。 Beats:轻量级、单一用途的数据传送器,可以将数据从数百或数千台机器发送到 Logstash 或 Elasticsearch。


先决条件

yum install -y java-1.8.0-openjdk  //安装jdk.18
yum install -y vim* //安装vim编辑器
yum -y install net-tools //安装net-tools工具箱
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //开机时不要自动启动防火墙

安装和配置 Elasticsearch

Elastic Stack 的所有软件包都使用 Elasticsearch 签名密钥进行签名,以保护你的系统免受软件包欺骗。将导入 Elasticsearch 公共 GPG 密钥并添加 Elastic 包源列表以安装 Elasticsearch。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch    //导入GPG公共秘钥
添加软件包仓库,使用vim编辑软件仓库文件
vim /etc/yum.repos.d/elasticsearch.repo   //使用vim新建并编辑
软件包仓库版本信息如下(elasticsearch.repo内容)
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

然后安装 Elasticsearch组件

yum install -y elasticsearch
编辑Elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml

Elasticsearch 侦听来自 port 上各处的流量9200。需要限制对 Elasticsearch 实例的外部访问,以防止外部人员通过 REST API 读取您的数据或关闭您的 Elasticsearch 集群。找到指定的行network.host,取消注释,并将其值替换为localhost。

centos7 ELK的搭建_数据

在55行和59行,取消注释并修改如下

network.host: localhost
http.port: 9200

保存之后启动 Elasticsearch 服务

systemctl start elasticsearch   //开启 Elasticsearch 服务
systemctl enable elasticsearch //使 Elasticsearch 在每次服务器启动时自动启动
systemctl status elasticsearch //查看 Elasticsearch 状态是否正常运行

发送 HTTP 请求来测试 Elasticsearch 服务是否正在运行

curl -X GET "localhost:9200"

centos7 ELK的搭建_Elastic_02

安装和配置 Kibana 仪表板

安装 Kibana 组件

yum install -y kibana

编辑 Kibana 配置文件

vim /etc/kibana/kibana.yml

centos7 ELK的搭建_数据_03

将2行和7行的注释取消并修改如下

server.port: 5601
server.host: "0.0.0.0"

保存之后开启 Kibana 服务

systemctl start kibana    //开启 Kibana 服务
systemctl enable kibana //设置开机自动启动 Kibana 服务
systemctl status kibana //查看 Kibana 服务是否正常运行

看一下端口监听

172.16.10.191:5601    //服务器IP地址+5601端口号

安装和配置 Logstash

安装 Logstash

yum install -y logstash

安装 Logstash 后继续进行配置。Logstash 的配置文件以 JSON 格式编写并驻留在/etc/logstash/conf.d目录中。在配置它时,将 Logstash 视为一个管道,它在一端接收数据,以一种或另一种方式处理它,然后将其发送到它的目的地(在这种情况下,目的地是Elasticsearch)。Logstash 管道具有两个必需元素input和output和一个可选元素filter。输入插件使用来自源的数据,过滤器插件处理数据,输出插件将数据写入目的地。

创建一个名为的配置文件02-beats-input.conf,您将在其中设置 Filebeat 输入

vim /etc/logstash/conf.d/02-beats-input.conf

插入以下input配置信息并保存。这指定了一个beats将侦听 TCP 端口的输入5044。

input {
beats {
port => 5044
}
}

保存并关闭文件。创建一个名为 的配置文件10-syslog-filter.conf,我们将在其中添加系统日志过滤器,也称为syslogs

vim /etc/logstash/conf.d/10-syslog-filter.conf

插入以下 syslog 过滤器配置。此示例系统日志配置取自Elastic 官方文档。此过滤器用于解析传入的系统日志,以使它们结构化并可供预定义的 Kibana 仪表板使用

filter {
if [fileset][module] == "system" {
if [fileset][name] == "auth" {
grok {
match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
pattern_definitions => {
"GREEDYMULTILINE"=> "(.|\n)*"
}
remove_field => "message"
}
date {
match => [ "[system][auth][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
geoip {
source => "[system][auth][ssh][ip]"
target => "[system][auth][ssh][geoip]"
}
}
else if [fileset][name] == "syslog" {
grok {
match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
pattern_definitions => { "GREEDYMULTILINE" => "(.|\n)*" }
remove_field => "message"
}
date {
match => [ "[system][syslog][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
}

完成后保存并关闭文件。最后创建一个名为的配置文件30-elasticsearch-output.conf

vim /etc/logstash/conf.d/30-elasticsearch-output.conf

插入以下output配置。本质上,此输出将 Logstash 配置为将 Beats 数据存储在localhost:9200以所使用的 Beat 命名的索引中的 Elasticsearch 中 。

output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}

使用以下命令测试您的 Logstash 配置是否有语法错误

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

如果没有语法错误,会显示 Configuration OK

centos7 ELK的搭建_elasticsearch_04

启动并启用 Logstash 以使配置更改生效

systemctl start logstash    //启动 Logstash 服务
systemctl enable logstash //开机启动 Logstash 服务
systemctl status logstash //查看 Logstash 是否正常

安装和配置 Filebeat

Elastic Stack 使用几个称为 Beats 的轻量级数据传送器从各种来源收集数据并将它们传输到 Logstash 或 Elasticsearch。以下是 Elastic 目前提供的 Beats:

Filebeat:收集和发送日志文件。

Metricbeat:从您的系统和服务中收集指标。

Packetbeat:收集和分析网络数据。

Winlogbeat:收集 Windows 事件日志。

Auditbeat:收集 Linux 审计框架数据并监控文件完整性。

Heartbeat:通过主动探测监控服务的可用性。

安装 Filebeat

yum install -y filebeat

注意:与 Elasticsearch 一样,Filebeat 的配置文件是 YAML 格式。这意味着正确的缩进至关重要,因此请务必使用这些说明中指示的相同数量的空格。 Filebeat 支持多种输出,但通常只会将事件直接发送到 Elasticsearch 或 Logstash 以进行额外处理。这里我们将使用 Logstash 对 Filebeat 收集的数据进行额外处理。Filebeat 不需要直接向 Elasticsearch 发送任何数据,所以让我们禁用该输出。

...
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
...

然后,配置该output.logstash部分。取消注释这些行output.logstash:并hosts: [“localhost:5044”]删除#. 这会将 Filebeat 配置为连接到 Elastic Stack 服务器上5044的 Logstash 端口,我们之前为其指定了 Logstash 输入的端口

. . .
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
. . .

centos7 ELK的搭建_elasticsearch_05

Filebeat 的功能可以通过Filebeat 模块进行扩展。在这我们启用系统模块

filebeat modules enable system  //启用system模块
filebeat modules list //此命令查看启用和禁用模块的列表

接下来,将索引模板加载到 Elasticsearch 中。Elasticsearch 索引是具有相似特征的文档的集合。索引用一个名称标识,用于在其中执行各种操作时引用索引。创建新索引时将自动应用索引模板。

sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

​之后会输入一条 Loaded index template

随着仪表板的加载,Filebeat 连接到 Elasticsearch 以检查版本信息。要在启用 Logstash 时加载仪表板,您需要禁用 Logstash 输出并启用 Elasticsearch 输出​

sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

会看到如下输出

centos7 ELK的搭建_Elastic_06

启动并启用 Filebeat

systemctl start filebeat    //启动 Filebeat 服务
systemctl enable filebeat //开机启动 Filebeat 服务
systemctl status filebeat //查看 Filebeat 状态

如果正确设置了 Elastic Stack,Filebeat 将系统日志和授权日志传送到 Logstash,然后将这些数据加载到 Elasticsearch。

要验证 Elasticsearch 确实在接收此数据,请使用以下命令查询 Filebeat 索引

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

看到类似于的输出

centos7 ELK的搭建_elasticsearch_07

最后回到 Kibana 仪表板(elk服务器:5601),点击 Discover 默认选择预定义的filebeat- * 索引模式以查看 Filebeat 数据。右边将显示过去 15 分钟内的所有日志数据。您将看到一个带有日志事件的直方图,以及下面的一些日志消息


标签:ELK,system,auth,logstash,centos7,Elasticsearch,DATA,Logstash,搭建
From: https://blog.51cto.com/xiaokan/5929572

相关文章

  • Centos7 查看磁盘i/o, 定位占用i/o读写高的进程
     Centos7查看磁盘i/o,定位占用i/o读写高的进程概要:1、iostat用法2、先用iostat查看磁盘io是否读写负载很高3、找出使用io高的进程的工具iotop4、lsof查......
  • ELK中Kibana切换中文语言
    Kibana6版本后可以支持中文了,默认Kibana界面都是英文显示,对于国内开发者不是很友好,但Kibana6版本之后是支持多语言的,我们只需在其配置文件中增加一行配置,就可以实现中文......
  • ELK模拟收集nginx日志
    ​这里我额外用了台服务器​​nginx​​-demo(172.16.10.125)使用epel源不然直接用命令安装nginx,提示没有可用的软件包​yuminstallepel-release//安装epelyumupdate......
  • 直播平台搭建,实现图片缩略图功能
    直播平台搭建,实现图片缩略图功能 publicpartialclassForm1:Form{  publicForm1()  {    InitializeComponent();  }  publicImageReso......
  • 阿里云Centos7使用yum安装MySQL5.6的正确姿势
    我们对service和chkconfig两个命令都不陌生,systemctl是管制服务的主要工具,它整合了chkconfig与service功能于一体。systemctlis-enablediptables.servicesystemctlis......
  • Centos7系统恢复常用维护命令
    Centos7系统备份与恢复:使用root用户切换到根目录然后,使用下面的命令备份完整的系统:tarcvpzfbackup.tgz/--exclude=/proc--exclude=/lost+found--exclude=/backup.tgz......
  • centos7安装配置rocketmq
    1、下载地址::https://rocketmq.apache.org/download/参考地址:https://www.cnblogs.com/jtnote/p/16315320.html ......
  • 启明智显分享:SSD201/202开发环境搭建
    SSD201/202开发环境搭建1、下载源码,并将源码拷贝到linux目录下。2、安装交叉编译链(1)解压gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.gztar-xvfgcc-arm......
  • VMware快速搭建k8s集群 (CentOS-7.9|Docker-19.03.11|K8S-1.19.6|Flannel)kubeadm安装
    0.规划k8s-master192.168.239.120CPU:2核 内存:2G 磁盘:10GCentOS7.9k8s-node1192.168.239.121CPU:2核 内存:2G 磁盘:10GCentOS7.9k8s-node2192......
  • OpenSSL 系列2 --- 搭建CA,签发证书
    一、环境CentOS7OpenSSL3.0.7OpenSSL升级请参考:https://www.cnblogs.com/eagle6688/p/15978628.html工作目录:/etc/pki/CAcd/etc/pki/CA二、CA1.生成CA私钥......