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/elk
tar zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz
mv elasticsearch-7.9.3 elasticsearch
useradd 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.conf
sysctl -p
- 配置集群环境
# 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.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=es
LimitNOFILE=65535
ExecStart=/opt/elk/elasticsearch/bin/elasticsearch
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=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