本文配置环境
根据 Elastic Stack 系统要求,我们的服务器配置如下:
- CPU - 3.4 Ghz(双核)
- 内存 - 2 GB
- 存储 - 20 GB
- 操作系统 - CentOS 7.6
- Java 版本 - OpenJDK 1.8
- 主机名 - elasticsearch-01.onitroad.com
- IP 地址 - 192.168.1.187 /24
在 CentOS 7 上安装 Filebeat 7.2
Filebeat 是一个将日志发送到 Logstash 的代理。
Filebeat 在 Elasticsearch yum 存储库中也可用。
因为,我们安装在同一台服务器上(elasticsearch-01.onitroad.com),因此,我们已经在这台服务器上安装了 Elasticsearch yum 存储库。
否则,在其他 CentOS 7 机器上安装 Filebeat 之前,我们必须安装 Elasticsearch yum 存储库。
使用 yum 命令安装 Filebeat 7.2.
[root@elasticsearch-01 ~]# yum install -y filebeat
编辑 Filebeat 配置文件。
[root@elasticsearch-01 ~]# vi /etc/filebeat/filebeat.yml
找到并启用 filebeat.input 部分。
#=========================== Filebeat inputs ============================= filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /var/log/*.log #- c:\programdata\elasticsearch\logs\*
找到并注释 output.elasticsearch 部分中的所有行。
#-------------------------- Elasticsearch output ----------------------------- #output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"] # Optional protocol and basic auth credentials. #protocol: "https" #username: "elastic" #password: "changeme"
找到并取消注释 output.logstash 部分,如下所示。
#----------------------------- Logstash output ------------------------------- output.logstash: # The Logstash hosts hosts: ["localhost:5044"] # Optional SSL. By default is off. # List of root certificates for HTTPS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication #ssl.certificate: "/etc/pki/client/cert.pem" # Client Certificate Key #ssl.key: "/etc/pki/client/cert.key"
启用并启动 Filebeat 服务。
[root@elasticsearch-01 ~]# systemctl enable --now filebeat.service Created symlink from /etc/systemd/system/multi-user.target.wants/filebeat.service to /usr/lib/systemd/system/filebeat.service.
Filebeat 7.2 安装并配置在同一台 CentOS 7 服务器上。
在 CentOS 7 上安装 Kibana 7.2
Kibana 7.2 可以使用 yum 命令从 Elasticsearch yum 存储库安装。
[root@elasticsearch-01 ~]# yum -y install kibana
如下配置 Kibana 设置。
[root@elasticsearch-01 ~]# cat >> /etc/kibana/kibana.yml << EOF > server.port: 5601 > server.host: "0.0.0.0" > server.name: "elasticsearch-01.onitroad.com" > elasticsearch.hosts: ["http://localhost:9200"] > EOF
启用并启动 Kibana 服务。
[root@elasticsearch-01 ~]# systemctl enable --now kibana Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
在 Linux 防火墙中允许 Kibana 服务端口。
[root@elasticsearch-01 ~]# firewall-cmd --permanent --add-port=5601/tcp success [root@elasticsearch-01 ~]# firewall-cmd --reload success
Kibana 7.2 已经安装并配置在我们的 CentOS 7 服务器上。
在 CentOS 7 上安装 Elasticsearch 7.2:
使用 yum 命令安装 Elasticsearch 7.2.
[root@elasticsearch-01 ~]# yum install -y elasticsearch
为 Elasticsearch 配置 JVM(Java 虚拟机)选项,如下所示。
[root@elasticsearch-01 ~]# vi /etc/elasticsearch/jvm.options
查找并设置以下参数。
-Xms256m -Xmx512m
启用并启动 Elasticsearch 服务。
[root@elasticsearch-01 ~]# systemctl daemon-reload [root@elasticsearch-01 ~]# systemctl enable elasticsearch.service Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service. [root@elasticsearch-01 ~]# systemctl start elasticsearch.service
在 SELinux Policy 中添加 Elasticsearch 服务端口 9200/tcp 如下。
[root@elasticsearch-01 ~]# semanage port -m -t http_port_t 9200 -p tcp
测试 Elasticsearch 配置。
[root@elasticsearch-01 ~]# curl http://127.0.0.1:9200 { "name" : "elasticsearch-01.onitroad.com", "cluster_name" : "elasticsearch", "cluster_uuid" : "AkTQvcFiSwawa7mGqcH5hA", "version" : { "number" : "7.2.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "508c38a", "build_date" : "2019-06-20T15:54:18.811730Z", "build_snapshot" : false, "lucene_version" : "8.0.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Elasticsearch 7.2 已安装在我们的 CentOS 7 服务器上。
如果在启动 Elasticsearch 服务期间出现任何错误,请检查 /var/log/elasticsearch/gc.log 以获取详细信息和故障排除。
在 CentOS 7 上安装 Logstash
Logstash 用于为网络中的其他服务器设置集中式日志服务器。
Logstash 7.2 也可在 Elasticsearch yum 存储库中使用。
因此,我们可以使用 yum 命令轻松安装它。
[root@elasticsearch-01 ~]# yum install -y logstash
如下配置Logstash。
[root@elasticsearch-01 ~]# cat > /etc/logstash/conf.d/logstash.conf << EOF > input { > beats { > port => 5044 > ssl => false > } > } > > filter { > if [type] == "syslog" { > grok { > match => { "message" => "%{SYSLOGLINE}" } > } > > date { > match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] > } > } > } > > output { > elasticsearch { > hosts => localhost > index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" > } > stdout { > codec => rubydebug > } > } > EOF
启用并启动 Logstash 服务。
[root@elasticsearch-01 ~]# systemctl enable logstash.service Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service. [root@elasticsearch-01 ~]# systemctl start logstash.service
检查 /var/log/logstash/logstash-plain.log 以排除 Logstash 服务错误。
在 Linux 防火墙中允许 Logstash 服务端口。
[root@elasticsearch-01 ~]# firewall-cmd --permanent --add-port=5044/tcp success [root@elasticsearch-01 ~]# firewall-cmd --reload success
Logstash 7.2 已在我们的 CentOS 7 服务器上安装和配置。
测试我们的 Elastic Stack 配置:
在客户端浏览器中浏览 Kibana Web 界面 http://elasticsearch-01.onitroad.com:5601.
单击使用自己的数据。
单击左侧工具列下的管理图标。
单击 Kibana 部分下的索引模式。
单击创建索引模式。
单击 > 下一步。
单击创建索引。
单击左侧工具列下的发现图标。
我们已经在 CentOS 7 服务器上成功安装了 Elastic Stack 7.2.
在 CentOS 7 上安装 Elastic Stack 必备组件 - Java
OpenJDK 8 在标准 yum 存储库中可用。
因此,我们使用 yum 命令安装 OpenJDK 8.
[root@elasticsearch-01 ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
Elastic Stack(原 ELK Stack)是一种流行的 Log Analytics 解决方案,由三个开源软件组件组成,例如:Elasticsearch、Logstash 和 Kibana。
Elasticsearch 是一个基于 Lucene 库的搜索引擎。
Elasticsearch 是一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 界面和无模式 JSON 文档。
Logstash 是一个服务器端数据处理管道,它同时接收来自多个源的数据,对其进行转换,然后将其发送到 Elasticsearch。
Kibana 是一个用于 Elasticsearch 的开源数据可视化插件。
它在 Elasticsearch 集群上索引的内容之上提供可视化功能。
用户可以在大量数据的基础上创建条形图、折线图和散点图,或者饼图和地图。
在本文中,我们将在 CentOS 7 服务器上安装 Elastic Stack 7.2.
在 CentOS 7 上安装 Elasticsearch Yum 存储库
Elasticsearch 文档中提供了安装 Elasticsearch Yum Repository 的过程。
我们还可以使用相同的过程为以前版本的 Elastic stack 安装 yum 存储库。
下载并安装公共签名密钥,如下所示。
[root@elasticsearch-01 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
创建一个新的 yum 配置文件以在 CentOS 7 上安装 Elasticsearch Yum Repository。
[root@elasticsearch-01 ~]# cat > /etc/yum.repos.d/elasticsearch.repo << EOF > [elasticsearch-7.x] > name=Elasticsearch repository for 7.x packages > baseurl=https://artifacts.elastic.co/packages/7.x/yum > gpgcheck=1 > gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch > enabled=1 > autorefresh=1 > type=rpm-md > EOF
为 Elasticsearch Yum 存储库构建缓存。
[root@elasticsearch-01 ~]# yum makecache fast
我们已经成功安装了 Elasticsearch Yum Repository。
我们现在可以在 CentOS 7 服务器上安装Elastic stack组件。
Elastic stack系统要求
Elastic stack(Elasticsearch、Logstash 和 Kibana)的硬件要求取决于日志源的数量和生成的日志量。
Elasticsearch 文档中提到了一些推荐的硬件规格。
弹性堆栈需要 JVM(Java 虚拟机)才能运行。
因此,我们必须在 CentOS 7 服务器上安装受支持的 JDK(Java 开发工具包)版本。