一、使用RPM安装Kibana

1.1 导入弹性PGP密钥编辑

我们使用带有指纹的弹性签名密钥(PGP密钥D88E42B4,可从https://pgp.mit.edu获得)对所有软件包进行签名 :

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装公共签名密钥:
#rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

1.2 从RPM存储库安装编辑

对于基于RedHat的发行版,在目录中创建一个文件kibana.repo;/etc/yum.repos.d/在目录中创建一个文件,其中包含:
#vim /etc/yum.repos.d/kibana.repo

[kibana-7.x]
name=Kibana 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

#yum install -y kibana

1.3 将Kibana配置为在系统启动时自动启动

请运行以下命令:

#systemctl daemon-reload
#systemctl enable kibana
#systemctl start kibana

二、配置Kibana

2.1 在Kibana中加密通信

安全套接字层(SSL)和传输层安全性(TLS)为传输中的数据提供加密。虽然这些术语通常可以互换使用,但是Kibana仅支持TLS,它取代了旧的SSL协议。

浏览器将流量发送到Kibana,而Kibana将流量发送到Elasticsearch。这些通信通道被单独配置为使用TLS。

TLS需要X.509证书来验证通信方并执行传输中数据的加密。每个证书都包含一个公共密钥,并具有一个关联的但独立的私有密钥。这些密钥用于加密操作。Kibana支持PEM或PKCS#12格式的证书和私钥。

2.2 加密浏览器和Kibana之间的流量

(1)获取Kibana的服务器证书和私钥。

当从Web浏览器接收连接时,Kibana将需要使用此“服务器证书”和相应的私钥。

获取服务器证书时,必须正确设置其使用者备用名称(SAN),以确保带有主机名验证的现代Web浏览器将信任它。您可以将一个或多个SAN设置为Kibana服务器的标准域名(FQDN),主机名或IP地址。选择SAN时,应该选择将用于连接到浏览器中的Kibana的任何属性,这可能是生产环境中的FQDN。

您可以选择使用该elasticsearch-certutil工具生成签名证书和私钥。例如:

#/usr/share/elasticsearch/bin/elasticsearch-certutil ca
#/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 
#cp /usr/share/elasticsearch/{elastic-stack-ca.p12,elastic-certificates.p12} /etc/elasticsearch/
#chmod 640 /etc/elasticsearch/elastic-certificates.p12 

这将产生一个名为的PKCS#12文件kibana-server.p12,其中包含服务器证书和私钥。

在此示例中,服务器证书由本地生成的证书颁发机构(CA)签名。这不适用于生产环境,在您将浏览器配置为信任证书之前,它将在Web浏览器中导致警告。配置证书信任的步骤因浏览器和操作系统而异。如果要获取生产环境的服务器证书,则可以elasticsearch-certutil使用 CSR模式生成证书签名请求(CSR)

(2)配置Kibana以访问服务器证书和私钥。

如果您的服务器证书和私钥包含在PKCS#12文件中:

在中指定您的PKCS#12文件kibana.yml:

server.ssl.keystore.path: "/usr/share/elasticsearch/kibana-server.p12"

(3)node01,配置账号密码完成tls通信
首先打开/etc/elasticsearch/elasticsearch.yml添加如下代码:

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
xpack.security.audit.enabled: true
xpack.security.audit.logfile.events.emit_request_body: true
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length

重启elasticsearch服务:#systemctl restart elasticsearch

执行如下命令
#/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y

Enter password for [elastic]: 
Reenter password for [elastic]: 
Passwords do not match.
Try again.
Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

(4)检查是否正常
#curl http://192.168.152.11:9200/_cat/nodes?v -u elastic:123456
file

(5)查看集群健康状态
curl http://192.168.152.11:9200/_cat/health?v -u elastic:123456
file

(6)查看集群节点
curl http://192.168.152.11:9200/_cat/nodes?v -u elastic:123456
可以发现 es 集群 ok 了!我们可以发现 node01 的 master 字段值为*,没错,它就是 master 节点了。
file