ELK日志收集系统介绍  

一  简单介绍

ELK部署搭建有很多成型的方案,这里推荐一种比较中规中矩的方案,它整合了logstash比较消耗资源以及当服务端临时宕机的时候出现数据丢失的问题,主要由filebeat+redis+logstash+elasticsearch+kibana构成,在每个需要收集日志的机器上面下发filebeat作为日志收集端,redis作为消息队列,并且设置集群,设置高可用,logstatsh作为所有收集到的日志筛选,清洗端,而elasticsearch作为所有的日志的存储端,kibana作为日志的展示平台,展示所有的收集日志并提供图标等。

二  搭建介绍

  这里准备了三台本地虚拟机,他们的信息以及将要部署的软件如下所示。

  

名称 ip地址 角色 部署应用 备注
devops1 172.16.173.141 日志客户端,消息队列缓存端,日志集中处理端,日志分布存储端,日志展示端 filebeat,redis,logstash,elasticsearch,kibana 服务端
devops2 172.16.173.142 日志客户端,消息队列缓存端,日志分布存储端 filebeat,redis,elasticsearch 客户端
devops3 172.16.173.143 日志客户端,消息队列缓存端,日志分布存储端 filebeat,redis,elasticsearch 客户端

注意: 所有部署的应用都是以systemctl的形式进行管理

三  在每台服务器上面开始部署日志收集端,这里使用ansible的脚本形式对服务器进行批量部署(ansible相关的知识自己补充学习)

  3.1  安装filebeat并将其使用systemctl进行部署

    

    3.1.1   提前下载好需要安装的filebeat的文件以及service,这里是rpm包为 filebeat-7.7.0-x86_64.rpm

    3.1.2   service文件是    

[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target [Service] Environment="BEAT_LOG_OPTS="
Environment="BEAT_CONFIG_OPTS=-c /etc/filebeat/filebeat.yml"
Environment="BEAT_PATH_OPTS=-path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat"
ExecStart=/usr/share/filebeat/bin/filebeat -environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
Restart=always [Install]
WantedBy=multi-user.target
  3.1.3 按照ansible工程组织如下所示

    

  3.1.4 最后就是filebeat的安装playbook

- name: copy filebeat rpm to remote
copy: src=filebeat-7.7.0-x86_64.rpm dest=/root mode=755 force=yes - name: rpm install filebeat rpm
shell: rpm -ivh filebeat-7.7.0-x86_64.rpm
args:
chdir: /root - name: copy service to remote
copy: src=filebeat.service dest=/usr/lib/systemd/system/filebeat.service force=yes mode=755 - name: start filebeat service
systemd: name=filebeat state=restarted enabled=yes

  3.2 在每台服务器安装redis中间件作为消息队列,防止在logstatsh在意外中断的时候出现日志文件丢失,前面的工程结构以及ansible不再追述,这里只介绍如何使用ansible安装redis消息中间件

- name: install wget
yum: name=wget state=present - name: install redis
shell: "wget http://download.redis.io/releases/redis-4.0.6.tar.gz"
args:
chdir: /usr/local
ignore_errors: false - name: tar redis
shell: "tar -zxvf redis-4.0.6.tar.gz"
args:
chdir: /usr/local - name: install gcc
yum: name=gcc state=present - name: make
shell: "make MALLOC=libc"
args:
chdir: /usr/local/redis-4.0.6 - name: make install
shell: "make install"
args:
chdir: /usr/local/redis-4.0.6/src - name: remove old redis config
lineinfile:
path: /usr/local/redis-4.0.6/redis.conf
regexp: '^#*?daemonize no|^#*?daemonize yes'
state: absent - name: add new redis config
lineinfile:
path: /usr/local/redis-4.0.6/redis.conf
line: "daemonize yes"
state: present - name: start redis
shell: "/usr/local/bin/redis-server /usr/local/redis-4.0.6/redis.conf"
args:
chdir: /root
ignore_errors: true

  3.3 在devops1上面部署logstash

 

搭建一套完整的ELK系统的更多相关文章

  1. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】

    https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...

  2. 搭建一套完整的Mysql5.7innodbcluster(GroupReplication+mysqlrouter)

    先说三个大步骤: 搭Mysql5.7 Group Replication ,配置成单主模式 安装Mysqlshell,配innodbcluster 安装Mysql-router 第一步:搭Mysql5 ...

  3. 使用express+shell在服务器上搭建一套简单的前端部署系统

    前言 个人项目越来越多,部署需要频繁操作服务器,所以手动搭建一套简单的部署系统. 效果如图 其中包含 原生html+css+js项目,单页面react, vue, angular项目,实现了一键打包发 ...

  4. Docker笔记(十):使用Docker来搭建一套ELK日志分析系统

    一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...

  5. 本地搭建ELK系统

    ELK系统主要由三部分组成,各自是elasticsearch.logstash.kibana. ELK系统收到推送过来的日志后.首先由logstash解析日志中的字段,分解成一个一个的关键字. ela ...

  6. ELK系统搭建流程

    ELK系统搭建流程 1. Logstash 1.1 安装 注:安装在需要收集日志的机器上. cd /data/softs sudo wget https://download.elastic.co/l ...

  7. 用ELK搭建简单的日志收集分析系统【转】

    缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...

  8. 手把手搭建一套基于 Sentry 的异常监控系统

    手把手搭建一套基于 Sentry 的异常监控系统 Sentry 开源版 DevOps refs https://github.com/getsentry/sentry sentry-anomaly-m ...

  9. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...

  10. 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)

    一.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm ...

随机推荐

  1. 一键部署openGauss2.0.1 CentOS 7.6

    一键部署 openGauss2.0.1[CentOS 7.6] 本文档目的是为了帮助高校学生提供基于 CentOS7.6 操作系统,实现 openGauss 数据库一键式安装的脚本. 该脚本执行成功后 ...

  2. 我为什么选择Wiki.js记笔记?

    很长一段时间里,我都被困扰着,感觉陷入了笔记的泥潭,而积累的如此多的笔记也没有形成我自己的知识体系. 之前的记笔记方式 笔记的来源 微信公众号 技术博客 纸质书籍 官网文档 PDF 自己的零散想法 网 ...

  3. LLM应用实战:当KBQA集成LLM

    1. 背景 应项目需求,本qiang~这两周全身心投入了进去. 项目是关于一个博物馆知识图谱,上层做KBQA应用.实现要求是将传统KBQA中的部分模块,如NLU.指代消解.实体对齐等任务,完全由LLM ...

  4. 开发指导—利用组件&插值器动画实现HarmonyOS动效

    一. 组件动画 在组件上创建和运行动画的快捷方式.具体用法请参考通用方法. 获取动画对象 通过调用animate方法获得animation对象,animation对象支持动画属性.动画方法和动画事件. ...

  5. sql 语句系列(插入系列)[八百章之第五章]

    复制数据到另外一个表 这个不解释,只是自我整理. insert EMP_EAST (DEPTNO,DNAME,LOC) select DEPTNO,DNAME,LOC from DEPT where ...

  6. 重新整理.net core 计1400篇[四] (.net core 修改sdk )

    前言 可能有些人还不知道什么是sdk,software development kit,中文是软件开发包的意思. 然后什么是软件开发包? 软件开发工具包是一些被软件工程师用于为特定的软件包.软件框架. ...

  7. Reinforcement Learning (DQN) 中经验池详细解释

    一般DQN中的经验池类,都类似于下面这段代码. import random from collections import namedtuple, deque Transition = namedtu ...

  8. 力扣178(MySQL)-分数排名(中等)

    题目: 表: Scores 编写 SQL 查询对分数进行排序.排名按以下规则计算: 分数应按从高到低排列.如果两个分数相等,那么两个分数的排名应该相同.在排名相同的分数后,排名数应该是下一个连续的整数 ...

  9. 超大福利 | 这款免费 Java 在线诊断利器,不用真的会后悔!

    线上系统为何经常出错?数据库为何屡遭黑手?业务调用为何频频失败?连环异常堆栈案,究竟是哪次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 走进科学带你了解 Arthas ...

  10. 用手机写代码:基于 Serverless 的在线编程能力探索

    ​简介:Serverless 架构的按量付费模式,可以在保证在线编程功能性能的前提下,进一步降低成本.本文将会以阿里云函数计算为例,通过 Serverless 架构实现一个 Python 语言的在线编 ...