Installation

在本节中,您将了解如何在服务端部署所有 Logful 所需的组件,并将组件正确连接起来。在正式部署服务前,确保您已经对 Logful 日志系统架构有了充分了解。建议先阅读 Logful 的介绍后,再开始部署工作。

部署流程包括:

  • Graylog 部署
  • WeedFS 部署
  • Logful API 服务部署
  • Logful Web 服务部署

Graylog 部署

以 CentOS 7 使用 yum 安装 Graylog-1.2 版本为例:

安装 graylog-server 和 graylog-web

$ sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-1.2-repository-el7_latest.rpm
$ sudo yum install graylog-server graylog-web

安装 Elasticsearch

graylog-server 要求 Elasticsearch 版本为 1.7 及以上(2.x 暂时不支持)。

$ sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
$ sudo vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-1.7]
name=Elasticsearch repository for 1.7.x packages
baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

$ yum install elasticsearch

安装 MongoDB

graylog-server 要求尽可能使用稳定版本,且版本至少为 v2.0。

$ sudo vim /etc/yum.repos.d/mongodb-org-3.0.repo

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

$ sudo yum install -y mongodb-org

配置 graylog-server 和 graylog-web

$ pwgen -N 1 -s 96
PASSWORD_SECRET

$ echo -n getui2015! | sha256sum
PASSWORD_SHA

$ sudo vim /etc/graylog/server/server.conf

password_secret = PASSWORD_SECRET
root_password_sha2 = PASSWORD_SHA
root_timezone = Asia/Shanghai

$ sudo vim /etc/graylog/web/web.conf

application.secret="PASSWORD_SECRET"
timezone="Asia/Shanghai"

配置 Elasticsearch

$ sudo vim /etc/elasticsearch/elasticsearch.yml

cluster.name: graylog2

启动所有服务

$ sudo service mongod start
$ sudo service elasticsearch start
$ sudo systemctl start graylog-server
$ sudo systemctl start graylog-web

创建 Graylog GELF TCP input

登陆 graylog-web http://example.com:9000

System->Inputs->Select "GELF TCP"->Launch new input->Start input

GELF TCP input

WeedFS 部署

根据当前操作系统版本选择相应的 SeaweedFS 二进制包,以 Linux 64-bit,weed 0.69 版本为例:

$ cd ~
$ wget https://github.com/chrislusf/seaweedfs/releases/download/v0.69/weed_0.69_linux_amd64.tar.gz
$ tar -zxvf weed_0.69_linux_amd64.tar.gz
$ cd weed_0.69_linux_amd64
$ cp weed /usr/local/bin
$ chmod +X /usr/local/bin/weed
$ mkdir /var/log/weed
$ mkdir /path/to/weed/volume
$ weed -log_dir="/var/log/weed" -v=4 server -dir="/path/to/weed/volume" -master.port=9333 -master.volumeSizeLimitMB=30000 -volume.port=8083 -volume.max="7" -pulseSeconds=60 -idleTimeout=86400 &

启动参数说明

  • weed -log_dir WeedFS 运行日志文件目录(目录必须存在)。

  • weed -v 输出到日志文件的日志级别。

  • weed server -dir WeedFS server 存储路径。

  • weed server -master.port WeedFS master 端口。

  • weed server -master.volumeSizeLimitMB 每个 volume 的容量限制。

  • weed server -volume.port WeedFS server 端口。

  • weed server -volume.max WeedFS server volume 最大数量。

  • weed server -pulseSeconds WeedFS server 心跳周期。

  • weed server -idleTimeout WeedFS server 连接超时(为了减少断开和重新连接带来的系统开销,请设置一个较大的数值)。

更多详细启动参数请查看 SeaweedFS wiki

Logful API 服务部署

$ cd /path
$ wget https://github.com/logful/logful-api/releases/download/v0.2.0-beta/logful-api-0.2.0-beta.zip
$ unzip logful-api-0.2.0-beta.zip
$ cd logful-api-0.2.0-beta
$ vim application.conf
...
$ nohup java -Xms512m -Xmx1024m -jar logful-api-0.2.0-beta.jar --spring.config.location=/path/logful-api-0.2.0-beta/application.conf &

配置参数说明

  • logful.ttl 日志文件自动删除时间(具体设置请参考下方表格 q-1-1)。

  • logful.path 程序运行临时目录。

  • logful.parser.max-threads 日志文件解析线程池大小。

  • logful.parser.queue-capacity 日志文件解析队列最大容量。

  • logful.graylog.host 指定 Graylog GELF TCP Input 地址。

  • logful.graylog.port 指定 Graylog GELF TCP Input 端口。

  • logful.graylog.connect-timeout 设置 Graylog GELF TCP Input 连接超时(单位:秒)。

  • logful.graylog.reconnect-delay 重新连接 Graylog GELF TCP Input 间隔(单位:秒)。

  • logful.graylog.queue-capacity 写入 Graylog 消息队列最大容量。

  • logful.graylog.send-buffer-size 设置 Graylog TCP 发送缓冲区大小。

  • logful.weed.master.host 指定 WeedFS master 地址。

  • logful.weed.master.port 指定 WeedFS master 端口。

  • logful.weed.connect-timeout 设置 WeedFS 连接超时(单位:秒)。

  • logful.weed.reconnect-delay 重新连接 WeedFS 间隔(单位:秒)。

  • logful.weed.queue-capacity 写入 WeedFS 文件队列最大容量。

logful.ttl 参数设置 q-1-1
单位 m h d w M y
指代 minutes hours days weeks months years
示例 3m 4h 5d 6w 7M 8y
解析结果 3 minutes 4 hours 5 days 6 weeks 7 months 8 years

示例:

logful.ttl=2d
logful.path=/path/data

logful.parser.max-threads=16
logful.parser.queue-capacity=2048

logful.graylog.host=127.0.0.1
logful.graylog.port=12201
logful.graylog.connect-timeout=5000
logful.graylog.reconnect-delay=10000
logful.graylog.queue-capacity=2048
logful.graylog.send-buffer-size=1048576

logful.weed.master.host=127.0.0.1
logful.weed.master.port=9333
logful.weed.connect-timeout=5000
logful.weed.reconnect-delay=10000
logful.weed.queue-capacity=2048

Logful Web 服务部署

$ npm install pm2 -g
$ cd /path
$ wget https://github.com/logful/logful-web/releases/download/v0.2.0-beta/logful-web-0.2.0-beta.zip
$ unzip logful-web-0.2.0-beta.zip
$ cd logful-web-0.2.0-beta
$ npm install
$ vim config/config.js
...
$ pm2 start app.js

配置参数说明

  • config.security.username 管理员名称。

  • config.security.password 管理员密码(sha-256 字符串)。

  • config.locale 未指定 Accept-Language 时默认的语言。

  • config.logfulApi 指定 Logful-api 地址。

  • config.weedMaster 指定 WeedFS master 地址。