基础概念

本文只做学习测试使用

Elasticsearch:用于日志索引、存储和分析(消耗内存和磁盘)
Graylog:数据处理,日志展示,日志报警等(消耗CPU,相当于Logstash+Kibana+报警系统)
filebeat:轻量级日志采集工具
sidecar:管理,监控和配置filebeat
mongodb:存储graylog的配置

架构图如下:

graylog-fram

工作流程:filebeat将数据传输到graylog数据处理完成后存储到es中,graylog读取es数据展示

graylog支持以下input:

Syslog (TCP, UDP, AMQP, Kafka)
GELF (TCP, UDP, AMQP, Kafka, HTTP)
AWS (AWS Logs, FlowLogs, CloudTrail)
Beats/Logstash
CEF (TCP, UDP, AMQP, Kafka)
JSON Path from HTTP API
Netflow (UDP)
Plain/Raw Text (TCP, UDP, AMQP, Kafka)

存储规划:存储空间 = 每天日志量 * 保留时长 * 1.3(元数据信息)

graylog部署

graylog 配置文件 server.conf:

is_master = true 
password_secret = <secret>
root_username = admin
root_password_sha2 = <SHA2>
root_timezone = +08:00
http_bind_address = 192.168.10.13:9000
http_publish_uri = http://192.168.10.13:9000/
web_listen_uri = http://192.168.10.13:9000/
rest_listen_uri = http://192.168.10.13:9000/api/
elasticsearch_hosts = http://node1:9200,http://user:password@node2:19200
mongodb_uri = mongodb://localhost/graylog,mongodb://grayloguser:secret@localhost:27017/graylog,mongodb_uri = mongodb://grayloguser:secret@localhost:27017,localhost:27018,localhost:27019/graylog?replicaSet=rs01

参数说明:

is_master:若运行多个graylog(或集群),则必须指定一个master节点
password_secret:多个server之间认证,对密码进行加盐处理,若多个server,则都要配置一样的(pwgen -N 1 -s 96 生成)
root_username:默认root用户登录密码
root_password_sha2:登陆密码sha2加密,改密码不能再web上更改,只能再此处修改(echo -n "password" && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 生成) 
http_bind_address:server监听地址
http_publish_uri:server对公开地址(web能够访问地址)
elasticsearch_hosts:es集群地址
mongodb_uri:mongodb集群地址
root_timezone:设置集群时区
rest_listen_uri:接受Graylog Collector Sidecar发送的心跳信息地址
web_listen_uri:graylog-web访问地址

docker 部署graylog

修改宿主机VMA大小

vim /etc/sysctl.conf
vm.swappiness = 1
vm.max_map_count = 655360
sysctl -p 

部署服务

docker run --name mongo -d mongo:3
docker run --name elasticsearch -e "http.host=0.0.0.0" -e "ES_JAVA_OPTS=-Xms4096m -Xmx4096m" -d docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.5
docker run --name graylog --link mongo --link elasticsearch     -p 9000:9000 -p 12201:12201 -p 1514:1514     -e GRAYLOG_HTTP_EXTERNAL_URI="http://192.168.1.10:9000/"  -e GRAYLOG_HTTP_PUBLISH_URI="http://192.168.1.10:9000/"   -d graylog/graylog:3.2

web登录

http://192.168.1.10:9000/
默认密码:admin,admin

部署客户端

部署sidecar

rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-sidecar-repository-1-2.noarch.rpm
yum install graylog-sidecar -y

部署filebeat

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-x86_64.rpm
yum install -y filebeat-7.6.2-x86_64.rpm

配置采集端

获取server_api_token:  system --> sidecars --> "Create or reuse a token for the graylog-sidecar user"

token1

输入token名称(graylog-sidecar)  --> create token --> Copy to cliboard(1ki9t9c2ofu7fka2kkb5uo5vm8ggirlmm5e2df00rrs0jec1nbut)

token2

创建一个Input

System --> Inputs --> Beats --> Launch new input -->选择node(Node/85517427) --> 填写Title(pods-logs) --> port(1514/启动graylog暴露的端口号) --> TCP keepalive(选中该选项) --> Do not add Beats type as prefix(去掉多余的前缀)

input

创建日志收集器(collector)

System --> Sidecars --> Configuration --> Clone(filebeat/linux一行点击moreactions) --> edit(选择新clone的collector) --> Name(collector名称) --> 修改日志路径和output端口号 -->Update

filebeat1

创建收集器配置

System --> Sidecars --> Configuration --> Createfiguration --> Name --> 选择颜色(用于区别配置文件) --> 选择刚才创建的collector --> 查看配置文件是否正确 --> 点击Create

若需要在入es前添加一些字段,可在配置文件页面右边进行配置

filebeat2

配置sidecar

server_url: "http://192.168.1.10:9000/api/"
server_api_token: "1ki9t9c2ofu7fka2kkb5uo5vm8ggirlmm5e2df00rrs0jec1nbut"
send_status: true
log_rotate_max_file_size:"10MiB"
log_rotate_keep_files: 10

参数解释:

server_url:server web地址
server_api_token:用于授权访问graylog api的token(填写刚才web界面获取到的token)
send_status:发送采集器状态给graylog
log_rotate_max_file_size:sidecar自身日志切割(默认10M切割一次)
log_rotate_keep_files:日志保留分数(默认保留十份)

更多参数官方文档

启动服务

graylog-sidecar -service install
systemctl start graylog-sidecar

此时进入web界面 System –> Sidecars 可看见刚才启动的采集器名称,版本及状态等信息

选择采集器的配置文件

System --> Sidecars -->Administration --> pods-logs(左边选择该节点要应用的collector) --> Configure(右边选项选择pods-logs配置) --> Confirm(弹窗点击该按钮)

1: 可点击右边的Process选项对sidecars进行停止重启等管理 2: 该配置十分灵活,可选择不同的colector和不同的配置来达到自己的需求,同一个collector可有多个配置

collector

测试是否配置正常

在/var/log/containers 下创建两个文件tomcat-base-service.log,springboot-base-api.log
tomcat-base-service.log 写入 "tomcat base服务程序日志监控正常"
往springboot-base-api.log写入"springboot api程序日志监控正常"
echo "tomcat base服务程序日志监控正常" >tomcat-base-service.log
echo "springboot api程序日志监控正常" >springboot-base-api.log

web

web界面有刚才的日志输出,至此部署完成

添加显示的字段

可选择展示的字段,哪个字段排序,数据处理等

zhanshi

部署到此结束,后续有时间再补上其他功能的使用