基于ELK的简单数据分析

neoly 8年前

来自: http://feixiao.github.io/articles/ji-yu-elkde-jian-dan-shu-ju-fen-xi.html

环境

  • CentOS 6.5 64位
  • JDK 1.8.0_20
  • Elasticsearch 1.7.3
  • LogStash 1.5.6
  • Kibana 4.1.4

介绍

  • ElasticSearch是有名的开源搜索引擎,现在很多公司使用ELK技术栈做日志分析,比如新浪使用ELK处理每天32亿条记录,详细的介绍可以查看这里

  • 我们的数据量没有新浪那么大,一天正常水平在6千万条左右,多的时候有一个亿条记录,受到新浪案例的启发我们基于ELK搭建自己的简单数据分析系统,刚开始选择这个的原因:(1)就我一个人折腾东西, (2)我不会前端,但是ELK中的kibana可以直接利用,(3)Hadoop/Hbase、Storm等大数据栈需要学习成本,短期内上手难度太大。(4)可用的机器数也是相当屌丝。

环境搭建

  • 需要安装好Java,配置JAVA_HOME,bin目录添加到PATH环境变量

ElasticSearch

  • 下载ElasticSearch,然后解压到/opt
  • 执行/opt/elasticsearch-1.7.3/bin/elasticsearch -d 就可以在后台启动,但是为了同时管理ELK三个进程,我选择了supervisor做统一管理
  • 启动ElasticSearch之后,我们需要关闭字符串的分词,对于数据分析的需求是不需要的,同时会存在问题,但是当作为搜索引擎的时候,这又是必须的。
    关闭字符串的分词    curl -XPUT http://localhost:9200/_template/template_1 -d '{      "template": "*",      "settings": {          "index.refresh_interval": "5s"      },      "mappings": {          "_default_": {              "_all": {                  "enabled": true              },              "dynamic_templates": [              {                  "string_fields": {                      "match": "*",                      "match_mapping_type": "string",                      "mapping": {                          "index": "not_analyzed",                          "omit_norms": true,                          "type": "string"                          }                      }                  }              ],              "properties": {                  "@version": {                      "type": "string",                      "index": "not_analyzed"                  }              }          }      }  }'
    </li> </ul>

    Kibana

    • 下载Kibana,然后解压到/opt
    • 运行/opt/kibana-4.1.4-linux-x64/bin/kibana,同样适用supervisor管理
    • 访问http://YourIP:5601即可

    Logstash

    • 到目前为止我们还没有数据源
    • 下载LogStash,解压到/opt
    • 编写如下配置文件

      alt text

    我们的数据来源于kafka中的一个topic,格式是json,输出到elasticsearch的索引,按天变化

    简单的数据分析

    • 跑了四个多小时,差不多有890w数据
    • 我们先来看看设备的操作系统版本号(android 4.4.4的设备最多,差不多有300万)

      alt text

    • 设备型号分布

      alt text

    2016年2月15日更新

    </div>

    Published

    Category

    大数据

    Tags

    </div> </article> </div>

    环境

    • CentOS 6.5 64位
    • JDK 1.8.0_20
    • Elasticsearch 1.7.3
    • LogStash 1.5.6
    • Kibana 4.1.4

    介绍

    • ElasticSearch是有名的开源搜索引擎,现在很多公司使用ELK技术栈做日志分析,比如新浪使用ELK处理每天32亿条记录,详细的介绍可以查看这里

    • 我们的数据量没有新浪那么大,一天正常水平在6千万条左右,多的时候有一个亿条记录,受到新浪案例的启发我们基于ELK搭建自己的简单数据分析系统,刚开始选择这个的原因:(1)就我一个人折腾东西, (2)我不会前端,但是ELK中的kibana可以直接利用,(3)Hadoop/Hbase、Storm等大数据栈需要学习成本,短期内上手难度太大。(4)可用的机器数也是相当屌丝。

    环境搭建

    • 需要安装好Java,配置JAVA_HOME,bin目录添加到PATH环境变量

    ElasticSearch

    • 下载ElasticSearch,然后解压到/opt
    • 执行/opt/elasticsearch-1.7.3/bin/elasticsearch -d 就可以在后台启动,但是为了同时管理ELK三个进程,我选择了supervisor做统一管理
    • 启动ElasticSearch之后,我们需要关闭字符串的分词,对于数据分析的需求是不需要的,同时会存在问题,但是当作为搜索引擎的时候,这又是必须的。
      关闭字符串的分词    curl -XPUT http://localhost:9200/_template/template_1 -d '{      "template": "*",      "settings": {          "index.refresh_interval": "5s"      },      "mappings": {          "_default_": {              "_all": {                  "enabled": true              },              "dynamic_templates": [              {                  "string_fields": {                      "match": "*",                      "match_mapping_type": "string",                      "mapping": {                          "index": "not_analyzed",                          "omit_norms": true,                          "type": "string"                          }                      }                  }              ],              "properties": {                  "@version": {                      "type": "string",                      "index": "not_analyzed"                  }              }          }      }  }'
      </li> </ul>

      Kibana

      • 下载Kibana,然后解压到/opt
      • 运行/opt/kibana-4.1.4-linux-x64/bin/kibana,同样适用supervisor管理
      • 访问http://YourIP:5601即可

      Logstash

      • 到目前为止我们还没有数据源
      • 下载LogStash,解压到/opt
      • 编写如下配置文件

        alt text

      我们的数据来源于kafka中的一个topic,格式是json,输出到elasticsearch的索引,按天变化

      简单的数据分析

      • 跑了四个多小时,差不多有890w数据
      • 我们先来看看设备的操作系统版本号(android 4.4.4的设备最多,差不多有300万)

        alt text

      • 设备型号分布

        alt text

      </div>