如何在CentOS 7上安装Elastic Stack

如何在CentOS 7上安装Elastic Stack,第1张

步骤 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

步骤 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

内存锁启用 mlockall,检查 Elasticsearch 是否正在运行。

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

curl -XGET 'localhost:9200/?pretty'

步骤 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

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

创建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

步骤 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

步骤 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

--------------------------------------------------------------------------------------

PS:Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。

将 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

--------------------------------------------------------------------------------------

PS:Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。

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

sudo systemctl enable filebeat

sudo systemctl start filebeat

检查服务状态:

systemctl status filebeat

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

创建一个新的默认索引 filebeat-*,然后点击“创建”按钮。

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

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

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

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

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

将 elastic 用户的文件数限制调整为65536

使用 sysctl -p 使系统配置生效

首次启动后控制台会打印出一些预设置的log信息,以及会在 elasticsearch.yml 配置文件的的最后面增加 SECURITY 相关配置,可以不用理会,因为需要使用时可用脚本工具去修改默认生成的一些迟纯败配置信息;

第一次启动完成后会自动生成一些信息,接下来修改一下默认密码

此时是未开启 ssl 的情况下可以正常访问,同时也可以开启 ssl 完成请求

打开 config/elasticsearch.yml 中可以看到配置项 xpack.security.http.ssl.keystore.path: certs/http.p12 ,此 http.p12 证书为默认生成的,使用脚本工具重新生成一码颤份替换它,生成命令如下

解压 elasticsearch-ssl-http.zip 后,在目录 elasticsearch 中可以看到新生成的文件 http.p12 ,将其替换掉 config/cert/http.p12 ,由于生成此证书时密码为 123456 ,所以需要重新设置 keystore 的密码(需注意不是在配置文件上添加密码配置项),命令如下

重新打开 ssl 配置

配置 hosts 为 192.168.91.133 www.minxyz.com (此域名为任意定义的),重启 elasticsearch ,此时需要使用 https 来访问 ES ,可以先增加 -k 参数允许不使用证书连接到 SSL 站点(若浏览器可以强制访问不安全的地址)

若需要安全访问,需要增加证书配置,通过以下命令生成 http.pem 后,使用 http.pem 证书完成 https 请求访问

在浏览器上需要安全访问,可将 http.p12 证书安装到根证书目录下之后访问

由于直接使用 curl *** 作相对较麻烦,临时扩展定义一个 ecurl 别名,如下(后面即可用 ecurl 简化 *** 作)

安装中文分词插件 sudo bin/elasticsearch-plugin install analysis-smartcn ,安装成功后重启 es

比如要将“永远滴神”定义为一个词,需要在配置 IKAnalyzer.cfg.xml 中指定 <entry key="裤核ext_dict">customer.dic</entry>,然后创建文件 customer.dic ,并添加一行“永远滴神”,重启后再次访问即可看到分词结果


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12512624.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存