热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

efk使用心得之环境部署

efk入门篇(一

前言


因公司开发人员需要查询线上日志的需求,运维搭建了一套elk,在当时很好的满足了开发人员的需求,但随着接入的项目增多,在加上前期使用没有做什么调研与规划,导致后面出现很多诸如 ”命名不规范“ ”索引模式无法匹配“ ”报警错乱“ ”索引分片分配过多“ ”索引删除不了“ 这类问题,依靠着”人工智能“一遍遍的把这类问题 ”修复“ 好,最后因为 logstash 占用的内存实在是太大,严重影响其他业务系统正常运行。而笔者这时候在查阅了一些资料后,发现 filebeat 是被设计用来替换logstash 的轻量级数据采集器。经过一番了解后,笔者决定自行搭建一套efk,并遵循业界最佳实践,提供统一的规范,统一的管理。让日志管理高大上一把。


环境准备


  1. 服务器


    通过 hyper-v 准备了三台 centos 7,配置1核4g。


  2. efk 版本


    通过官网下载对应的 rpm 包进行安装即可。这里用的均为 7.5.2。


  3. elasticsearch 集群管理工具


    推荐用 cerebro 通过 github 下载最新的 rpm 包安装即可。


安装及配置


1.安装

elasticsearch 分别安装在三台服务器上,部署成冷热架构,一个hot节点,两个warm节点,kibana、filebeat 安装在任意一台服务器上即可。

2.elasticsearch 配置

    # ---------------------------------- Cluster -----------------------------------
    #
    # Use a descriptive name for your cluster:
    #
    cluster.name: my-cluster
    #
    # ------------------------------------ Node ------------------------------------
    #
    # Use a descriptive name for the node:
    #
    node.name: node-1
    node.attr.box_type: hot
    #
    # Add custom attributes to the node:
    #
    #node.attr.rack: r1
    #
    # ----------------------------------- Paths ------------------------------------
    #
    # Path to directory where to store the data (separate multiple locations by comma):
    #
    path.data: var/lib/elasticsearch
    #
    # Path to log files:
    #
    path.logs: var/log/elasticsearch
    #
    # ----------------------------------- Memory -----------------------------------
    #
    # Lock the memory on startup:
    #
    bootstrap.memory_lock: true
    #
    # Make sure that the heap size is set to about half the memory available
    # on the system and that the owner of the process is allowed to use this
    # limit.
    #
    # Elasticsearch performs poorly when the system is swapping the memory.
    #
    # ---------------------------------- Network -----------------------------------
    #
    # Set the bind address to a specific IP (IPv4 or IPv6):
    #
    network.host: 192.168.117.227
    #
    # Set a custom port for HTTP:
    #
    http.port: 9200
    #
    # For more information, consult the network module documentation.
    #
    # --------------------------------- Discovery ----------------------------------
    #
    # Pass an initial list of hosts to perform discovery when this node is started:
    # The default list of hosts is ["127.0.0.1", "[::1]"]
    #
    discovery.seed_hosts: ["192.168.117.227","192.168.117.229","192.168.117.58"]
    discovery.zen.minimum_master_nodes: 2
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    cluster.initial_master_nodes: ["node-1","node-2","node-3"]
    #
    # For more information, consult the discovery and cluster formation module documentation.
    #
    # ---------------------------------- Gateway -----------------------------------
    #
    # Block initial recovery after a full cluster restart until N nodes are started:
    #
    gateway.recover_after_nodes: 2
    #
    # For more information, consult the gateway module documentation.
    #
    # ---------------------------------- Various -----------------------------------
    #
    # Require explicit names when deleting indices:
    action.destructive_requires_name: true

    这是其中一台的 elasticsearch.yml 配置,其他两台相似,只有少部分配置项不同,这里不在重复陈述。

    通过如下指令来启动一个 elasticsearch 实例

      systemctl start elasticsearch.service


      3.启动 elasticsearch 后常见错误解决

      使用 root 账号启动报错

        useradd 账号名 -g 组名 -p 密码
        chown -R 账号名:组名

        通过 useradd 创建一个组用户,在利用 chown 指令为特定的文件赋予账号权限

        max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

         
         a.通过如下指令查看

          ulimit -Hnulimit -Sn

           b.修改 /etc/security/limits.conf 文件,增加如下配置,用户退出后重新登录生效

            * soft nofile 65536
            * hard nofile 65536

            max number of threads [3818] for user [es] is too low, increase to at least[4096]

            a.通过如下指令查看

              ulimit -Huulimit -Su

              b.修改 /etc/security/limits.conf 文件,增加如下配置,用户退出后重新登录生效

                * soft nproc 4096
                * hard nproc 4096

                max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]


                a.修改 /etc/sysctl.conf 文件

                  vm.max_map_count=262144

                  b.执行如下命令生效或是重启

                    sysctl -p

                    memory locking requested for elasticsearch process but memory is not locked

                    启用 bootstrap.memory_lock: true

                    a.临时性方案适用于非systemd管理

                      ulimit -l unlimited

                      b.永久性方案修改 /etc/security/limits.conf

                        * soft memlock unlimited
                        hard memlock unlimited

                        这里的*代表的是所有用户名称,可以更换为指定用户名
                        另:这里有个坑就是如果/etc/security/limits.d文件夹下有配置文件,那么会覆盖刚才修改的文件,所以请确保该目录没有其它文件

                        c.修改 /etc/sysctl.conf

                          vm.swappiness=0

                          这个参数的作用是告诉linux内核尽量少的使用swap分区,不等于禁用swap,通过少使用swap来提高性能。

                          d.执行如下命令生效或重启

                            sysctl -p


                            4.kibana、filebeat、cerebro 配置和启动基本不会涉及到什么错误需要解决,且网上参考资料也很多,故这里不在做陈述了。后续这里会结合 elasticsearch 开启 ssl 和 https 后,会在详细介绍下这几个组件如何与之通信。


                            写在最后


                            本篇介绍了 elasticsearch 启动后的一些可能出错问题的解决方法,下一篇将继续介绍下如何为 elasticsearch 开启 ssl 和 https。


                            如有收获,点个在看,诚挚感谢。




                            推荐阅读
                            • Python 数据可视化实战指南
                              本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
                            • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
                            • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
                            • Ext JS MVC系列一:环境搭建与框架概览
                              本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
                            • 深入解析 Lifecycle 的实现原理
                              本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
                            • PTArchiver工作原理详解与应用分析
                              PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
                            • Python错误重试让多少开发者头疼?高效解决方案出炉
                              ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
                            • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
                              OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
                            • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
                            • 独家解析:深度学习泛化理论的破解之道与应用前景
                              本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
                            • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
                            • 提升 Kubernetes 集群管理效率的七大专业工具
                              Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
                            • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
                              本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
                            • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
                            • 理工科男女不容错过的神奇资源网站
                              十一长假即将结束,你的假期学习计划进展如何?无论你是在家中、思念家乡,还是身处异国他乡,理工科学生都不容错过一些神奇的资源网站。这些网站提供了丰富的学术资料、实验数据和技术文档,能够帮助你在假期中高效学习和提升专业技能。 ... [详细]
                            author-avatar
                            默念我覀想你A_193
                            这个家伙很懒,什么也没留下!
                            PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
                            Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有