ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

  • 虚拟化服务

  • 数据库服务

    • MySQL笔记

    • ELK笔记

      • ELK介绍和ES部署
        • ELK架构介绍
          • ELK介绍
          • Elasticsearch介绍
          • Logstash介绍
          • Kibana介绍
        • 部署Elasticsearch
          • 1. 部署JDK环境
          • 2. 安装elasticsearch
          • 3. 配置elasticsearch
          • 4. 创建相关目录并授权
          • 5. 内存锁相关配置
          • 6. 启动服务
          • 7. 安装Chrome浏览器插件
      • ES相关概念与工作原理
      • ES相关操作
      • Logstash和Kibana
    • Redis笔记

    • MongoDB笔记

    • Git笔记

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 数据库服务
  • ELK笔记
Hoshinozora
2023-03-21
目录

ELK介绍和ES部署

# ELK架构介绍

# ELK介绍

  • ELK又称ELKstack,它是由Elasticsearch、Logstash、Kibana三个软件所组成的架构。

  • ELK架构的特点

    • 处理方式灵活
      • elasticsearch是实时全文索引,他是一个搜索引擎,具有强大的搜索功能。
    • 配置相对简单
      • elasticsearch全部使用JSON接口,logstash使用模块配置,kibana的配置简单。
    • 检索性能高效
      • 基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
    • 集群线性扩展
      • elasticsearch和logstash都可以灵活线性扩展。
    • 前端操作绚丽
      • kibana的前端设计比较绚丽,而且操作简单。

# Elasticsearch介绍

  • ES是一个开源的分布式全文搜索引擎,基于Lucene(全文搜索框架)开发而来,它类似于一个数据库。
  • 它可实现数据的实时全文搜索、支持分布式可实现高可用。
  • 它提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。

# Logstash介绍

  • Logstash用于实现日志收集、转发、日志过滤等,支持普通log文件、自定义json格式的日志解析。它是用INPUTS、OUTPUT插件来实现收集与转发,用FILTERS来实现日志过滤等。
  • 实际上只要有Logstash就可以实现日志收集功能了,但功能不如一整个架构那么强大,所以一般用它来实现日志收集,然后转发给Elasticsearch进行存储。

image-20230321211908155

# Kibana介绍

  • 主要用于调用elasticsearch接口获取数据,然后提供数据查询、数据可视化等功能。

# 部署Elasticsearch

# 1. 部署JDK环境

  • Elasticsearch依赖于Java环境运行,所以需要先安装Java环境。
# 下载JDK二进制包并上传到服务器
https://www.oracle.com/java/technologies/downloads/archive/

# 解压到指定目录
mkdir -p /data/lib/jdk
tar -xvf ./jdk-*.tar.gz -C /data/lib/jdk

# 创建软链接 (方便更新版本)
ln -s /data/lib/jdk/jdk* /data/lib/jdk/jdk

# 配置JAVA环境变量
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/data/lib/jdk/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile

# 验证是否生效
java -version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 2. 安装elasticsearch

  • 下载elasticsearch的rpm包
    • https://www.elastic.co/cn/downloads/elasticsearch
  • 使用yum安装elasticsearch
    • yum localinstall -y elasticsearch-*.rpm
    • 使用yum安装rpm会自动解决依赖问题。

# 3. 配置elasticsearch

  • vim /etc/elasticsearch/elasticsearch.yml

    # 集群名称(同一集群中各节点的集群名称配置必须相同)
    cluster.name: elk-cluster
    
    # 节点名称(同一集群中各节点的节点名称配置必须不同,用于区分不同的节点)
    node.name: elk01
    
    # elasticsearch数据存放目录
    path.data: /data/apps/elk/data
    
    # elasticsearch日志存放目录
    path.logs: /data/apps/elk/logs
    
    # 启用内存锁,可以避免ES缓存的文件被频繁的交换,而导致的查询时磁盘IO高问题。
    bootstrap.memory_lock: true
    
    # elasticsearch监听地址
    network.host: 0.0.0.0
    
    # elasticsearch服务端口
    http.port: 9200
    
    # 配置所有集群节点的IP
    discovery.seed_hosts: ["192.168.10.80", "192.168.10.81"]
    
    # 关闭安全传输(配置稍微麻烦,先关闭)
    xpack.security.enabled: false
    
    # 是否压缩传输
    transport.tcp.compress: true
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29

# 4. 创建相关目录并授权

  • mkdir -p /data/apps/elk/{data,logs}
  • chown -R elasticsearch.elasticsearch /data/apps/elk/

# 5. 内存锁相关配置

  • 启动内存锁可以避免ES缓存的文件被频繁的交换,而导致的查询时磁盘IO高问题。启动内存锁除了要修改配置文件之外,还需要修改系统内存限制、修改ES服务在systemd中的配置。

  • 配置ES配置文件

    # 启用内存锁
    bootstrap.memory_lock: true
    
    1
    2
  • 修改系统内存限制

    • vim /etc/security/limit.conf

      elasticsearch soft memlock unlimited
      elasticsearch hard memlock unlimited
      
      1
      2
  • 修改ES服务在systemd中的配置

    • 编辑ES配置文件 systemctl edit elasticsearch
    • 在[Service]下添加LimitMEMLOCK=infinity
    • 重新加载配置文件 systemctl daemon-reload

# 6. 启动服务

  • systemctl start elasticsearch && systemctl enable elasticsearch

# 7. 安装Chrome浏览器插件

  • Elasticsearch-Head是一款浏览器插件,它用于提供可操作ES的图形化界面。
  • 在Chrome浏览器中访问该地址进行安装:https://chrome.google.com/webstore/search/ElasticSearch%20Head?hl=zh-CN
    • 一般需要翻墙才能访问,如果不能翻墙可以通过百度下载插件包,然后通过"扩展程序"添加插件即可。
#数据库#ELK#ElasticSearch#Logstash#Kibana#全文搜索#日志收集
MySQL主从复制
ES相关概念与工作原理

← MySQL主从复制 ES相关概念与工作原理→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式