1、ELK介绍
1.1 ELK需求背景
需求背景:
• 业务发展越来越庞大,服务器越来越多
• 各种访问日志、应用日志、错误日志量越来越多
• 开发人员排查问题,需要到服务器上查日志,效率低、权限不好控制
• 运维需实时关注业务访问情况
1.2 ELK介绍
ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。
分别是:
• Elasticsearch:搜索、分析和存储数据
• Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储
• Kibana:数据可视化
• Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向 Logstash 和
Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。
1.3 ELK架构

2、Elasticsearch集群搭建
2.1 ES概念
Elasticsearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎,
用于集中存储日志数据。
Elasticsearch术语:
• Index:索引是多个文档的集合
• Document:Index里每条记录称为Document,若干文档构建一个Index
• Type:一个Index可以定义一种或多种类型,将Document逻辑分组
• Field:ES存储的最小单元

3.2 ES部署
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
支持多种部署方式:
• 二进制包
• yum
• rpm
• docker
3.2.1 二进制部署
cd /opt/elktar zxvf elasticsearch-7.9.3-linux-x86_64.tar.gzmv elasticsearch-7.9.3 elasticsearchuseradd es # 出于安全考虑,默认不能用root账号启动chown -R es:es elasticsearch
[2021-11-18T16:18:07,135][WARN ][o.e.g.DanglingIndicesState] [k8s-master1] gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually# 一下生产必须的先决条件[2021-11-18T16:18:08,376][WARN ][o.e.b.BootstrapChecks ] [k8s-master1] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535][2021-11-18T16:18:08,376][WARN ][o.e.b.BootstrapChecks ] [k8s-master1] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144][2021-11-18T16:18:08,377][WARN ][o.e.b.BootstrapChecks ] [k8s-master1] 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
启动先决条件:
- 调整进程最大打开文件数数量
# 临时设置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.confsysctl -p
- 配置集群环境
# vim config/elasticsearch.ymlcluster.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.31.61", "192.168.31.62","192.168.31.63"] # 集群节点列表cluster.initial_master_nodes: ["node-1"] # 首次启动指定的Master节点,写多个就会触发选举
- 注意:在节点2或节点3不启用cluster.initial_master_nodes参数,注释掉
配置systed系统服务管理:
# cat /etc/systemd/system/elasticsearch.service[Unit]Description=elasticsearch[Service]User=esLimitNOFILE=65535ExecStart=/opt/elk/elasticsearch/bin/elasticsearchExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target# systemctl daemon-reload# systemctl enable elasticsearch# systemctl start elasticsearch
3.3 ES集群状态
查看集群节点:curl -XGET 'http://127.0.0.1:9200/_cat/nodes?pretty'查询集群状态: curl -i -XGET http://127.0.0.1:9200/_cluster/health?pretty

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