[]
如果需要使用Elasticsearch作为日志数据库,您需要单独安装Elasticsearch数据库和日志收集器。
单击https://www.elastic.co/downloads/past-releases#elasticsearch下载Elasticsearch。
本节以8.12.1为例,来介绍Elasticsearch的安装步骤。
Windows用户可以直接单击页面中的下载链接进行下载。
下载并解压到指定目录后,在目录“.\elasticsearch\bin”中执行.\elasticsearch即可直接运行Elasticsearch 。
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
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 用户可以从官方网站下载 Filebeat 和 Metricbeat。
Filebeat:https://www.elastic.co/downloads/past-releases#filebeat
Metricbeat:https://www.elastic.co/downloads/past-releases#metricbeat
下载解压后,需要将filebeat和metricbeat文件夹中的filebeat.exe和metricbeat.exe可执行文件分别复制到活字格服务器的安装目录“C:\Program Files\ForguncyServer\WebSite\influxDbServerBin”下。
收集器需要安装在活字格服务器所在的服务器上。如果配置了多个服务器,则需要为每个服务器单独安装收集器。
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 版本。
从版本 8 开始,Elasticsearch 默认启用该功能。
但如果配置不当,则默认无法直接启动 Elasticsearch。因此,启用该功能需要额外的配置,例如数据传输的加密/解密。
xpack.security.transport:用于配置是否启用集群节点之间的安全通信。启用 x-pack-security 时,它也是必需的配置项。如果开启了 x-pack-security,但关闭了该配置节点,则启动 Elasticsearch 实例将导致错误。
xpack.security.http:用于配置是否启用客户端与集群之间的安全通信。如果启用此配置,则发送到 Elasticsearch 的所有请求都必须通过 HTTPS 进行。
在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
在文件夹中,您可以找到用于配置 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 防火墙警告。如果未弹出警告且无法连接,则表示未开启本地防火墙通知功能。您需要选中下图中的所有通知复选框,然后重新启动。
开启安全通信后,所有对 Elasticsearch 的请求都需要身份验证。目前仅支持用户名/密码认证模式。
可以直接使用内置的Elasticsearch账号elastic,或者可以参考第一节的内容创建自定义账号。但默认情况下,创建的账号没有权限。因此,要使用新账号,您需要配置权限。
首先启动 Elasticsearch 实例(因为重置密码时 Elasticsearch 实例必须运行,否则会出现错误):
./bin/elasticsearch
运行命令elasticsearch-setup-passwords,设置密码:
./bin/elasticsearch-setup-passwords interactive
执行上述命令后,系统将提示您重置所有内置 Elasticsearch 帐户的密码。
重置密码后,可以测试Elasticsearch的安全通信功能。您可以直接打开浏览器访问“https://localhost:9200/_cat
”。
输入用户名和密码后,如果成功,您应该会看到以下结果。