搭建一套完整的ELK系统
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系统的更多相关文章
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】
https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...
- 搭建一套完整的Mysql5.7innodbcluster(GroupReplication+mysqlrouter)
先说三个大步骤: 搭Mysql5.7 Group Replication ,配置成单主模式 安装Mysqlshell,配innodbcluster 安装Mysql-router 第一步:搭Mysql5 ...
- 使用express+shell在服务器上搭建一套简单的前端部署系统
前言 个人项目越来越多,部署需要频繁操作服务器,所以手动搭建一套简单的部署系统. 效果如图 其中包含 原生html+css+js项目,单页面react, vue, angular项目,实现了一键打包发 ...
- Docker笔记(十):使用Docker来搭建一套ELK日志分析系统
一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...
- 本地搭建ELK系统
ELK系统主要由三部分组成,各自是elasticsearch.logstash.kibana. ELK系统收到推送过来的日志后.首先由logstash解析日志中的字段,分解成一个一个的关键字. ela ...
- ELK系统搭建流程
ELK系统搭建流程 1. Logstash 1.1 安装 注:安装在需要收集日志的机器上. cd /data/softs sudo wget https://download.elastic.co/l ...
- 用ELK搭建简单的日志收集分析系统【转】
缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...
- 手把手搭建一套基于 Sentry 的异常监控系统
手把手搭建一套基于 Sentry 的异常监控系统 Sentry 开源版 DevOps refs https://github.com/getsentry/sentry sentry-anomaly-m ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)
一.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm ...
随机推荐
- Copy 进阶用法
Copy 进阶用法 本文出处:https://www.modb.pro/db/239809 copy 是最基础的导入导出命令,那么它有什么其他用法可以帮助我们更好地进行导入导出的工作呢? 关于导入方式 ...
- 通过path在windows下临时修改python和pip路径 以便于配置环境只对当前命令行窗口生效
配置前 在cmd命令行下输入新env的路径 path=D:\Miniconda2\envs\openmmlab\openmmlab;D:\Miniconda2\envs\openmmlab\openm ...
- 【译】宣布在 Visual Studio 17.10 预览2中为 ARM64 架构提供 SSDT
我们很高兴地宣布在 ARM64 中为 Visual Studio 推出 SQL Server Data Tools(SSDT).这个增强是在令人兴奋的17.10预览版2中发布的.arm64 上 Vis ...
- Web 在线制表工具稳定吗?和桌面报表工具对比哪个好用?
报表工具中最成熟常用的基本都是桌面设计器,但是 web 在线制表工具也占有部分市场,这是因为它也有一些优点: 1.报表设计和发布都在 web 端,无需额外安装桌面设计器 2.web 在线制表工具可直接 ...
- TypeScript 中类的理解?应用场景?
一.是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 ❝ 类是一种用户定义的引用数据类型,也称类类型 ❞ 传统的面向对象语 ...
- Mui 消息推送
一.push通过H5+实现 简单实现方式:通过轮询服务器是否有新消息推送过来 mui.plusReady(function() {plus.navigator.closeSplashscreen(); ...
- 使用C# 创建、填写、删除PDF表单域
通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息.PDF表单通常用于收集信息.反馈或进行在线申请,是许多行业中数据收集和交换的重要工具. PDF表单可以包含 ...
- 力扣58(java)-最后一个单词的长度(简单)
题目: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开.返回字符串中 最后一个 单词的长度. 单词 是指仅由字母组成.不包含任何空格字符的最大子字符串. 示例 1: 输入:s = &q ...
- 云原生 DevOps,模型化应用交付能力很重要!
简介: DevOps 文化及其支撑其落地实践的自动化工具与平台能力在云原生架构渐为普及的背后,发挥了关键的价值. 撰稿:溪洋 云原生正在成为企业业务创新和解决规模化挑战的加速器. 云原生带来的变革绝 ...
- 什么是 IDA 工具
中文名:交互式反编译器 英文名:Interactive Disassembler Professional 为众多 0day 世界的成员和 ShellCode 安全分析人士不可缺少的利器! IDA P ...