搭建一套完整的ELK系统

摘要:
ELK日志收集系统简单介绍了ELK的部署和构造。这里我们推荐一个更标准的方案,它集成了日志存储消耗资源的问题和服务器暂时关闭时数据丢失的问题。它主要由filebeat+redis+logstash+弹性搜索+kibana组成。Filebeat在需要收集日志的每台机器上发出,作为日志收集端,Redis用作消息队列,并设置集群和高可用性。Logstatsh用作所有收集日志的过滤和清理端,弹性搜索用作所有日志的存储端,Kibana用作日志显示平台,显示所有收集的日志并提供图标。

ELK日志收集系统介绍  

一  简单介绍     

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

二  搭建介绍

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

  

名称ip地址角色部署应用备注
devops1172.16.173.141日志客户端,消息队列缓存端,日志集中处理端,日志分布存储端,日志展示端filebeat,redis,logstash,elasticsearch,kibana服务端
devops2172.16.173.142日志客户端,消息队列缓存端,日志分布存储端filebeat,redis,elasticsearch客户端
devops3172.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工程组织如下所示

搭建一套完整的ELK系统第1张

     

  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系统》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇为Sublime Text 3设置优雅的字体ubuntu和win10双系统,用ubuntu引导win10启动下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RocketMQ消息存储和ack

消息存储架构 主要有下面三个跟消息存储相关的文件构成。 (1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ,文件名长度为20位,左边补零,剩余为起始偏移量,比如00000000000000000000代表了第一个文件,起始偏移量为0,文件大小为1G=107374...

SAP系统中发送公告的几种办法

      刚刚在闪存里看到朋友在闪存里提到:如何在SAP系统发送公告的T-CODE,觉得今后可能会用到,所以顺便在网上搜索了一下相关资料。由于时间关系,太晚了,得休息了,在此我就不再一个个抠图了,直接借用一下别人的文章,将此方法记录了下来,希望今后有用得到的地方……     1、SM02创建消息,并设定有效期。当用户刷新窗口或打开窗口时会显示。这个消息对...

自己动手设计并实现一个linux嵌入式UI框架(设计)

  看了“自己动手设计并实现一个linux嵌入式UI框架”显然没有尽兴,因为还没有看到庐山真面目,那我今天继续,先来说说,我用到了哪些知识背景。如:C语言基础知识,尤其是指针、函数指针、内存分布,linux 基础知识、如消息队列、framebuffer、多线程、多线程同步、等,数据结构、算法(如链表、队列等),window .netframework 框架...

windows下安装redis以及测试 --转载自http://www.cnblogs.com/lpyan/p/5608333.html

redis加入到Windows 服务以下方式,需要在redis-2.8.24下执行:http://download.csdn.net/download/feiliua/9425770 ,另外php的接口使用http://pecl.php.net/package/redis/2.2.7/windows 1.cmd命令 安装命令: redis-server...

多线程之旅七——GUI线程模型,消息的投递(post)与处理

基于消息的GUI构架 在过去的日子中,大部分编程语言平台的GUI构架几乎没有发生变化。虽然在细节上存在一些差异,比如在功能和编程风格上,但大部分都是采用了相同的构架来响应用户输入以及重新绘制屏幕。这种构架可以被总结为“单线程且基于消息”。   Message msg; While(GetMessage(msg)) { TranslateMess...

redis实现加锁的几种方法示例详解

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。     1、 客户端A请求服务器...