博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
架构之日志分析平台
阅读量:4320 次
发布时间:2019-06-06

本文共 2783 字,大约阅读时间需要 9 分钟。

简单日志分析架构图

简单日志分析架构图

我做了简化,架构图中的每个组件都可以分别放到不同的机器。这里简单介绍下这些你组件:

  • your app:你的应用,我们的源码中,把这个给省略了
  • Openresty:基于Nginx的Web开发平台,你可以想像它基于Nginx做了很多扩展,类似淘宝的Tengine。为什么我们不直接使用Nginx呢?因为在Openresty上,我们可以做更多事情。
  • Logstash:日志收集,结构化数据后,push到Elasticsearch中,基于JRuby。可使用其它日志收集工具替代,比如
  • Elasticsearch:分布式搜索引擎,基于Lucene
  • Kibana:用于可视化数据,基于NodeJs

日志分析平台开发所需要工具

  •  2.0+:简单的自动化配置工具,运维工具。
  • :操作系统虚拟化工具,开发时使用。如果没有听过,Docker总听过吧。这家伙就和Docker完全类似的功能,也早于Docker出现。
  • 一个简单的支持yml格式高亮的文本编辑器,比如Atom
  • 自行下载JDK8:jdk-8u66-linux-x64.tar.gz放到项目路径:provision/roles/jdk8/files/jdk-8u66-linux-x64.tar.gz P.S. 抱歉这个的确需要你自己下。
  • 什么?不用写代码吗?的确不用需要写。如果你要扩展这个雏形就会需要写一些脚本。

启动一台服务器

因为我们需要在本地开发好以后,再部署到生产环境,所以,我们需要一台服务器用来做实验。用Vagrant可以在你的开发机上虚拟化一台。clone 下 OSC-AdCenter后,进入项目目录执行:Vagrant up

文件Vagrantfile有描述这台机器的配置:

Vagrant.configure(2) do |config|  ANSIBLE_RAW_SSH_ARGS = []  machine_box = "trusty-server-cloudimg-amd64-vagrant-disk1" machine_box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" config.vm.define "oscadcenter" do |machine| machine.vm.box = machine_box machine.vm.box_url = machine_box_url machine.vm.hostname = "oscadcenter" machine.vm.network "private_network", ip: "192.168.4.10" ##指定这台机器的IP,只能宿主机能访问 machine.vm.provider "virtualbox" do |node| node.name = "oscadcenter" node.memory = 4048 node.cpus = 2 end end end

更多关于Vagrantfile:

Vagrant机器的默认账号密码都是: vagrant,所以你可以使用ssh vagrant@192.168.4.10登录这台机器。也可以使用vagrant命令登录,在Vagrantfile所在目录下执行:vagrant ssh oscadcenter

部署日志分析平台

在你的开发机上,安装好ansible:

服务器准备好了,我们只需要一条命令就可以部署OSC-AdCenter了:

ansible-playbook ./provision/playbook.yml  -i ./provision/inventory  -u vagrant -k

然后输入ssh登录密码:vagrant

简单说明:

  • ansible-playbook是ansible的一个命令

  • ./provision/playbook.yml是描述你的服务器配置的文本,你可以想像成所有的部署脚本都写在这个文件中

  • ./provision/inventory是服务器在playbook在的host与ip的映射表,比如playbook中这么写:

    ---- hosts: adcenter

    那么,inventory文件就是这样的:

    [adcenter]192.168.4.10

    具体请看文档:

  • -u vagrant -k 表示使用vagrant账号ssh登录目标机器

部署的这个过程,要看你的网速和elastic源的提供速度,可能会很漫长。 参考时长为半小时。建议执行部署后,做些别的事情,比如午休。

测试部署是否成功

  1. 打开Elasticsearch  可看到界面:

    es

  2. 打开Kibana  可看到界面:

  3. 打开各种浏览器,输入url:,然后可在Elasticsearch中和kibana中看到相应的数据

我使用Chrome访问了两次url,再使用Safari访问了一次。就这样,Elasticsearch中出现了3条数据,而Kibana中我们可统计出,过去4小时中,Chrome占了2/3,而Safari占 1/3。

部署过程都执行了什么?

从部署脚本的入口./provision/playbook.yml看:

- hosts: analysis sudo: yes vars_files: - ./vars/base-env.yml - ./vars/analysis-logstash.yml roles: - common # 执行一些基础工作 - openresty # 安装openresty - { role: "analysis-openresty-conf", nginx_server_conf: "analysis.conf"} # 配置openresty - jdk8 # 安装jdk8,并设置JAVA_HOME到 /etc/profile中 - ansible-role-elasticsearch #安装 es - ansible-role-kibana-4 # 安装kibana4 - ansible-logstash # 安装logstash

这里的ELK的role都是从Ansible 的 上download下来的。

然后呢?

  1. 学习Kibana的查询语法,根据业务需求来统计分析日志。
  2. 对当前的日志分析平台实施监控,哪天系统挂了,你都不知道。
  3. 与现在有的系统结合。
  4. 解决当单个Elasticsearch,特别庞大时的扩容问题

转载于:https://www.cnblogs.com/InCsharp/p/6810042.html

你可能感兴趣的文章
java动态代理
查看>>
Selector的2种样式
查看>>
Mac 卸载mysql
查看>>
php-fpm用socket连接
查看>>
.net core跨域传递cookie
查看>>
SpringMVC <mvc:view-controller path=""/>标签
查看>>
adobe flash player升级coredump分析
查看>>
pycharm快捷键、经常使用设置、配置管理
查看>>
element-ui table 最后一行合计,单元格合并
查看>>
.NET 常用加密、解密& 数字签名算法
查看>>
开博声明
查看>>
FileReader读取文件
查看>>
逆向-攻防世界-re2-cpp-is-awesome
查看>>
Oracle分割字符串 REGEXP_SUBSTR用法
查看>>
O/R Mapping实际开发经验之谈(转)
查看>>
今天才知道原来我还没弄清楚js中全局变量和局部变量的定义...
查看>>
用户心理特征
查看>>
【z05】聪明的质检员
查看>>
【5001】n皇后问题
查看>>
【codeforces 796D】Police Stations
查看>>