# 1. heka 介绍
heka 是mozilla组织使用GoLang 编写的一个日志收集服务,提供Go/Lua扩展。支持多种输入,以及输出。通常用于,将服务器集群中的日志信息,收集写入统一的数据库等输出。

heka 的github地址为
>  官方主干:https://github.com/mozilla-services/heka 
>  heka 已经多年`暂停更新`了。并且直接克隆下来的项目是无法通过编译的,因为其中使用的其他git分支的tag已经无法对应起来,需要自己修改 cmake 文件才能通过编译
>  推荐使用下边这个子分支,可直接通过编译
>  可用分支:https://github.com/composit/heka

备注:
> 官方已经因为`heka`吞吐量的问题,弃用这个项目了。转而开发了一个类似的,新架构的项目`hindsight`
> 官方主干:https://github.com/mozilla-services/hindsight

[↑返回顶部↑](#heka)

# 2. 依赖环境
> 系统:ubuntu 16.04

如果是初次编译,需要安装一些依赖环境。我全部加到脚本中了,直接执行脚本即可(需要`root`用户)
```shell
root@U-996-web:~# ./initRequire.sh
```

[↑返回顶部↑](#heka)

# 3. 编译
进入heka的源码目录下,执行 source build.sh 命令
source 命令用于切换环境变量
```shell
root@U-996-web:~# source build.sh 
```

[↑返回顶部↑](#heka)

# 4. 生成deb安装文件
编译完成后,会生成一个build目录,进入这个目录,然后执行 `make deb`,即可生成deb文件
```shell
root@U-996-web:~# make deb 
root@U-996-web:~# ls heka_0.10.0_amd64.deb
```

[↑返回顶部↑](#heka)

# 4. 发布安装
将生成好的`heka_0.10.0_amd64.deb`,拷贝到远程服务器中,然后安装(需要`root`用户)
```shell
root@U-996-web:~# dpkg -i heka_0.10.0_amd64.deb
```

[↑返回顶部↑](#heka)

# 5. 配置文件
配置文件都位于`/etc/heka/conf.d`,新增的配置文件,全部都放在这里边
下边给出一个简单的示例

```perl
[bloodInput]
type="LogstreamerInput"
log_directory = "/var/log/blood"
file_match = 'track\.json'  ##读取这个文件的内容
decoder = "BloodDecoder"    ##通过BloodDecoder来解析

[BloodDecoder]
type = "SandboxDecoder"
filename = "lua_decoders/game_blooddecoder.lua"  ##实际对应的heka内自定义的lua文件

[BloodOutput]   ##输出类型,heka内自定义的插件
message_matcher = "Type == 'common'"
redis_addr = "127.0.0.1:6379"
mongo_addr = ["127.0.0.1:27017"]
agent_mongo_addr = ["127.0.0.1:27017"]
mysql_addr = "root:james123456!!@tcp(127.0.0.1:3306)/lucky?charset=utf8mb4&parseTime=True"
```

[↑返回顶部↑](#heka)

# 6. 启动服务

> 启动 service heka start
> 停止 service heka stop
> 重启 service heka restart
> 查看状态 service heka status
> 重载配置 service heka force-reload

[↑返回顶部↑](#heka)

# 7. 自定义插件说明
自定义的插件,输入输出,都位于 `externals` 目录(go语言),以及`sandbox/lua/decoders`中(lua文件)

新增的第三方依赖,需要放入`thirdlib`下,然后修改`cmake/externals.cmake` 文件
这个文件,修改的地方有两个
1. lua_sanbox.git 地址,原版的地址有错
```perl
if(INCLUDE_SANDBOX)
    set(PLUGIN_LOADER ${PLUGIN_LOADER} "github.com/mozilla-services/heka/sandbox/plugins")
    set(SANDBOX_PACKAGE "lua_sandbox")
    set(SANDBOX_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${PROJECT_PATH} -DLUA_JIT=off --no-warn-unused-cli)
    externalproject_add(
        ${SANDBOX_PACKAGE}
        ###这是新的,可用的
        GIT_REPOSITORY https://github.com/composit/lua_sandbox.git
        GIT_TAG dd0f11dcc07a289bb236d4f255dc5e9caa2c4784
        ###旧的,不可用
        # GIT_REPOSITORY https://github.com/mozilla-services/lua_sandbox.git
        # GIT_TAG 4bf74cc480c2306fcffe1e423186e115cc87222d
        CMAKE_ARGS ${SANDBOX_ARGS}
        INSTALL_DIR ${PROJECT_PATH}
    )
endif()
```

2. 自定义文件,所需要的第三方库。 直接使用静态拷贝的方式,不使用git clone方式
```perl
#########################################
## not use git_clone,use offline 
# git_clone(https://github.com/jinzhu/gorm 5174cc5c242a728b435ea2be8a2f7f998e15429b)
# git_clone(https://github.com/jinzhu/inflection f5c5f50e6090ae76a29240b61ae2a90dd810112e)

message("offline,copy thirdlib")

###自定的第三方库,直接拷贝上层文件夹; 当有新增的时候,需要来这里增加
execute_process(COMMAND cp -r ${CMAKE_SOURCE_DIR}/thirdlib/gopkg.in  ${PROJECT_PATH}/src/ 
        ERROR_VARIABLE cperr)

execute_process(COMMAND cp -r ${CMAKE_SOURCE_DIR}/thirdlib/github.com  ${PROJECT_PATH}/src/
        ERROR_VARIABLE cperr)

if(cperr STREQUAL "")
    message("copy success!")
else()
    message("copy failed:"${cperr})
endif()
#########################################
```

[↑返回顶部↑](#heka)

heka 介绍,以及编译,备忘相关推荐

  1. spice server dpkg-buildpackage 打包编译备忘

    一般我们会通过configure,make 编译.但是为了替换版本的方便需要把他编译成deb的包,而且还需要自定义下包名.下面就记录下我的修改过程. 注:前面关于spice server的编译过程掠过 ...

  2. python编译备忘

    常用操作 编译时指定目录: ./configure --prefix=/home/john.wang/.local 快速安装pip python -m ensurepip --default-pip ...

  3. 推荐一款可自动即时保存备忘内容的电脑记事本软件

    有很多小伙伴都有过用电脑记事本.便利贴等记录了好多内容后,没有点击保存直接关了!这就很尴尬了!刚写好的东西没保存可是找不回来的! 如果用全百科备忘记事本软件就不会发生这样的问题了!全百科备忘记事本软件 ...

  4. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)

    为什么80%的码农都做不了架构师?>>>    一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...

  5. android swstnw cn,Android应用开发之ubuntu14.04编译ijkplayer备忘

    本文将带你了解Android应用开发之ubuntu14.04编译ijkplayer备忘,希望本文对大家学Android有所帮助 1.   i|VIhzkKCf#3UUnstall gi[e-RkYJ4 ...

  6. uniApp介绍篇-1.基础框架搭建与排坑备忘

    基础框架搭建与排坑备忘 一.uniApp介绍与注意点 1.目录结构 2.跳转页面 3.条件编译 4.生命周期 5.样式布局 6.图片引用 7.html标签 8.JsApi 9.小程序组件支持 10.事 ...

  7. 备忘录软件开源_介绍适用于开源软件替代方案的备忘单

    备忘录软件开源 幸运的是,我们不必受专有软件的约束. 有很多开源软件替代品可以满足各种需求. 如果那里还没有人,那么一定有人( 也许是您! )会创建一个. 选择开源技术的众多好处之一是,它得到了社区的 ...

  8. 【备忘】JavaEE系统架构师学习路线图

    转载自:http://www.javaxxz.com/thread-286706-1-1.html 第1阶段(Java程序员) - Java语言基础     - 101 JavaSE:[101]JAV ...

  9. Web 应用程序——我的心理备忘单

    介绍 本文是"持续交付:HTML 到 Kubernetes"的一部分. 虽然我迫不及待地想深入了解分布式系统的细节,但我发现自己处于一个不愉快的境地:我认为最好从前端开始写. 那是 ...

  10. 【备忘】Java从零到精通学习路线培训教程

    第1阶段(Java程序员) - Java语言基础      - 101 JavaSE        -01-常见Dos命令.Java历史.Java跨平台.配置Path环境变量.第一个HelloWorl ...

最新文章

  1. 为什么MySQL数据库要用B+树存储索引?
  2. 一起谈.NET技术,linq2sql:直接执行sql语句
  3. 乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
  4. Linux: grep命令
  5. 常见linux网络参数
  6. 剑指offer:约瑟夫环的问题
  7. .8-Vue源码之AST(4)
  8. Tomcat startup.bat 原理分析
  9. HBase总结(二十)HBase常用shell命令详细说明
  10. click Edit button in Opportunity - why curr is displayed wrongly
  11. aws mfa 认证_如何为您的AWS账户设置多因素身份验证(MFA)
  12. sql中的distinct
  13. Google Chrome浏览器离线安装包下载方法
  14. Linux扫描工具rootkit部署
  15. windows操作系统与linux操作系统相比各有什么优缺点
  16. 固执的喷子,你悟到了成长的真谛吗?
  17. 图像编辑系列之(2)基于StyleGAN(3)GAN逆映射(4)人脸 (5)语义生成 | ICCV2021生成对抗GAN梳理汇总...
  18. iis 10 配置 URL重写不生效
  19. 视频文件的原声如何批量更换
  20. freeswitch如何判断挂机方

热门文章

  1. 在Centos7上安装vpnc客户端
  2. 洛谷 P2873 [USACO07DEC]泥水坑Mud Puddles
  3. 康奈尔笔记记录法[转
  4. 软件测试之弱网测试工具
  5. 支持向量机:Duality
  6. 在线购物系统 实验七 顺序图
  7. JS实现页面快捷键功能
  8. Prime triplets (Project Euler 196)
  9. 如何验证Mac的Time Machine备份是否正常工作
  10. iis 支持apk json ipa下载