如何在CentOS 7上安装弹性栈

Elasticsearch是基于Lucene开发的开源搜索引擎,由Java开发。 它提供了一个具有HTTP Dashboard Web界面(Kibana)的分布式和多租户全文搜索引擎。 数据被查询,检索并使用JSON文档方案存储。 Elasticsearch是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。 弹性搜索是“弹性”或ELK的核心。

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

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

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

前提条件

  • CentOS 7 64位,带4GB RAM - 麋鹿主机
  • CentOS 7 64位,1 GB RAM - client1
  • Ubuntu 16 64位与1GB的RAM - client2

第1步 - 准备操作系统

在本教程中,我们将在CentOS 7服务器上禁用SELinux。 编辑SELinux配置文件。

vim /etc/sysconfig/selinux

将SELINUX值从强制更改为禁用。

SELINUX=disabled

然后重新启动服务器。

reboot

再次登录服务器并检查SELinux状态。

getenforce

确保结果被禁用。

第2步 - 安装Java

弹性栈部署需要Java。 Elasticsearch需要Java 8,建议使用Oracle JDK 1.8。 我将从官方的Oracle rpm包安装Java 8。

使用wget命令下载Java 8 JDK。

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

然后用这个rpm命令安装它;

rpm -ivh jdk-8u77-linux-x64.rpm

最后,检查java JDK版本,以确保它正常工作。

java -version

您将看到Java版本的服务器。

第3步 - 安装和配置弹性搜索

在此步骤中,我们将安装和配置Elasticsearch。 我将从elastic.co提供的rpm包中安装Elasticsearch,并将其配置为在本地主机上运行(使安装程序安全,并确保它不能从外部访问)。

在安装Elasticsearch之前,将elastic.co键添加到服务器。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

接下来,使用wget下载Elasticsearch 5.1,然后安装它。

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

弹性搜索已安装。 现在进入配置目录并编辑弹性配置文件。

cd /etc/elasticsearch/
vim elasticsearch.yml

通过删除第40行上的注释,为Elasticsearch启用内存锁定。这将禁用弹性搜索的内存交换。

bootstrap.memory_lock: true

在“网络”块中,取消注释network.host和http.port行。

network.host: localhost
http.port: 9200

保存文件并退出编辑器。

现在编辑elasticsearch.service文件以进行内存锁配置。

vim /usr/lib/systemd/system/elasticsearch.service

取消注释LimitMEMLOCK行。

LimitMEMLOCK=infinity

保存并退出。

编辑Elasticsearch的sysconfig配置文件。

vim /etc/sysconfig/elasticsearch

取消注释第60行,并确保该值为“无限制”。

MAX_LOCKED_MEMORY=unlimited

保存并退出。

弹性搜索配置已完成。 Elasticsearch将在端口9200上的本地主机IP地址上运行,我们通过在CentOS服务器上启用mlockall来禁用内存交换。

重新加载systemd,启用Elasticsearch在启动时启动,然后启动服务。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

等待Eusasticsearch启动一秒钟,然后检查服务器上的打开端口,确保端口9200的“状态”为“LISTEN”。

netstat -plntu

然后检查内存锁以确保启用mlockall,并使用以下命令检查Elasticsearch是否正在运行。

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

您将看到以下结果。

第4步 - 使用Nginx安装和配置Kibana

在此步骤中,我们将使用Nginx Web服务器安装和配置Kibana。 Kibana将监听本地主机IP地址,Nginx作为Kibana应用程序的反向代理。

下载Kibana 5.1与wget,然后使用rpm命令安装:

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,server.host和elasticsearch.url的配置行。

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

保存并退出。

添加Kibana在启动时运行并启动它。

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana将作为节点应用程序运行在端口5601上。

netstat -plntu

Kibana安装完成。 现在我们需要安装Nginx并将其配置为反向代理,以便能够从公共IP地址访问Kibana。

Nginx在Epel资源库中可用,用yum安装epel-release。

yum -y install epel-release

接下来,安装Nginx和httpd-tools包。

yum -y install nginx httpd-tools

httpd-tools软件包包含Web服务器的工具,我们将使用htpasswd基础认证进行Kibana。

编辑Nginx配置文件并删除'server {} '块,这样我们可以添加一个新的虚拟主机配置。

cd /etc/nginx/
vim nginx.conf

删除服务器{}块。

保存并退出。

现在我们需要在conf.d目录中创建一个新的虚拟主机配置文件。 用vim创建新文件'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
TYPE YOUR PASSWORD

测试Nginx配置,并确保没有错误。 然后添加Nginx在启动时运行并启动Nginx。

nginx -t
systemctl enable nginx
systemctl start nginx

第5步 - 安装和配置Logstash

在此步骤中,我们将安装Logsatash并将其配置为通过文件捕获从客户机集中服务器日志,然后过滤和转换Syslog数据并将其移动到垃圾邮件(Elasticsearch)中。

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

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

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

转到tls目录并编辑openssl.cnf文件。

cd /etc/pki/tls
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处理的'syslog-filter.conf'文件和'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

第6步 - 在CentOS客户端上安装和配置Filebeat

Beats是数据shippers,可以安装在客户端节点上的轻量级代理,将大量数据从客户机发送到Logstash或Elasticsearch服务器。 有4个Beats,“Log Files”为“Filebeat”,“Metrics”为“Metricbeat”,Windows客户端“Event Log”为“Network Data”的“Packetbeat”和“Winlogbeat”。

在本教程中,我将向您展示如何安装和配置“Filebeat”,以通过SSL连接将数据日志文件传输到Logstash服务器。

登录到client1服务器。 然后将证书文件从弹性服务器复制到client1服务器。

ssh root@client1IP

使用scp命令复制证书文件。

scp root@elk-serverIP:~/logstash-forwarder.crt .
TYPE elk-server password

创建一个新目录并将证书文件移动到该目录。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

接下来,在客户端1服务器上导入弹性键。

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 / messages'两个文件'/ var / log / secure'。

  paths:
    - /var/log/secure
    - /var/log/messages

在第26行添加一个新配置来定义syslog类型文件。

  document-type: syslog

Filebeat默认使用Elasticsearch作为输出目标。 在本教程中,我们将其更改为Logshtash。 通过在行83和85上添加注释来禁用弹性搜索输出。

禁用弹性搜索输出。

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

现在添加新的logstash输出配置。 取消注释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

保存文件并退出vim。

添加Filebeat启动时启动它。

sudo systemctl enable filebeat
sudo systemctl start filebeat

第7步 - 在Ubuntu Client上安装和配置Filebeat

通过ssh连接到服务器。

ssh root@ubuntu-clientIP

使用scp命令将证书文件复制到客户端。

scp root@elk-serverIP:~/logstash-forwarder.crt .

为证书文件创建一个新目录,并将该文件移动到该目录。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

将弹性键添加到服务器。

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配置目录并使用vim编辑文件'filebeat.yml'。

cd /etc/filebeat/
vim filebeat.yml

在路径配置部分添加新的日志文件路径。

  paths:
    - /var/log/auth.log
    - /var/log/syslog

将文档类型设置为syslog。

  document-type: syslog

通过将注释添加到下面所示的行来禁用弹性搜索输出。

#-------------------------- 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

保存文件并退出vim。

添加Filebeat启动时启动它。

sudo systemctl enable filebeat
sudo systemctl start filebeat

检查服务状态。

systemctl status filebeat

第8步 - 测试

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

创建一个新的默认索引'filebeat- *'并点击'创建'按钮。

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

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

来自elk-client1服务器日志的无效ssh登录的JSON输出示例。

还有更多的你可以使用Kibana仪表板,只需玩可用的选项。

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

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏