前言
入职新公司,领导听说我以前做过日志系统,就让我研究一下graylog。这一研究,发现我以前做的日志系统的功能,开源的graylog都能实现。
接下来这篇文章会介绍graylog的最小化部署,实现对日志文件的采集、存储与查询。
环境准备
本次部署需要以下环境
部署
本次部署的graylog包含4个组件:graylog,mongodb,elasticsearch和filebeat。mongodb负责存储graylog的业务数据,elasticsearch存储采集过来的日志,graylog负责管理,查询与展示,filebeat负责采集日志。
部署graylog,mongo与elasticsearch
新建docker-compose.yml文件,输入内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| version: '3' services: mongodb: image: mongo:6.0.14 networks: - graylog
elasticsearch: image: elasticsearch:7.17.19 environment: - "discovery.type=single-node" restart: "on-failure" ports: - 9200:9200 - 9300:9300 networks: - graylog
graylog: image: graylog/graylog:5.2 environment: - GRAYLOG_NODE_ID_FILE=/usr/share/graylog/data/config/node-id - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000 - GRAYLOG_ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/ entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh networks: - graylog restart: always depends_on: - mongodb - elasticsearch ports: - 9000:9000 - 1514:1514 - 5044:5044 - 1514:1514/udp - 12201:12201 - 12201:12201/udp networks: graylog: driver: bridge
|
docker-compose up -d
启动
启动成功后可用在 http://127.0.0.1:9200
访问graylog,登陆用户:admin
,密码:admin
。
input用于接受日志采集输入。
点击System
->Inputs
,下拉input列表,选择Beats
点击Launch new input
由于本次部署是测试最小化部署,会取消配置TLS private key file (optional)
与TLS key password (optional)
.
部署filebeat
下载
1 2
| curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.1-darwin-x86_64.tar.gz tar xzvf filebeat-8.13.1-darwin-x86_64.tar.gz
|
配置
编辑filebeat.yml
1 2 3 4 5 6 7 8 9 10 11
| filebeat.inputs: - type: filestream id: my-filestream-id enabled: true paths: - /Users/xiangpan/dev/gopath/src/awesomeProject/nohup.out output.logstash: hosts: ["localhost:5044"] preset: balanced
|
启动
结果
最终在search里就能看到采集来的日志。
更多高级功能
graylog还有sidecar来管理filebeat,能够做到在web管理页面管理filebeat,包括修改配置,重启等操作。由于本文是最小化部署,下次在另外文章写吧。