阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Centos7上安装与配置Elastic Stack

66次阅读
没有评论

共计 9277 个字符,预计需要花费 24 分钟才能阅读完成。

导读 Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎,是用于管理事件和日志的开源工具,Logstash 将收集您的日志数据,将数据转换为 JSON 文档,并将其存储在 Elasticsearch 中。在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。然后,我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装“Elastic beats”。
Elastic Stack 简介
工具名称介绍

Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎。它提供了一个分布式、多租户的全文搜索引擎(多租户是指多租户技术,是一种软件架构技术,用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。),并带有 HTTP 仪表盘的 Web 界面(Kibana)。数据会被 Elasticsearch 查询、检索,并且使用 JSON 文档方案存储。Elasticsearch 是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。Elasticsearch 是 Elastic Stack 的核心,Elastic Stack 也被称为 ELK Stack。

Logstash 是用于管理事件和日志的开源工具。它为数据收集提供实时传递途径。Logstash 将收集您的日志数据,将数据转换为 JSON 文档,并将其存储在 Elasticsearch 中。

Kibana 是 Elasticsearch 的开源数据可视化工具。Kibana 提供了一个漂亮的仪表盘 Web 界面。你可以用它来管理和可视化来自 Elasticsearch 的数据。它不仅美丽,而且强大。

在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。然后,我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装“Elastic beats”。

Elastic Stack 所需环境条件
64 位的 CentOS 7,4 GB 内存 - elk 主控机
64 位的 CentOS 7,1 GB 内存 - 客户端 1
64 位的 Ubuntu 16,1 GB 内存 - 客户端 2
步骤 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 http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm
                                     \\ 下载 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 https://artifacts.elastic.co/GPG-KEY-elasticsearch
下载安装 Elasticsearch 5.1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
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

Centos7 上安装与配置 Elastic Stack
内存锁启用 mlockall,检查 Elasticsearch 是否正在运行。

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Centos7 上安装与配置 Elastic Stack

步骤 4 – 安装和配置 Kibana 和 Nginx

先安装 Kibana,然后安装 nginx,最后设置 nginx 反向代理 kibana

安装并配置 Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

编辑 Kibana 配置文件。

vim /etc/kibana/kibana.yml
                 在配置文件中找的一下三行,修改配置

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

将 Kibana 设为开机启动

sudo systemctl enable kibana
sudo systemctl start kibana

检查 Kibana 对外监听端口 5601 确保其正常启动。

netstat -plntu

Centos7 上安装与配置 Elastic Stack

安装并配置 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 {} 块。

Centos7 上安装与配置 Elastic Stack
创建 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 http://localhost:5601;
        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

Centos7 上安装与配置 Elastic Stack

步骤 5 – 安装和配置 Logstash

在此步骤中,我们将安装 Logstash,并将其配置为:从配置了 filebeat 的 logstash 客户端里集中化服务器的日志,然后过滤和转换 Syslog 数据,并将其移动到存储中心(Elasticsearch)中。

下载 Logstash 并使用 rpm 进行安装。

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

生成新的 SSL 证书文件,以便客户端可以识别 elastic 服务端。

cd /etc/pki/tls 
                 \\ 进入 tls 目录并编辑 openssl.cnf 文件。vim openssl.cnf

在 [v3_ca] 部分添加服务器标识。[v3_ca]
# Server IP Address
subjectAltName = IP: 10.0.15.10

使用 openssl 命令生成证书文件。

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -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 [type] == "syslog" {
grok {match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => ["received_at", "%{@timestamp}" ]
add_field => ["received_from", "%{host}" ]
}
date {match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss"]
}
}
}
我们使用名为 grok 的过滤器插件来解析 syslog 文件。

创建输出配置文件 output-elasticsearch.conf。

vim conf.d/output-elasticsearch.conf


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

启动 logstash 服务

sudo systemctl enable logstash
sudo systemctl start logstash

Centos7 上安装与配置 Elastic Stack

步骤 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 https://artifacts.elastic.co/GPG-KEY-elasticsearch 下载 Filebeat 并且用 rpm 命令安装。wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
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: ["localhost:9200"]
--------------------------------------------------------------------------------------

------------------ 现在添加新的 logstash 输出配置 --------------------------------------
output.logstash:
# The Logstash hosts
hosts: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
--------------------------------------------------------------------------------------

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

将 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 - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

下载 Filebeat .deb 包并且使用 dpkg 命令进行安装。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
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: ["localhost:9200"]
--------------------------------------------------------------------------------------

------------------ 现在添加新的 logstash 输出配置 --------------------------------------
output.logstash:
# The Logstash hosts
hosts: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
--------------------------------------------------------------------------------------

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

将 Filebeat 设定为开机启动并启动。

sudo systemctl enable filebeat
sudo systemctl start filebeat

检查服务状态:

systemctl status filebeat

Centos7 上安装与配置 Elastic Stack
步骤 8 – 测试

打开您的网络浏览器,并访问您在 Nginx 中配置的 elastic stack 域名,我的是“elk-stack.co”。使用管理员密码登录,然后按 Enter 键登录 Kibana 仪表盘。

Centos7 上安装与配置 Elastic Stack

创建一个新的默认索引 filebeat-*,然后点击“创建”按钮。
Centos7 上安装与配置 Elastic Stack

默认索引已创建。如果 elastic stack 上有多个 beat,您可以在“星形”按钮上点击一下即可配置默认 beat。

Centos7 上安装与配置 Elastic Stack

转到“发现”菜单,您就可以看到 elk-client1 和 elk-client2 服务器上的所有日志文件。

Centos7 上安装与配置 Elastic Stack

来自 elk-client1 服务器日志中的无效 ssh 登录的 JSON 输出示例。
Centos7 上安装与配置 Elastic Stack

使用其他的选项,你可以使用 Kibana 仪表盘做更多的事情。

Elastic Stack 已安装在 CentOS 7 服务器上。Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。


via: https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/

作者:Muhammad Arul 译者:Flowsnow 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计9277字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中