ELK Stack日志平台讲义.pdf

1、ELK介绍

https://www.elastic.co/

1.1 ELK需求背景

需求背景:

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

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

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

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

1.2 ELK介绍

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

分别是:

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

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

• Kibana:数据可视化

• Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向 Logstash 和

Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。

1.3 ELK架构

(一)ELK介绍 - ES - 图1

2、Elasticsearch集群搭建

2.1 ES概念

Elasticsearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎,

用于集中存储日志数据。

Elasticsearch术语:

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

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

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

• Field:ES存储的最小单元

(一)ELK介绍 - ES - 图2

3.2 ES部署

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

支持多种部署方式:

• 二进制包

• yum

• rpm

• docker

3.2.1 二进制部署

  1. cd /opt/elk
  2. tar zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz
  3. mv elasticsearch-7.9.3 elasticsearch
  4. useradd es # 出于安全考虑,默认不能用root账号启动
  5. chown -R es:es elasticsearch
  1. [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
  2. # 一下生产必须的先决条件
  3. [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]
  4. [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]
  5. [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

启动先决条件:

  1. 调整进程最大打开文件数数量
  1. # 临时设置
  2. ulimit -n 65535
  3. # 永久设置,重启生效
  4. vi /etc/security/limits.conf
  5. * hard nofile 65535
  6. * soft nofile 65535
  1. 调整进程最大虚拟内存区域数量
  1. # 临时设置
  2. sysctl -w vm.max_map_count=262144
  3. # 永久设置
  4. echo "vm.max_map_count=262144" >> /etc/sysctl.conf
  5. sysctl -p
  1. 配置集群环境
  1. # vim config/elasticsearch.yml
  2. cluster.name: elk-cluster # 集群名称
  3. node.name: node-1 # 集群节点名称
  4. #path.data: /path/to/data # 数据目录
  5. #path.logs: /path/to/logs # 日志目录
  6. network.host: 0.0.0.0 # 监听地址
  7. http.port: 9200 # 监听端口
  8. # transport.tcp.port: 9300 #内部节点之间通信端口(默认的,可以修改)
  9. discovery.seed_hosts: ["192.168.31.61", "192.168.31.62","192.168.31.63"] # 集群节点列表
  10. cluster.initial_master_nodes: ["node-1"] # 首次启动指定的Master节点,写多个就会触发选举
  • 注意:在节点2或节点3不启用cluster.initial_master_nodes参数,注释掉

配置systed系统服务管理:

  1. # cat /etc/systemd/system/elasticsearch.service
  2. [Unit]
  3. Description=elasticsearch
  4. [Service]
  5. User=es
  6. LimitNOFILE=65535
  7. ExecStart=/opt/elk/elasticsearch/bin/elasticsearch
  8. ExecReload=/bin/kill -HUP $MAINPID
  9. KillMode=process
  10. Restart=on-failure
  11. [Install]
  12. WantedBy=multi-user.target
  13. # systemctl daemon-reload
  14. # systemctl enable elasticsearch
  15. # systemctl start elasticsearch

3.3 ES集群状态

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

(一)ELK介绍 - ES - 图3

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

• ElasticHD

• cerebro