• 基于 Ansible 的 ELK 部署说明


    ELK-Ansible使用手册

    ELK-Ansible 是基于 Ansible 的 Playbooks 研发的 ELK集群部署工具。
    本文将介绍如何使用 ELK-Ansible 快速部署 ELK 集群。

    一、准备工作

    1. 目标机器若干(至少一台),配置如下:

    • 系统版本 CentOS7
    • 节点之间请确保网络互通(关闭防火墙)

    2. 一台中控机,配置如下:

    • 系统版本 CentOS7
    • 互联网访问(下载安装包)
    • 机器之间内网互通

    3. ELK角色名词介绍:

    Elasticsearch存储数据并提供分析查询能力,支持集群
    Logstash 解析日志,由一行文本日志解析到结构数据(JSON字典)
    Filebeat 监控日志文件,收集行数据
    Kibana 前端展示界面
    Kafka(可选) 缓存filebeat到logstash过程中的数据, 防止logstash处理不过来造成数据丢失

    4. 给机器分配角色 & 场景选择

    • 根据实际情况分配服务器和角色,

      • 日志的大小来判断es节点数量(1,3,5...)
      • 日志产生速度快,请多配置几台logstash
      • 每台要收集日志的服务器上都要配置filebeat
    • 场景一,带kafka方案

      • hosts文件的kafka角色下有服务器即可
    • 场景二,不带kafka方案

      • hosts文件的kafka角色组下不要配置任何机器

    二、中控机配置 & 部署程序安装

    1. 中控机依赖包安装

    # yum -y install epel-release git curl sshpass ansible vim wget

    2. 下载ELK-Ansible程序

    gihub地址:https://github.com/lizhewei1208/elk-ansible.git

    安装包下载地址: https://urc-elk.oss-cn-shanghai.aliyuncs.com/release/elk-ansible.tar.gz

    cd /opt
    wget https://urc-elk.oss-cn-shanghai.aliyuncs.com/release/elk-ansible.tar.gz
    tar -zxvf elk-ansible-0.0.1.tgz
    cd elk-ansible

    三、目标服务器配置

    1. 登录中控机器,生成中控机器的ssh密钥

    $ ssh-keygen -t rsa                                                                            在中控机生成公密钥文件
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):  
    Enter passphrase (empty for no passphrase):  
    Enter same passphrase again:  
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    4e:f8:b6:c4:1f:c3:1d:2a:b1:10:ba:65:39:74:2f:08 root@lst02
    The key's randomart image is:
    +--[ RSA 2048]----+
    |                 |
    |                 |
    |    E o .        |
    |     + * .       |
    |    . O S . .    |
    |     + B = o .   |
    |    .   O = .    |
    |       o + o     |
    |        . .      |
    +-----------------+

    2. 在中控机中,将目标机器加到ansible-elk的hosts文件中, 并做初始化

    • 文件位置 /opt/elk-ansible/hosts
    • 修改hosts,将目标机器添加到【all_nodes】下
    [all_nodes]
    192.168.79.201
    • 运行以下命令,免密配置完成
    $ ansible-playbook -k playbooks/init_node.yml

    四、配置HOST配置文件

    1. hosts配置文件路径

    /opt/elk-ansible/hosts

    2. host配置文件名词解析:

    参数含义
    [all_nodes] 参数下放置所有的服务器列表,可以配置登陆方式,默认通过sshkey免密登陆,还可以指定用户/密码/端口
    [all_nodes:vars] 参数下放置全局的变量
    install_root_path 代表程序安装目录
    [elasticsearch] 参数下放置需要安装es的节点,会搭建出这些节点组陈过的ES集群
    [elasticsearch:vars] 参数下放置es节点部署时需要的配置变量
    data_path 表示ES数据存放目录
    cluster_name 表示ES集权的名称
    [filebeat] 参数下放置需要安装filebeat的服务器列表,用户收集日志
    [filebeat:vars] 下存放安装过程的配置变量
    kafka_topic 如果有kafka,对应kafka的主题名称
    filebeat_log_path 收集日志的路径
    [logstash] 存放对应角色主机列表,配置使用默认
    [kafka] 存放对应角色主机列表,配置使用默认
    [kafka_zookeeper] 存放对应角色主机列表,配置使用默认
    [kibana] 存放对应角色主机列表,配置使用默认

    五、两种部署场景

    1、包含kafka的使用场景

    各服务器角色分工

    服务器对应角色
    192.168.10.72 ansible控制机
    192.168.10.73  elasticsearch、logstash、filebeat
    192.168.10.74 elasticsearch、logstash、filebeat
    192.168.10.75 elasticsearch、logstash、kafka、filebeat、kibana

    具体hosts配置文件样例:    

    [all_nodes]
    192.168.10.73        # 通过sshkey免密登陆
    192.168.10.74
    192.168.10.75
    
    [all_nodes:vars]
    install_root_path=/usr/local
    
    ############################### ElasticSearch
    [elasticsearch]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [elasticsearch:vars]
    elasticsearch_version=7.2.0
    data_path=/var/lib/elasticsearch
    cluster_name=ELKCluster
    
    ############################### Logstash
    [logstash]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [logstash:vars]
    logstash_version=7.2.0
    pipeline_workers=5
    pipeline_batch_size=10
    kafka_group_id=logstash_kafka                       # 作为kafka的消费者的group-id
    kafka_topic=elk-pipeline-topic                      # kafka中的对应的topic
    
    
    ############################### Kafka
    [kafka]                                             # 不配置任何机器,即不带kafka场景
    192.168.10.75
    
    [kafka:vars]
    kafka_version=2.12-2.2.0
    
    [kafka_zookeeper]
    192.168.10.75
    
    [kafka_zookeeper:vars]
    zookeeper_version=3.4.13
    
    
    ############################### filebeat
    [filebeat]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [filebeat:vars]
    filebeat_version=7.2.0
    kafka_topic=elk-pipeline-topic                      # kafka中的对应的topic
    filebeat_log_path=/var/log/*.log                    # 监视的日志
    
    
    ############################### kibana
    [kibana]
    192.168.10.75
    
    [kibana:vars]
    kibana_version=7.2.0

    2、不包含kafka的使用场景

    各机器的角色分配

    服务器对应角色
    192.168.10.72 ansible控制机
    192.168.10.73  elasticsearch、logstash、filebeat
    192.168.10.74 elasticsearch、logstash、filebeat
    192.168.10.75 elasticsearch、logstash、filebeat、kibana

    具体hosts配置文件样例:

    [all_nodes]
    192.168.10.73        # 通过sshkey免密登陆
    192.168.10.74
    192.168.10.75
    
    [all_nodes:vars]
    install_root_path=/usr/local
    
    ############################### ElasticSearch
    [elasticsearch]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [elasticsearch:vars]
    elasticsearch_version=7.2.0
    data_path=/var/lib/elasticsearch
    cluster_name=ELKCluster
    
    ############################### Logstash
    [logstash]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [logstash:vars]
    logstash_version=7.2.0
    pipeline_workers=5
    pipeline_batch_size=10
    
    
    ############################### filebeat
    [filebeat]
    192.168.10.73
    192.168.10.74
    192.168.10.75
    
    [filebeat:vars]
    filebeat_version=7.2.0
    filebeat_log_path=/var/log/*.log                    # 监视的日志
    
    
    ############################### kibana
    [kibana]
    192.168.10.75
    
    [kibana:vars]
    kibana_version=7.2.0

    六、执行部署安装

    $cd /opt/elk-ansible
    $bash deploy.sh               运行 bash deploy.sh部署
  • 相关阅读:
    JVM调优
    Java堆空间的划分:新生代、老年代
    说一下 jvm 有哪些垃圾回收器?
    JVM的垃圾回收算法有哪些
    订单并发处理--悲观锁和乐观锁、任务队列以及订单模块开发流程
    MySQL数据库的四种事务隔离级别以及事务的并发问题(脏读/不可重复读/幻读)
    Python面试总结复习(四)
    Python面试总结复习(三)
    Django表设计,多表操作复习
    python面试总结复习(二)
  • 原文地址:https://www.cnblogs.com/lizhewei/p/11805107.html
Copyright © 2020-2023  润新知