linux下安装Kibana

摘要

下载

1
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.3-linux-x86_64.tar.gz
  • 下载完成后解压到/usr/local/kibana目录下,解压命令如下:

1
2
mkdir /usr/local/kibana
tar -zxvf kibana-8.17.3-linux-x86_64.tar.gz -C /usr/local/kibana

创建启动用户

  • elasticsearch和kibana都不能用root用户启动

  • 创建用户elastic,并设置密码,这一步我们在安装elasticsearch的时候已经配置过了,这里就不再赘述了

1
2
useradd elastic
passwd elastic
  • 修改kibana安装目录的用户权限

1
chown -R elastic:elastic /usr/local/kibana
  • 切换到elastic用户下执行命令

1
su - elastic

关联Kibana和Elasticsearch

方法1:注册令牌Token关联[官方推荐]

  • 注意此方法要求elasticsearch必须开启安全认证,而且xpack.security.http.ssl.enabled 必须设置为 true

  • 配置启动文件,进入/usr/local/kibana/kibana-8.17.3/config目录,修改kibana.yml文件

1
2
3
4
5
6
7
8
# 端口
server.port: 5601
# kibana服务器的ip,4个0表示任何一个网卡都可以访问
server.host: "0.0.0.0"
# 中文
i18n.locale: "zh-CN"
# 配置https
elasticsearch.ssl.verificationMode: 'certificate'
  • 进入elasticsearch安装目录,创建kibana注册令牌

1
2
3
bin/elasticsearch-create-enrollment-token -s kibana
# 输出结果如下
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTAuMjUwLjAuMjM5OjkyMDAiXSwiZmdyIjoiM2YxNDFjMTZkZmM2ZTE2NTg5NGJjMTY3MjA4NGIyMjBkY2RkMjJmZmUwMjExNmQ1MWFjMTgwMDNjZmFhNWExZCIsImtleSI6ImxlTWh1SlVCcVJWQUw4WGFjMk1HOkVHYTYxcWlfVEotQWQ1Y3dQdXcyckEifQ==
  • 进入kibana安装目录,通过下面的命令注册 Kibana

1
2
3
4
5
# bin/kibana-setup --enrollment-token <enrollment-token>
bin/kibana-setup --enrollment-token eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTAuMjUwLjAuMjM5OjkyMDAiXSwiZmdyIjoiM2YxNDFjMTZkZmM2ZTE2NTg5NGJjMTY3MjA4NGIyMjBkY2RkMjJmZmUwMjExNmQ1MWFjMTgwMDNjZmFhNWExZCIsImtleSI6ImxlTWh1SlVCcVJWQUw4WGFjMk1HOkVHYTYxcWlfVEotQWQ1Y3dQdXcyckEifQ==

# 注册成功会输出
✔ Kibana configured successfully.
  • 如果ES的xpack.security.http.ssl.enabled 设置为 false,注册Kibana时会报错,报错信息如下:

1
✖ Unable to connect to Elasticsearch with the provided enrollment token: Unable to connect to any of the provided hosts.
  • 注册成功后会在/usr/local/kibana/kibana-8.17.3/config/kibana.yml文件中添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This section was automatically generated during setup.
# ES服务URL
elasticsearch.hosts: ['https://10.250.0.239:9200'] # 10.250.0.239是本机的内网IP
# 指定用于认证的服务账户令牌
elasticsearch.serviceAccountToken: AAEAAWVsYXN0aWMva2liYW5hL2Vucm9sbC1wcm9jZXNzLXRva2VuLTE3NDI1NTA5ODU0MTg6Z2lJUERGaG1TR3VNcC1sb0RyMnMydw
# 指定用来验证 Elasticsearch 服务器 SSL 证书的 CA 证书路径
elasticsearch.ssl.certificateAuthorities: [/usr/local/kibana/kibana-8.17.3/data/ca_1742550986498.crt]
# 配置 Fleet 的输出目标。Fleet 是 Elastic 的一个管理工具,用于管理和监控弹性栈(Elastic Stack)。这个配置定义了 Fleet 默认输出的目标,即 Elasticsearch。
xpack.fleet.outputs: [{id: fleet-default-output, name: default, is_default: true, is_default_monitoring: true, type: elasticsearch, hosts: ['https://10.250.0.239:9200'], ca_trusted_fingerprint: 3f141c16dfc6e165894bc1672084b220dcdd22ffe02116d51ac18003cfaa5a1d}]
# id: fleet-default-output:输出的唯一标识符。
# name: default:输出的名称。
# is_default: true:表示这是默认输出。
# is_default_monitoring: true:表示这是默认的监控输出。
# type: elasticsearch:输出类型是 Elasticsearch。
# hosts: ['https://10.250.0.239:9200']:连接到的 Elasticsearch 主机地址。
# ca_trusted_fingerprint: 3f141c16dfc6e165894bc1672084b220dcdd22ffe02116d51ac18003cfaa5a1d:CA 证书的信任指纹,用于验证 CA 证书的身份。

方法2:用户名密码关联

  • 创建kibana连接elasticsearch的用户密码,不能用 elastic 这个用户,因为这个是超级用户,要使用 kibana_system 用户

1
2
# 进入elasticsearch安装目录,执行下面的命令重置 kibana_system 用户的密码
bin/elasticsearch-reset-password -u kibana_system -i
  • 配置启动文件,进入/usr/local/kibana/kibana-8.17.3/config目录,修改kibana.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 端口
server.port: 5601
# kibana服务器的ip,4个0表示任何一个网卡都可以访问
server.host: "0.0.0.0"

# elasctisearch关联,我这里将elasticsearch与kibana安装在同一台机器上了
# 注意这里是https,而且要配置证书路径
elasticsearch.hosts: ["https://localhost:9200"]
# 指定https证书路径
elasticsearch.ssl.certificateAuthorities: ["/usr/local/elasticsearch/elasticsearch-8.17.3/config/certs/http_ca.crt"]
# 用户名密码
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
# 中文
i18n.locale: "zh-CN"
  • 如果ES没有开启安全认证,则只需要进行如下配置即可:

1
2
3
4
5
6
7
# 端口
server.port: 5601
# kibana服务器的ip,4个0表示任何一个网卡都可以访问
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
# 中文
i18n.locale: "zh-CN"

启动Kibana服务

  • 进入/usr/local/kibana/kibana-8.17.3目录,执行以下命令启动服务

1
2
3
./bin/kibana
# 后台启动,并将日志写入到logs/kibana.log
nohup bin/kibana > logs/kibana.log 2>&1 &
  • 访问地址:http://localhost:5601,这里注意登录用户需要使用:elastic,而不是kibana_system

启动Kibana服务后的日志告警

  • Kibana服务启动后,会在/usr/local/kibana/kibana-8.17.3/logs/kibana.log文件中记录一些错误日志,如果出现错误,可以查看日志,解决错误。

1
[WARN ][plugins.fleet] xpack.encryptedSavedObjects.encryptionKey is not configured, private key passphrase is being stored in plain text
  • 这个警告信息表明 Kibana 的某些插件(如 Fleet)在缺少 xpack.encryptedSavedObjects.encryptionKey 配置的情况下运行,导致私钥密码和代理卸载令牌以明文形式存储。为了提高安全性,建议配置一个加密密钥。

  • 生成加密密钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ bin/kibana-encryption-keys generate
Kibana is currently running with legacy OpenSSL providers enabled! For details and instructions on how to disable see https://www.elastic.co/guide/en/kibana/8.17/production.html#openssl-legacy-provider
## Kibana Encryption Key Generation Utility

The 'generate' command guides you through the process of setting encryption keys for:

xpack.encryptedSavedObjects.encryptionKey
Used to encrypt stored objects such as dashboards and visualizations
https://www.elastic.co/guide/en/kibana/current/xpack-security-secure-saved-objects.html#xpack-security-secure-saved-objects

xpack.reporting.encryptionKey
Used to encrypt saved reports
https://www.elastic.co/guide/en/kibana/current/reporting-settings-kb.html#general-reporting-settings

xpack.security.encryptionKey
Used to encrypt session information
https://www.elastic.co/guide/en/kibana/current/security-settings-kb.html#security-session-and-cookie-settings


Already defined settings are ignored and can be regenerated using the --force flag. Check the documentation links for instructions on how to rotate encryption keys.
Definitions should be set in the kibana.yml used configure Kibana.

Settings:
xpack.encryptedSavedObjects.encryptionKey: 47967e4b78bd26decb622b78f0ddd324
xpack.reporting.encryptionKey: 78b5f603f3b0e6ad76c13a0f5d00cde0
xpack.security.encryptionKey: 8aa7f4dfbc4e734a2a9f92a2730b36af
  • 配置 Kibana 以使用加密密钥,添加到 kibana.yml 文件中:

1
2
3
xpack.encryptedSavedObjects.encryptionKey: 47967e4b78bd26decb622b78f0ddd324
xpack.reporting.encryptionKey: 78b5f603f3b0e6ad76c13a0f5d00cde0
xpack.security.encryptionKey: 8aa7f4dfbc4e734a2a9f92a2730b36af
  • 重启 Kibana 服务 以应用更改。

Kibana 自启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 创建服务文件
$ vim /usr/lib/systemd/system/kibana.service
[Unit]
Description=kibana
Documentation=https://www.elastic.co
After=es.service

[Service]
Type=simple
PrivateTmp=true
# 指定ES用户
User=elastic
Group=elastic
LimitNOFILE=100000
LimitNPROC=100000
Restart=yes
# 启动命令
ExecStart=/usr/local/kibana/kibana-8.17.3/bin/kibana
ExecRestart=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

# 重新加载
$ systemctl daemon-reload

# 启动
$ systemctl start kibana
# 停止
$ systemctl stop kibana
# 查看状态
$ systemctl status kibana
# 设置开机启动
$ systemctl enable kibana