快速入门ElasticSearch
写在前面ElasticSearch是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,在日常工作和学习中扮演着非常重要的角色,鉴于此本篇将从ElasticSearch的安装、基础概念、基本用法、高级查询等角度来进行介绍。
ElasticSearch简介ElasticSearch是一款基于Apache Lucene构建的开源搜索引擎,采用Java编写,提供简单易用的RESTful API,开发者可以通过它轻松实现简单明了的搜索功能。ElasticSearch轻松的横向扩展能力,支持PB级别的结构化和非结构化数据处理。其实就是说当机器的磁盘容量不满足需求的时候,可以通过不断的横向添加节点(机器)来解决容量问题,通过这种方式可以使我们的存储容量从GB到TB甚至PB级别的转化。
接下来学习ElasticSearch的应用场景:(1)海量数据分析引擎。当你需要对应用日志、系统日志等进行分析时,可以使用ElasticSearch的聚合搜索功能来实现;(2)站内搜索引擎。当你需要快速搭建一个站内搜索的时候,使用ElasticSearch就能完成这个 ...
CICD平台搭建:Jenkins应用
接下来介绍如何将Jenkins与平时使用的工具进行集成使用,这样使得大家在可以编写Job的同时,能够灵活使用任务去集成调用Jenkins集成运用。本篇主要介绍以下内容:1、Jenkins Linux Shell集成。Linux Shell模块作为Jenkins下最常使用的模块,在Jenkins平台内最受大家欢迎的模块,作为运维人员可以无缝的将很多保存在Linux系统下的脚本迁移到Jenkins平台内,便于日常管理。作为开发人员,你也可以将平时使用到的Linux命令行任务迁移到Jenkins平台内,进行日常的代码测试等工作。2、Jenkins参数集成。Jenkins参数作为Jenkins重要的组成部分,所有需要与Jenkins进行数据交互的数据都需要从这个接口中进入,我们可以传入不同的参数,让Jenkins的任务实现不同环境、不同版本、不同逻辑的执行效果。3、Jenkins Git集成。可以使用Jenkins内建的git插件,将github、gitlab等仓库代码克隆到Jenkins本地,这样便于后续的代码构建工作。4、Jenkins Maven集成。可以使用Jenkins内建的Mave ...
CICD平台搭建:Jenkins Job安装
下面是Jenkins的首页,如图所示。接下来介绍Jenkins Job相关的内容。
Jenkins Job介绍Jenkins作为一个持续集成工具,它其实是由若干个Job任务或者Project项目构成了一个庞大的运维开发平台系统。你可以将平时的开发、测试、部署或者基础运维相关的工作任务通过创建一个项目或者任务从而保存在Jenkins任务列表当中,方便你在Jenkins平台下进行日常的开发、运维和维护工作。
在Jenkins平台下,我们的工作可以利用Jenkins内建模块或者特定的脚本语法,将我们的工作内容抽象成Jenkins Job(Jenkins任务),然后你可以在这个任务中通过配置相应的参数以及工具模块,从而作为一个可执行的任务,共享保存到Jenkins平台下,供日常工作中不同权限的人员重复build构建执行,这样就将传统的通过单机图形界面或者命令行脚本去配置执行日常任务,迁移到Jenkins这个共享平台下,去进行统一化的任务配置执行,这样就大大的简化了工作流程,方便日常的统一维护工作。
你每一次执行任务的结果记录称之为一个build构建,你可以通过查看这个build构建去获取到我 ...
CICD平台搭建:Jenkins安装
Jenkins简说Jenkins是一个用java编写的开源持续集成工具,它提供了软件开发的持续集成服务,支持很多主流软件和配置管理工具与其配合实现软件配置管理和持续集成功能。Jenkins作为一个运维行业内用途最为广泛的持续集成工具,它将传统意义上的运维工作与开发工作完美地结合在一起。作为一个运维人员,你可能需要编写很多脚本,执行很多命令,但如何去管理、审计这些脚本,以及如何在数以万计的服务器中和同事协同配合完成一项工作,则是目前我们需要考虑的问题。如果你仅仅限制于command line(命令行),那以后无论遇到任何突发情况,你将疲于奔命,因为你是人不是机器。虽然你可以知道你写的脚本在哪里起作用,在哪里执行实现了什么功能等,但是你手里没有一套完整的系统去管理和让别人了解你日常工作的内容,可能对于别人来说你的工作就是一个黑盒。Jenkins的出现彻底打开了这个黑盒,可以让运维人员和开发人员可以协同工作到一起,进入到一个白盒之中,它在运维工作中起到的是承上启下的作用。首先Jenkins的前台界面方便我们能够直观的收集到我们执行的job所有相关的信息,而且它能够作为一个Pipeline将我 ...
CICD平台搭建:Ansible playbooks介绍
将下来介绍Ansible playbooks的相关知识,之前你已经在本地安装了ansible,现在就是如何编写脚本让ansible发挥作用。
playbook语言介绍playbook作为ansible独有的术语,是ansible配置部署的编排语言框架,本身简单易读的语法结构以及丰富的内嵌模块非常易于我们编写远程系统部署策略,playbook基础的文件格式为yaml格式,可以将playbook称之为总的乐谱,每一个yaml文件可以称为一个playbook的乐章,在这个playbook下可以编写一个或多个task作为这个乐章的音符。我们通过ansible相关的命令去play演奏这个乐谱,就可以将我们预先写好的任务,按照特定的编排部署到远程服务器当中,也就是演奏给我们的听众听。
接下来将详细说明及通过demo演示的方式,向大家介绍一个基础playbooks的框架格式与编写规范。这里通过引入一个Test playbooks乐谱作为一个例子,进行逐一介绍它的基础框架和格式。下面是它的总文件结构:
inventory目录、roles目录及deploy.yml文件构成了它的表层目录结构。下面就详细 ...
CICD平台搭建:Ansible安装
在前面系统学习了gitlab的相关知识点和安装、配置、流程等demo演示,接下来介绍Ansible这个工具。在此之前可以设想一下十年前的我们是如何对产品进行部署测试的?如果那时候你公司有开发能力,可能会研发出一套部署测试脚本或者系统,去线上部署自己的产品。又或者通过自己的运维团队和开发团队协同将产品部署到线上,但是在很多情况下运维人员只是做一些基础的搭建服务器等工作,而更多涉及到测试部署的工作都是靠开发人员来完成的,这使得开发人员压力山大。开发人员都有一套自己解决部署问题的黑盒,虽然问题完成了,但是问题也同样明显,大家没有一套统一解决问题的框架或者说是部署工具。如果没有一份详细的部署文档去解释开发人员的部署架构原理,那么可能在后期给该工具使用的运维人员带来巨大的时间成本。
而Ansible的出现就是为了解决这个问题,它可以让我们放弃自己原来开发的部署工具。Ansible是一个开源的部署工具,开发语言为Python,并以playbook作为基础部署架构,仅仅依赖系统标配的ssh连接与授权管理,就可以实现远程节点的快速部署。它的模块化部署管理,兼容Linux与Windows平台,所以说An ...
CICD平台搭建:Gitlab应用
Gitlab的应用应用说明接下来将从开发和运维的两个视角来介绍Gitlab的应用。Gitlab强大之处在于具有强大的分布式代码版本控制系统的同时,也有出色的后台管理能力。它的后台管理可以针对不同项目、不同用户去制定不同的访问策略,开发和运维这两个角色可以各司其职,互不影响地在自己的场景下工作。
作为开发人员,关注点肯定就是代码的快速发布与审核。每一个项目下各个小组都会去维护自己的项目分支,当这个分支在多次不同环境下部署测试成功之后,接着会提交一个Master主分支合并的申请,然后等待项目领导去审核,决定是否确认合并操作,确认后开发人员又会接着另一个Feature分支继续工作。
作为运维人员,关注点肯定就是在保证Gitlab本身的维护与管理。平时运维人员大部分时间都需要去后台获取相关的系统关键值,如CPU利用率,内存、磁盘使用率,系统健康状态等,以保护Gitlab始终处于一种高可用、高并发、高性能的状态。除此之外也需要关注Gitlab的权限管理,作为Gitlab的admin你需要去分配不同人对项目具有不同的权限,保证开发人员具有分支的克隆、删除、推送、提交、合并和创建分支等权限,保证项目 ...
CICD平台搭建:Gitlab安装
持续交付持续交付指的是一种能够使得软件在较短的循环中可靠的发布的软件工程方法。在持续交付初期需要掌握的内容有:(1)版本控制系统,如GitLab、GitHub等,也就是代码仓库,用来作为项目构建初期代码构建的仓库平台;(2)持续集成工具,如Jenkins,作为核心的平台,用来将代码抓取到本地,进行集成配置工作;(3)部署交付工具,如Ansible、Saltstack、Chef等,对我们在Jenkins本地抓取的代码进行最终的远程服务器端交付推送工作。因此我们可以得出一个结论:持续交互=交付+版本控制系统&持续集成工具&部署工具。
本套笔记用于记录Jenkins+Ansible+Gitlab如何搭建一个自动化的部署平台。在此过程中会解决一些问题,如Jenkins如何集成Ansible、playbook等;如何使用Gitlab集成我们的交付部署。
记录内容本套笔记主要记录的内容有:(1)GitLab代码仓库的搭建流程与使用流程,且介绍这个工具在项目交付过程中所起的作用;(2)Ansible部署工具的虚拟环境配置以及Playbook脚本编写规范,并介绍Ansible的架构使用 ...
Sleuth数据存储
写在前面默认情况下,Zipkin Server会将跟踪信息存储在内存中,但是当用户每次重启Zipkin Server时,都会将之前收集的跟踪信息进行删除,并且当有大量跟踪信息时存储在内存中肯定是不行的,因此正确的做法是将数据持久化到外部存储磁盘中,使用MySQL来进行存储,也可以将其输出到ElasticSearch中存储存储,这两种方式本文都会详细介绍。
数据持久化持久化到MySQL中MySQL简介MySQL是一款优秀的开源关系型数据库,因其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
持久化到MySQL流程请注意zipkin默认是支持HTTP实现的收集,因此需要将现在基于RabbitMQ消息中间件实现的方式注释掉,后期会介绍如何将基于消息中间件的收集持久化到MySQL数据库中。
第一步,在MySQL中创建用于Zipkin存储的Schema。由于笔者使用的zipkin-server版本是2.12.6,因此首先需要点击 这里选择自己对应版本的readme.md文档进行阅读,往下看到Applying the schema部分,找 ...
Sleuth整合Zipkin
写在前面虽然通过ELK日志分析平台提供的收集、存储、搜索等功能,我们已经非常轻松的实现对跟踪信息的管理,但是在ELK平台中缺乏对请求链路中各阶段时间延迟的关注,很多时候我们追溯请求链路的一个原因,就是为了找出整个调用链路中出现延迟过高的瓶颈,或者为了实现对分布式系统做延迟监控等与时间消耗相关的需求,也就是说此时的ELK平台是无法满足我们的要求,应当引入Zipkin框架来解决。
ZipkinZipkin是Twitter的一个开源项目,它基于Google Dapper实现。开发者可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的RESTful API接口来辅助查询跟踪数据,以实现对分布式系统的监控,从而及时发现系统中出现的延迟升高问题,并找出系统性能瓶颈的源头。Zipkin除了提供面向开发的API接口外,它还提供了方便的UI组件来帮助我们直观地跟踪信息和分析请求链路明细,如可以查询某段时间内各用户请求的处理时间。
Zipkin基本概念(1)Span:它是Zipkin的基本工作单元,一次链路调用就会创建一个Span。
(2)Trace:它是一组Span的集合,表示一条调用链路。举 ...