[]
        
(Showing Draft Content)

安装Elasticsearch

如果需要使用Elasticsearch作为日志数据库,您需要单独安装Elasticsearch数据库和日志收集器。

安装Elasticsearch

单击https://www.elastic.co/downloads/past-releases#elasticsearch下载Elasticsearch。

本节以8.12.1为例,来介绍Elasticsearch的安装步骤。

Windows

Windows用户可以直接单击页面中的下载链接进行下载。


打开图像-20240226-022332.png

image

下载并解压到指定目录后,在目录“.\elasticsearch\bin”中执行.\elasticsearch即可直接运行Elasticsearch 。

打开图像-20240226-022535.png

image

Linux

Linux用户可以执行以下脚本下载并安装Elasticsearch。

type=note

说明:

不同的发行版和 CPU 架构需要选择特定的下载版本,具体版本可在官网确定。本节中的脚本示例默认使用适用于 x86 体系结构的通用 Linux 版本。

# define download url
ELASTICSEARCH_URL="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.1-linux-x86_64.tar.gz"
TARGET_DIR="/opt"
 
# create target directory(if not exists)
mkdir -p $TARGET_DIR
 
# download elasticsearch
curl -o /tmp/elasticsearch.tar.gz $ELASTICSEARCH_URL &
wait
 
# unzip to target directory
tar -C $TARGET_DIR -zxvf /tmp/elasticsearch.tar.gz
 
# clean up the downloaded zip files
rm /tmp/elasticsearch.tar.gz

由于安全原因,Elasticsearch 不支持由 root 用户启动。所以安装完成后,需要为 Elasticsearch 创建一个执行用户。

使用如下命令在Debian、Ubuntu 、RedHat、CentOS上创建新用户:

adduser useradd

例如,创建用户名为elasticsearch:

sudo adduser elasticsearch
# or
sudo useradd -m elasticsearch

变更 Elasticsearch 目录的所有权:您需要将 Elasticsearch 安装目录及其子目录的所有权变更为新创建的用户。

使用chown命令完成此操作:

sudo chown -R elasticsearch:elasticsearch /path/to/elasticsearch

要以新用户身份运行 Elasticsearch,请使用 su 命令切换到新创建的用户,然后启动 Elasticsearch。

sudo -u elasticsearch /path/to/elasticsearch/bin/elasticsearch

如果 Linux 中的 Elasticsearch 在启动过程中报告错误如“max virtual memory areas [65530] is too low'”,您可以使用 vm.max_map_count 命令解决。

sudo sysctl -w vm.max_map_count=262144

如果在 VM 中看到以下错误,则 VM 内存不足。

ERROR: Elasticsearch exited unexpectedly, with exit code 137

如果 Linux 中的 Elasticsearch 在启动过程中报告错误如“bootstrap check failure [1] of [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]”,您可以使用以下命令解决:

ulimit -n 65536

如果 Linux 中的 Elasticsearch 在启动过程中报告错误如“This site can't be reached”,很可能是因为防火墙阻止了对端口 9200 的访问。您可以通过设置以下命令来添加防火墙规则。

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload

如果您希望 Elasticsearch 在后台运行,最好的方法是将其配置为服务。但是,还有其他方法可以在后台运行它,例如使用nohup命令。

sudo -u elasticsearch nohup /path/to/elasticsearch/bin/elasticsearch > /path/to/elasticsearch.log 2>&1 &

注意事项

1. x-pack-security

Elasticsearch 默认启用该功能,所有操作都需要用户名和密码。

如果您希望将其用于本地测试目的,则可以在“config/elasticsearch.yml”文件中添加配置设置。

xpack.security.enabled: false

打开image-20240226-025543.png

image

2. 用户/密码认证

如果您希望使用用户名和密码身份验证连接到 Elasticsearch,您可以按如下方式操作:

使用 Elasticsearch 的用户管理 API 或 Kibana 的用户界面创建新用户。例如,您可以通过 Elasticsearch 的 REST API 创建一个新用户。

curl -X POST "localhost:9200/_security/user/new_user" -H "Content-Type: application/json" -u admin_user:admin_password -d'
{
  "password" : "new_user_password",
  "roles" : ["user_role"],
  "full_name" : "New User",
  "email" : "newuser@example.com"
}'

在此示例中,“new_user”是新创建的用户名,“new_user_password”是用户的密码。

调用此接口需要管理员凭据。在此示例中,“admin_user:admin_password”表示管理员的用户名和密码。

如果要重置管理员的帐户密码,可以通过以下交互式命令实现:

bin/elasticsearch-setup-passwords interactive

请务必注意,需要为创建的用户配置相应的角色才能访问特定索引。此处未提供此权限配置的详细说明。

如果您只想重置特定用户的密码,可以使用:

bin/elasticsearch-reset-password -u elastic

3. Elasticsearch 的最低版本

活字格日志记录模块利用了 Elasticsearch 的功能,因此 Elasticsearch 必须支持数据流。

建议使用8.12.1版本。

4. Elasticsearch的安装路径

由于Elasticsearch 会消耗大量系统资源,请勿将 Elasticsearch 安装在活字格服务器所在的服务器上。

安装日志收集器

活字格日志记录模块用于收集文本日志和收集监控指标。

如果您要使用 Elasticsearch 作为日志数据库,需要额外安装这两个收集器。

Windows

Windows 用户可以从官方网站下载 Filebeat 和 Metricbeat。

  1. Filebeat:https://www.elastic.co/downloads/past-releases#filebeat

  2. Metricbeat:https://www.elastic.co/downloads/past-releases#metricbeat

image


image

下载解压后,需要将filebeat和metricbeat文件夹中的filebeat.exe和metricbeat.exe可执行文件分别复制到活字格服务器的安装目录“C:\Program Files\ForguncyServer\WebSite\influxDbServerBin”下。

image

Linux操作系统

收集器需要安装在活字格服务器所在的服务器上。如果配置了多个服务器,则需要为每个服务器单独安装收集器。

Linux 用户可以执行以下脚本来下载和安装 filebeat 和 metricbeat。

在执行此脚本之前,您需要确定要安装的采集器的版本(建议使用与 Elasticsearch 相同的版本),以及活字格服务器的安装目录。

# define the downloaded urls
FILEBEAT_URL="https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.12.1-linux-x86_64.tar.gz"
METRICBEAT_URL="https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.12.1-linux-x86_64.tar.gz"
TARGET_DIR="/opt"
# you need to determine the installation directory of your ForguncyServer on your machine and replace the paths in this script accordingly.
SAVE_FOLDER="/opt/ForguncyServer/WebSite/influxDbServerBin"
 
# create target directory(if not exists)
mkdir -p $TARGET_DIR
 
# download filebeat and metricbeat
curl -o /tmp/filebeat.tar.gz $FILEBEAT_URL &
curl -o /tmp/metricbeat.tar.gz $METRICBEAT_URL &
wait
 
# unzip to target directory
tar -C $TARGET_DIR -zxvf /tmp/filebeat.tar.gz
tar -C $TARGET_DIR -zxvf /tmp/metricbeat.tar.gz

# move the extracted files to the SAVE_FOLDER
sudo mv $TARGET_DIR/filebeat-8.12.1-linux-x86_64/filebeat $SAVE_FOLDER/filebeat
sudo rm -rf $TARGET_DIR/filebeat-8.12.1-linux-x86_64

sudo mv $TARGET_DIR/metricbeat-8.12.1-linux-x86_64/metricbeat $SAVE_FOLDER/metricbeat
sudo rm -rf $TARGET_DIR/metricbeat-8.12.1-linux-x86_64
 
# clean up the downloaded zip files
rm /tmp/filebeat.tar.gz
rm /tmp/metricbeat.tar.gz

type=note

说明:

不同的发行版和 CPU 架构需要选择特定的下载版本,具体版本可在官网查看。本节中的脚本示例默认使用适用于 x86 体系结构的通用 Linux 版本。

如何为Elasticsearch启用 x-pack-security

从版本 8 开始,Elasticsearch 默认启用该功能。

但如果配置不当,则默认无法直接启动 Elasticsearch。因此,启用该功能需要额外的配置,例如数据传输的加密/解密。

  • xpack.security.transport:用于配置是否启用集群节点之间的安全通信。启用 x-pack-security 时,它也是必需的配置项。如果开启了 x-pack-security,但关闭了该配置节点,则启动 Elasticsearch 实例将导致错误。

  • xpack.security.http:用于配置是否启用客户端与集群之间的安全通信。如果启用此配置,则发送到 Elasticsearch 的所有请求都必须通过 HTTPS 进行。

1. 生成自签名证书

在Elasticsearch安装目录下执行命令elasticsearch-certutil,生成自签名证书,用于加密 HTTP 和传输层通信。

./bin/elasticsearch-certutil ca # Create a self-signed certificate authority (CA)

type=note

注意:在创建过程中,系统将提示您输入 CA 的密码。后续操作仍需要此密码,请记住此密码。

在 Elasticsearch 根目录下创建名为 “instances.yml” 的配置文件,声明当前群集需要对外公开的节点。

instances:
  - name: "node-1"
    dns:
      - "your.domain.com" # if have DNS
    ip:
      - "10.32.2.94" # the IP address you want to expose

生成通信所需的证书包:

./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --in instances.yml --out elastic-certificates.zip

此操作还需要您输入证书和 CA 的密码。请务必记住这些密码,稍后需要将这些密码写入 Elasticsearch 配置文件。

您可以使用 follow 命令解压缩此文件:

# update apt
sudo apt-get update

# install unzip
sudo apt-get install unzip

# unzip zip file
unzip elastic-certificates.zip

成功执行命令后,您将在 Elasticsearch 根目录下获得一个压缩包。

解压缩后,会获得一个名为“node-name.p12”的证书文件。您需要将此证书文件复制到 Elasticsearch 根目录中的文件夹“config”中。

cp elastic-stack-ca.p12 config/elastic-stack-ca.p12
cp node-1/node-1.p12 config/node-1.p12
cp instances.yml config/instances.yml

2. 配置 Elasticsearch

在文件夹中,您可以找到用于配置 Elasticsearch 节点的配置文件“configelasticsearch.yml”。需要配置的主要节点如下:

# Declare the name of this node in the cluster
node.name: node-1

# Since this example starts a single-instance cluster, configure the master node as the node declared earlier
cluster.initial_master_nodes: ["node-1"]

# Declare the IP address that Elasticsearch cluster listens on. 
# If it's for internal network access, you can configure the local network address of the machine. 
# If you want external network access, you can configure it as 0.0.0.0 to listen on all IP addresses
network.host: 0.0.0.0

# Enable the xpack.security
xpack.security.enabled: true

# Enable secure communication between cluster nodes
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  # Both the keystore and truststore need to be configured with the certificate file generated earlier
  keystore.path: node-1.p12
  truststore.path: node-1.p12
  # The keystore and truststore both need to be configured with the password entered during the certificate creation process, which in this example is xA123456
  keystore.password: xA123456
  truststore.password: xA123456

# Enable secure communication (HTTPS) between clients and the cluster
xpack.security.http.ssl:
  enabled: true
  # Both the keystore and truststore need to be configured with the certificate file generated earlier
  keystore.path: node-1.p12
  truststore.path: node-1.p12
  # The keystore and truststore both need to be configured with the password entered during the certificate creation process, which in this example is xA123456
  keystore.password: xA123456
  truststore.password: xA123456

type=note

说明:

如果已将侦听 IP 配置为 0.0.0.0,Windows 将提示 UAC 防火墙警告。如果未弹出警告且无法连接,则表示未开启本地防火墙通知功能。您需要选中下图中的所有通知复选框,然后重新启动。

打开image-20240305-102258.png

 image

3.重置内置帐户的密码

开启安全通信后,所有对 Elasticsearch 的请求都需要身份验证。目前仅支持用户名/密码认证模式。

可以直接使用内置的Elasticsearch账号elastic,或者可以参考第一节的内容创建自定义账号。但默认情况下,创建的账号没有权限。因此,要使用新账号,您需要配置权限。

首先启动 Elasticsearch 实例(因为重置密码时 Elasticsearch 实例必须运行,否则会出现错误):

./bin/elasticsearch

运行命令elasticsearch-setup-passwords,设置密码:

./bin/elasticsearch-setup-passwords interactive

执行上述命令后,系统将提示您重置所有内置 Elasticsearch 帐户的密码。

4. 测试连接

重置密码后,可以测试Elasticsearch的安全通信功能。您可以直接打开浏览器访问“https://localhost:9200/_cat”。

输入用户名和密码后,如果成功,您应该会看到以下结果。

打开image-20240305-092402.png

image