Elasticsearch 是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch 是由 Elastic 公司创建。它的代码位于 https://github.com/elastic/elasticsearch。目前,Elasticsearch 是一个免费及开放(free and open)的项目。同时,Elastic 公司也拥有 LogstashKibana 开源项目。这个三个开源项目组合在一起,就形成了 ELK 软件栈。他们三个共同形成了一个强大的生态圈。简单地说,Logstash 负责数据的采集,处理(丰富数据,数据转换等),Kibana 负责数据展示,分析,管理,监督及应用。Elasticsearch 处于最核心的位置,它可以帮我们对数据进行快速地搜索及分析。

部署Elasticsearch

下载地址

LINUX X86_64

1
2
tar -xzf elasticsearch-7.15.0-linux-x86_64.tar.gz
cd elasticsearch-7.15.0

修改配置文件

/home/user/elasticsearch-7.15.0/config/elasticsearch.yml

1
2
network.host: 0.0.0.0
discovery.seed_hosts: ["0.0.0.0"] #解决报错[3]

通过设置 network.host 为 0.0.0.0,它表明 Elasticsearch 可以绑定电脑的任何 IP 地址。你可以使用私有地址 http://:9200 来进行访问。当然你可以通过 http://localhost:9200

1
2
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

这里不设置kibana启动不了,报Kibana server is not ready yet

报错

image-20211005183130348

1
2
3
4
ERROR: [3] bootstrap checks failed. You must address the points described in the following [3] lines before starting Elasticsearch.
bootstrap check failure [1] of [3]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
bootstrap check failure [2] of [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap check failure [3] of [3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

解决方法 ElasticSearch启动报错,bootstrap checks failed

[1]max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

编辑 /etc/security/limits.conf,追加以下内容;

1
2
* soft nofile 65536
* hard nofile 65536

此文件修改后需要重新登录用户,才会生效

[2]max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=262144

保存后,执行:

sysctl -p

启动Elasticsearch

1
2
3
[root@localhost user]# netstat -ntlp|grep 9*00
tcp6 0 0 :::9200 :::* LISTEN 20512/java
tcp6 0 0 :::9300 :::* LISTEN 20512/java

9300:集群内节点通讯端口
9200:Elasticsearch开放的REST接口

命令行访问

1
curl 'http://localhost:9200/?pretty'

浏览器访问

image-20211005215047008

作为进程守护运行

1
./bin/elasticsearch -d -p pid

上面的这个命令把运行的进程存放于一个叫做 pid 的文件之中,为了方便下面的终止。可以在 $ES_HOME/logs/ 目录中找到日志消息。

要关闭 Elasticsearch,请终止 pid 文件中记录的进程 ID

1
pkill -F pid

通过如下的 jps (Java Virtual Machine Process Status Tool)来查看 Elasticsearch 的运行

1
2
[root@localhost user]# jps | grep Elasticsearch
4721 Elasticsearch

yum install -y java-1.8.0-openjdk-devel

停止运行

1
kill -9 4721

参考链接

部署Kibana

1
2
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.0-linux-x86_64.tar.gz
tar -zxf kibana-7.15.0-linux-x86_64.tar.gz

运行

1
./bin/kibana

修改配置文件/config/kibana.yml

1
2
3
4
elasticsearch.hosts: ["http://localhost:9200"]
# 将localhost修改为Elasticsearch所在ip
i18n.locale: "zh-CN"
#设置中文

部署Winlogbeat

下载并安装 Winlogbeat

下载

1
2
cd "C:\Program Files\Winlogbeat"
.\install-service-winlogbeat.ps1

C:\Program Files\Winlogbeat\winlogbeat.yml 文件中修改 output.elasticsearch 下的设置以指向您的 Elasticsearch 安装。

编辑配置

修改 C:\Program Files\Winlogbeat\winlogbeat.yml 以设置连接信息:

1
2
3
4
5
6
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
setup.kibana:
host: "<kibana_url>"

其中,<password>elastic 用户的密码,<es_url> 是 Elasticsearch 的 URL,<kibana_url> 是 Kibana 的 URL。

启动Winlogbeat

setup 命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。

1
2
.\winlogbeat.exe setup
Start-Service winlogbeat