需求背景:

• 业务发展越来越庞大,服务器越来越多

• 各种访问日志、应用日志、错误日志量越来越多

• 开发人员排查问题,需要到服务器上查日志,效率低、权限不好控制

• 运维需实时关注业务访问情况

ELK 介绍

ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。

分别是:

• Elasticsearch:搜索、分析和存储数据

• Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储

• Kibana:数据可视化

• Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向 Logstash 和 Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。

ELK 架构

Elasticsearch

Elasticsearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎, 用于集中存储日志数据。

Elasticsearch术语:

• Index:索引是多个文档的集合

• Document:Index里每条记录称为Document,若干文档构建一个Index

• Type:一个Index可以定义一种或多种类型,将Document逻辑分组

• Field:ES存储的最小单元

ES 部署

下载地址:https://www.elastic.co/cn/downloads/elasticsearch

支持多种部署方式:

• 二进制包 • yum • rpm • docker

二进制部署(集群方式安装,3台节点一样):

mkdir /opt/elk
tar -zxf elasticsearch-7.9.3-linux-x86_64.tar.gz
mv elasticsearch-7.9.3-linux-x86_64.tar.gz /opt/elk/elasticsearch
useradd es # 出于安全考虑,默认不能用root账号启动
chown -R es:es elasticsearch

启动先决条件:
• 调整进程最大打开文件数数量
# 临时设置 ulimit -n 65535
# 永久设置,重启生效 vi /etc/security/limits.conf
* hard nofile 65535
* soft nofile 65535

• 调整进程最大虚拟内存区域数量
# 临时设置 sysctl -w vm.max_map_count=262144
# 永久设置 echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

修改配置文件(集群方式)

节点1:

# vim config/elasticsearch.yml 
cluster.name: elk-cluster # 集群名称
node.name: node-1 # 集群节点名称
#path.data: /path/to/data # 数据目录
#path.logs: /path/to/logs # 日志目录
network.host: 0.0.0.0 # 监听地址
http.port: 9200 # 监听端口
# transport.tcp.port: 9300 #内部节点之间通信端口
discovery.seed_hosts: ["192.168.0.11", "192.168.0.12","192.168.0.13"]# 集群节点列表
cluster.initial_master_nodes: ["node-1"] # 首次启动指定的Master节点

节点2,3配置注意:

#节点名称更改
node.name: node-2 # 集群节点名称
node.name: node-3 # 集群节点名称
#在节点2或节点3不启用cluster.initial_master_nodes参数,注释掉

配置系统服务管理(3台节点一样):

vim /usr/lib/systemd/system/elasticsearch.service 
[Unit]
Description=elasticsearch
[Service]
User=es
LimitNOFILE=65535
ExecStart=/opt/elk/elasticsearch/bin/elasticsearch
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

验证:

查看集群节点:
curl -XGET 'http://127.0.0.1:9200/_cat/nodes?pretty'
查询集群状态:
curl -i -XGET http://127.0.0.1:9200/_cluster/health?pretty

图形页面管理ES

管理ES的图形页面系统推荐:

• ElasticHD

• cerebro

部署ElasticHD(直接解压后台启动,端口是9800)

unzip elasticHD_linux_amd64.zip -d /opt/elk/
cd /opt/elk/
nohup ./ElasticHD &
tail -f nohup.out

最后我想说的是,部署了3个节点,如果节点2和节点3的elasticsearch目录下的配置文件是从节点1(master节点)复制过来的,那么就要删除/opt/elk/elasticsearch/data目录下的nodes文件,之后重启节点2、3的es进程即可,否则只会显示一个master节点。

报错:搭建es集群,启动三个es节点,访问elasticsearch-head时只显示一个master

参考连接:

https://blog.csdn.net/iot_learner/article/details/108640133

https://www.cnblogs.com/biehongli/p/11650045.html