# [原] 在 CentOS 7 上安装 Elasticsearch, FileBeat 和 Kibana (Elastic Stack|ELK stack)

第1步 - 安装和配置 Elasticsearch

默认情况下,Elastic Stack 组件不能通过包管理器获得,但yum 可以通过添加 Elastic 的包存储库来安装它们。

所有 Elastic Stack 的软件包都使用 Elasticsearch 签名密钥进行签名,以保护您的系统免受软件包欺骗。使用密钥进行身份验证的软件包将被包管理器视为可信的。在此步骤中,将导入 Elasticsearch 公共 GPG 密钥并添加 Elastic 存储库以安装 Elasticsearch。

下载并且安装公共签名密钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
复制代码

安装 Rpm Repo

/etc/yum.repos.d/ 下创建 elastic.repo

[elastic-6.x]
name=Elastic 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
复制代码
yum install elasticsearch
复制代码

完成 Elasticsearch 安装后,在编辑器中打开其主配置文件 elasticsearch.yml

Elasticsearch的配置文件采用YAML格式,这意味着缩进非常重要!编辑此文件时,请确保不添加任何额外的空格, 并且不能使用 tag 缩进符, : 后必须存在空格

Elasticsearch 侦听来自端口 9200 上的任何流量。所以需要限制对 Elasticsearch 实例的外部访问,以防止外人通过 REST API 读取您的数据或关闭您的 Elasticsearch 集群。找到指定的行network.host,取消注释,并替换它的值为 : localhost (这里如果是内网访问, 可以替换成内网地址, 这样外部也无法进行访问) 如下所示:

. . .
network.host: localhost
. . .
复制代码

保存并关闭 elasticsearch.yml。然后,使用 systemctl 命令启动 Elasticsearch 服务:

sudo systemctl start elasticsearch
复制代码

接下来,运行以下命令以使 Elasticsearch 在每次服务器启动时启动:

sudo systemctl enable elasticsearch
复制代码

你可以通过发送 HTTP 请求来测试你的 Elasticsearch 服务是否正在运行:

curl "localhost:9200"
复制代码

您将看到一个响应,显示有关本地节点的一些基本信息,类似于:

{
  "name" : "lq8hbCV",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "yjl6Pw4NQpmLgm7gN__fvg",
  "version" : {
    "number" : "6.6.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "1fd8f69",
    "build_date" : "2019-02-13T17:10:04.160291Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
复制代码

现在 Elasticsearch 已启动并运行,让我们安装 Kibana,它是 Elastic Stack 的下一个组件。

第2步 - 安装和配置Kibana仪表板

根据官方文档中的安装顺序,你应该在 Elasticsearch 之后安装 Kibana 作为下一个组件。设置 Kibana 后,我们能够使用其界面搜索并查看 Elasticsearch 存储的数据。

因为在上一步中添加了 Elastic 存储库,所以您可以使用 yum 安装 Elastic Stack 的其余组件:

sudo yum install kibana
复制代码

然后启用并启动Kibana服务:

sudo systemctl enable kibana
sudo systemctl start kibana

复制代码

由于Kibana配置为仅侦听 localhost ,因此我们必须设置反向代理 以允许外部访问它。我们将使用 Nginx 来实现此目的

首先,使用该 openssl 命令创建一个管理 Kibana 用户,您将使用该用户访问 Kibana Web 界面。例如,我们将为此帐户命名kibanaadmin,但为了确保更高的安全性,我们建议您为用户选择难以猜测的非标准名称。

以下命令将创建管理 Kibana 用户和密码,并将它们存储在 htpasswd.users 文件中。您将配置Nginx以要求此用户名和密码并立即读取此文件:

echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
复制代码

在提示符下输入并确认密码。记住或记下此登录信息,因为需要用它来访问 Kibana Web界面。

接下来,我们将创建一个 Nginx 服务器块文件。例如,我们将此文件称为example.com.conf,尽管您可能会发现为您提供更具描述性的名称会很有帮助。例如,如果您为此服务器设置了 FQDN 和 DNS 记录,则可以在 FQDN 之后命名此文件:

sudo vi /etc/nginx/conf.d/example.com.conf
复制代码

将以下代码块添加到文件中,确保更新 example.com 并匹配服务器的 FQDN 或公共 IP 地址。此代码将 Nginx 配置为将服务器的 HTTP 流量定向到正在侦听的 Kibana 应用程序。此外,它配置 Nginx 以读取文件并需要基本身份验证。www.example.com localhost:5601 htpasswd.users

example.com.conf > /etc/nginx/conf.d/example.com.conf

server {
    listen 80;

    server_name example.com www.example.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    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;
    }
}

复制代码

完成后,保存并关闭文件。

然后检查配置是否存在语法错误:

sudo nginx -t
复制代码

如果输出中报告了任何错误,请返回并仔细检查您在配置文件中放置的内容是否已正确添加。配置检测时候输出 syntax is ok再继续并重新启动 Nginx 服务:

sudo systemctl restart nginx
复制代码

现在可以通过您的FQDN或 Elastic Stack 服务器的公共IP地址访问Kibana。您可以通过导航到以下地址并在出现提示时输入登录凭据来检查Kibana服务器的状态页面:

http://{your_server_ip}/status
复制代码

此状态页面显示有关服务器资源使用情况的信息,并列出已安装的插件。

第三步 — 安装和配置 Filebeat

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

  • Filebeat: 收集并发送日志文件.
  • Metricbeat: 从您的系统和服务中收集指标.
  • Packetbeat: 收集和分析网络数据
  • Winlogbeat: 收集Windows事件日志
  • Auditbeat: 收集Linux 监控框架数据并监视文件完整性
  • Heartbeat: 通过主动探测监控服务的可用性

在本教程中,我们将使用 Filebeat 将本地日志转发到我们的 Elastic Stack。

使用 yum 安装 filebeat:

sudo yum install filebeat
复制代码

接下来,配置 Filebeat 以连接到 Elastic Search. 在这里,我们将修改 Filebeat 附带的示例配置文件

打开 Filebeat 配置文件

sudo vi /etc/filebeat/filebeat.yml
复制代码

Filebeat 支持多种输出,但通常只将事件直接发送到 Elasticsearch 或 Logstash 以进行其他处理。在本教程中,我们将使用 Elasticsearch 对 Filebeat 收集的数据执行其他处理。Filebeat 需要直接向 Elasticsearc 发送数据,所以让我们启用该输出。为此,请找到 output.elasticsearch 部分并保证此部分不会被 # 注释

/etc/filebeat/filebeat.yml

...
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]
...
复制代码

下面我们配置 filebeat 支持 nginx 日志的收集

现在可以使用 Filebeat模块扩展 Filebeat 的功能。在本教程中,您将使用 Nginx模块,该模块收集和分析由 Nginx 生成的访问日志和错误日志。

让我们启用他

sudo filebeat modules enable nginx
复制代码

您可以通过运行以下命令查看启用和禁用模块的列表:

sudo filebeat modules list
复制代码
Enabled:
nginx

Disabled:
apache2
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
osquery
postgresql
redis
suricata
system
traefik
复制代码

接下来我们需要初始化环境, 为日志的解析铺好路

$ sudo filebeat setup -e
复制代码

默认情况下,Filebeat配置为使用syslog和授权日志的默认路径。在本教程中,需要增加配置中的内容为 nginx 的日志路径。你可以在 /etc/filebeat/modules.d/nginx.yml 配置文件中查看模块的参数。

vim /etc/filebeat/modules.d/nginx.yml
复制代码
- module: nginx
  # Access logs
  access:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths:
        - /webdata/logs/*_access.log

  # Error logs
  error:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths:
        - /webdata/logs/*_error.log
复制代码

配置完成后需要检测下配置文件是否正确

$ sudo filebeat test config
复制代码

如果在这一步启动的话并不会成功,因为 需要 Elasticsearch 支持nginx 的文件解析还需要两个插件, 这里需要安装这两个插件

$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip
复制代码

下面我们启动 filebeat

$ sudo systemctl start filebeat
复制代码

以下便是运行效果

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值