Fe

这是Go版本的UIC,也是一个统一的web入口,因为监控组件众多,记忆ip、port去访问还是比较麻烦。fe像是一个监控的hao123

设计初衷

一个软件的部署分发难易程度,直接影响了软件的流传。社区有些朋友反映Java版的UIC难以安装,我们就提供了一个Go版本。大家可以在Fe中维护个人联系信息,维护人和组的对应关系。还可以通过配置文件中配置的shortcut在页面上产生多个快捷方式链接。

与UIC区别

Fe模块除了提供了一个简单的导航之外,最大的不同是密码存放方式发生了变化,所以Java版UIC用户如果要迁移过来,需要修改Fe模块配置的salt,配置为空字符串,就可以和原来Java版本的UIC共用同一个数据库了,不过配置成空字符串不够安全,建议salt配置一个随机字符串,然后通过Fe注册一个新用户,把数据库中所有用户的密码都重置为这个新用户的密码,发个通知,让各个注册用户重新自己登录修改密码。

源码安装

  1. cd $GOPATH/src/github.com/open-falcon/fe
  2. go get ./...
  3. ./control build
  4. ./control pack

最后一步会pack出一个tar.gz的包,拿着这个包去部署即可。

部署说明

Fe作为一个前端模块,无状态,可以水平扩展,至少部署两台机器以保证可用性。前面做一个负载均衡设备,nginx或者lvs都可以。最后为其申请一个域名,搞定!

配置介绍

配置文件必须叫cfg.json,可以基于cfg.example.json修改

  1. {
  2. "log": "debug",
  3. "company": "MI", # 填写自己公司的名称,用于生成联系人二维码
  4. "http": {
  5. "enabled": true,
  6. "listen": "0.0.0.0:1234" # 自己随便搞个端口,别跟现有的重复了,可以使用8080,与老版本保持一致
  7. },
  8. "cache": {
  9. "enabled": true,
  10. "redis": "127.0.0.1:6379", # 这个redis跟judge、alarm用的redis不同,这个只是作为缓存来用
  11. "idle": 10,
  12. "max": 1000,
  13. "timeout": {
  14. "conn": 10000,
  15. "read": 5000,
  16. "write": 5000
  17. }
  18. },
  19. "salt": "0i923fejfd3", # 搞一个随机字符串
  20. "canRegister": true,
  21. "ldap": {
  22. "enabled": false,
  23. "addr": "ldap.example.com:389",
  24. "baseDN": "dc=example,dc=com",
  25. "bindDN": "cn=mananger,dc=example,dc=com",
  26. "bindPasswd": "12345678",
  27. "userField": "uid",
  28. "attributes": ["sn","mail","telephoneNumber"]
  29. },
  30. "uic": {
  31. "addr": "root:password@tcp(127.0.0.1:3306)/uic?charset=utf8&loc=Asia%2FChongqing", # 数据库schema在scripts目录下
  32. "idle": 10,
  33. "max": 100
  34. },
  35. "shortcut": {
  36. "falconPortal": "http://11.11.11.11:5050/", # 浏览器可访问的portal地址
  37. "falconDashboard": "http://11.11.11.11:7070/", # 浏览器可访问的dashboard地址
  38. "falconAlarm": "http://11.11.11.11:9912/" # 浏览器可访问的alarm的http地址
  39. }
  40. }

进程管理

我们提供了一个control脚本来完成常用操作

  1. ./control start 启动进程
  2. ./control stop 停止进程
  3. ./control restart 重启进程
  4. ./control status 查看进程状态
  5. ./control tail tail -f的方式查看var/app.log

设置root账号的密码

该项目中的注册用户是有不同角色的,目前分三种角色:普通用户、管理员、root账号。系统启动之后第一件事情应该是设置root的密码,浏览器访问:http://fe.example.com/root?password=abc (此处假设你的项目访问地址是fe.example.com,也可以使用ip),这样就设置了root账号的密码为abc。普通用户可以支持注册。

ldap 认证

Fe 现在支持通过 ldap 来进行用户认证。不需要提前在 Fe 内开设账号。Fe 会自动将 ldap 认证过来的新用户插入到 Fe 的数据库内。

配置说明

  1. "addr": "ldap.example.com:389",
  2. # ldap 的地址和端口
  3. "baseDN": "dc=example,dc=com",
  4. # ldap 的 baseDN,ldap 认证的时候将从这个路径开始查询用户
  5. "bindDN": "cn=mananger,dc=example,dc=com",
  6. # 你用来连接 ldap 的账户,至少要有只读的查询权限。
  7. # 注意这里应该是账户的完整 dn 值。对于 AD 的话,则可以直接填账户的 userPrincipalName (xxx@example.com)。
  8. # 如果你的 ldap 允许匿名查询的话,填""值即可
  9. "bindPasswd": "12345678",
  10. # 如果你的 ldap 允许匿名查询的话,填""值即可
  11. "userField": "uid",
  12. # 用于认证的属性(即你输入的用户名),通常为 uid 或 sAMAccountName(AD)。
  13. # 也可以使用诸如 mail 的属性,这样认证的用户名就是邮箱(前提 ldap 里有这个属性)
  14. "attributes": ["sn","mail","telephoneNumber"]
  15. # 数组顺序重要,依次为姓名,邮箱,电话在 ldap 中的属性名.
  16. # 建议根据自己 ldap 内的实际情况修改。
  17. # 用户 ldap 登录时,fe 将按这些属性名去 ldap 中查询新用户的属性,并插入到 fe 的数据库内。
  18. },

补充

这里我们先安装了Fe这个模块,portal、dashboard、alarm等模块都还没有安装,所以shortcut中不知道如何配置才好。不用着急,先维持默认,等之后部署完了portal、dashboard、alarm等模块之后再回来修改fe的配置。

视频教程

为fe模块录制了一个视频,做了源码级解读:http://www.jikexueyuan.com/course/1780.html