安装

基本上有3种方式,
1 yum安装
2 rpm安装
3 docker安装

yum安装

yum安装,参照官方文档是最好的:
http://docs.graylog.org/en/3.0/pages/installation/os/centos.html

#没有安装jdk,则先安装jdk:
$ sudo yum install java-1.8.0-openjdk-headless.x86_64

#安装MongoDB
#修改yum源 /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

sudo yum install mongodb-org

$ sudo chkconfig --add mongod
$ sudo systemctl daemon-reload
$ sudo systemctl enable mongod.service
$ sudo systemctl start mongod.service

#安装ES
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

#修改yum源 /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/oss-6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

#安装
sudo yum install elasticsearch-oss

#配置 /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
action.auto_create_index: false

#启动
$ sudo chkconfig --add elasticsearch
$ sudo systemctl daemon-reload
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl restart elasticsearch.service

#安装Graylog 服务器
$ sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
$ sudo yum install graylog-server

#配置,安装好之后需要修改配置,/etc/graylog/server/server.conf 添加: password_secret、root_password_sha2

# root_password_sha2 通过下面的命令生成, 其中输入的密码就是admin的密码,也就是登录时候的密码
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

# Generate one by using for example: pwgen -N 1 -s 96
# password_secret 是可以随便写的,但是要求长度64位,可以通过pwgen 来生成。但是安装pwgen,pwgen需要安装。比较麻烦。

# 参照网上博客,执行 wget http://sourceforge.net/projects/pwgen,可以下载,发现无法解压,执行tar zxvf pwgen,报错说不是正确格式。
# 于是继续尝试通过 yum。 直接 yum install pwgen是不行的。需要先执行 yum  install epel-release 然后 yum install pwgen。 不知道为什么 需要 epel-release

有些值是可以使用默认值的,有些不行。特别是需要设置 ip。 也就是 http_bind_address, 是绝不能使用默认值的, 我开始使用默认值,死活不能通过宿主机访问,改为实际ip就好了。 另外 http_publish_uri 默认是 http_bind_address, 是不需要设置的。但是如果设置则需要设置正确。 elasticsearch_hosts 可以使用默认值:elasticsearch_hosts = http://127.0.0.1:9200; mongodb_uri 也是。Email transport 什么的可以先不管。 后面有需要再改。

#启动。
$ sudo chkconfig --add graylog-server
$ sudo systemctl daemon-reload
$ sudo systemctl enable graylog-server.service
$ sudo systemctl start graylog-server.service

启动好了后, 可以grep一下mongo,elasticsearch,graylog。 特别需要注意的是,  配置graylog的时候, publish_url 需要一个实际的ip,而不能是 127.0.0.1 。

Docker安装

Docker安装的话,其实更简单。

yum install docker
 systemctl start docker
cat /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

准备一个文件 docker-compose.yml ,放/opt 目录下

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: mongo:3
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.6/docker.html
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:3.0
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/  ## 需要修改
    links:
      - mongodb:mongo
      - elasticsearch
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
      
然后 docker-compose up  就好了!

特别需要注意的是,上面的 GRAYLOG_HTTP_EXTERNAL_URI 需要一个实际的ip, 否则其他机器是无法访问的!会出现上面情况呢? 就是其他机器可以Telnet graylog, 但是web访问显示一片空白。
通过curl 得到下面的结果:

# curl http://192.168.11.183:9000
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="robots" content="noindex, nofollow">
    <meta charset="UTF-8">
    <title>Graylog Web Interface</title>
    <link rel="shortcut icon" href="http://127.0.0.1:9000/assets/favicon.png">
    
  </head>
  <body>
    <script src="http://127.0.0.1:9000/config.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/vendor.4024e2a8db732781a971.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/plugin/org.graylog.plugins.threatintel.ThreatIntelPlugin/plugin.org.graylog.plugins.threatintel.ThreatIntelPlugin.b864ba54b438ac0bdc48.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/plugin/org.graylog.plugins.collector.CollectorPlugin/plugin.org.graylog.plugins.collector.CollectorPlugin.bcc87290018e859a8a9e.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/plugin/org.graylog.aws.AWSPlugin/plugin.org.graylog.aws.AWSPlugin.8ae7cb13983ce33eeb5b.js"></script>
    
    <script src="http://127.0.0.1:9000/assets/app.a5e2fb591e8fd54ee4ef.js"></script>
    
  </body>
</html>

开始没有发现问题,后面才知道 上面的html全部都是通过 js动态加载的, 其中的 script src="http://127.0.0.1:9000/ 其实就是一个问题的根由。 很明显上面的src 是 本地的,是其他机器无法正常访问的!

改了之后,再观察,就正常了!(注意下面的src )
# curl http://192.168.11.183:9000
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="robots" content="noindex, nofollow">
    <meta charset="UTF-8">
    <title>Graylog Web Interface</title>
    <link rel="shortcut icon" href="http://192.168.11.127:9000/assets/favicon.png">
    
  </head>
  <body>
    <script src="http://192.168.11.127:9000/config.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/vendor.4024e2a8db732781a971.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/plugin/org.graylog.plugins.threatintel.ThreatIntelPlugin/plugin.org.graylog.plugins.threatintel.ThreatIntelPlugin.b864ba54b438ac0bdc48.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/plugin/org.graylog.plugins.collector.CollectorPlugin/plugin.org.graylog.plugins.collector.CollectorPlugin.bcc87290018e859a8a9e.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/plugin/org.graylog.aws.AWSPlugin/plugin.org.graylog.aws.AWSPlugin.8ae7cb13983ce33eeb5b.js"></script>
    
    <script src="http://192.168.11.127:9000/assets/app.a5e2fb591e8fd54ee4ef.js"></script>
    
  </body>
</html>

实际上,9000 可以访问,但是web显示一片空白, 其实可以通过F12 观察到的。 F12 看到很多的500 404, 那就是在 强烈指明是 服务端的问题了!!

graylog 的9000 web界面可以访问了,但是现在还看不到日志。然后java 也需要配置一下,这个很容易,logback增加一个GELF就好了。不过还是不行的,graylog 还需要手动配置input。 这一点上,和ELK是很大不同的! 刚开始接触的时候就一直卡在了这里,真是坑。

配置GELF的时候,注意旋转 GELF TCP或者GELF UDP,我开始的时候想当然的认为java web,然后http,然后选择了HTTP,结果不行,后面才明白是端口问题。graylog是默认开启了 12201 的tcp和udp端口 。

使用

graylog的使用其实是很简单的,经过前面的简单配置,graylog已经可以正式使用了。不同于ELK, ELK配置logstash的grok 要折腾死很多脑细胞。
界面方便跟elk差不多,但是明显,易用多了!

如果 点开Search界面看不到任何的日志,要么就是没有配置input,要么就是时间不对,要么就是没有日志进来。

一些注意事项:

The search syntax is very close to the Lucene syntax. By default all message fields are included in the search if you don’t specify a message field to search in.

es6之后,
Elasticsearch 2.x and 5.x split queries on whitespace, so the query type:(ssh login) was equivalent to type:(ssh OR login). This is no longer the case in Elasticsearch 6.0 and you must now include an OR operator between each term.
—— 我在kibana中测试,好像不是这样的。。

Elasticsearch 2.x allows to use _missing_:type instead of NOT _exists_:type. This query syntax has been removed in Elasticsearch 5.0.

多个field之间,可以不用加AND OR,直接空格就好, 默认是OR?

Note that AND, OR, and NOT are case sensitive and must be typed in all upper-case.  必须全大写
—— 如果想查询包含and 关键字的呢?

Note that leading wildcards are disabled to avoid excessive memory consumption! You can enable them in your Graylog configuration file:

allow_leading_wildcard_searches = true

allow_leading_wildcard_searches 默认是false !

Numeric fields support range queries. Ranges in square brackets are inclusive, curly brackets are exclusive and can even be combined:
数字类型field支持range查询

Escaping 转义!

The following characters must be escaped with a backslash:

&& || : \ / + - ! ( ) { } [ ] ^ " ~ * ?

示例:
level_name:ERROR —————— 这里的ERROR 是不能变形的,也就是说不能小写,不能大小写混合! 这点和kibana不同,估计是因为graylog中level_name是enum类型?

参考:
https://www.jianshu.com/p/97fcb10c3556
https://www.cnblogs.com/yuhuLin/p/7018858.html
https://blog.csdn.net/dongshaoshuai/article/details/54583668
https://blog.csdn.net/weixin_41004350/article/details/87253316

Graylog 笔记的更多相关文章

  1. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. djanao请求生命周期

    djanao请求生命周期 浏览器发送请求到服务端 服务端的wsgi服务器接收到来自浏览器的请求, 对request做一些预处理, 把浏览器的请求信息(请求方式, 请求头, socket信息等)都封装在 ...

  2. petri 网理论与研究(第一节140915)

    成绩 :70 大作业 和 30 的最后讨论 petri 是一个人的名字. 网状结构的信息流模型,和自动机有点像 理论体系发展比较慢  应用很远 1      EN,P/T,Pr/T,CPN,关系网……

  3. 英语口语考试资料Language learning

    "Learning a language is easy. Even a child can do it!" Most adults who are learning a seco ...

  4. Numpy用于数组数据的存储和读取

    Python的Numpy模块可用于存储和读取数据: 1.将一个数组存储为二进制文件 Numpy.save:将一个数组以.npy的格式保存为二进制文件 调用格式:numpy.save(file, arr ...

  5. Spring Security OAuth2 Demo —— 隐式授权模式(Implicit)

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_impilit_pattern.html 写在前面 在文章OAuth 2.0 概念及授权流程梳 ...

  6. [TimLinux] JavaScript 面向对象程序设计

    1. 面向对象 面向对象语言有一个标志:都有类的概念.通过类可以创建任意多个具有相同属性和方法的对象.ECMAScript中没有类的概念,因此JavaScript中的对象夜雨基于类的语言中的面向对象有 ...

  7. HDU3710 Battle over Cities(最小生成树+树链剖分+倍增+线段树)

    Battle over Cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  8. 2017 CCPC秦皇岛 H题 Prime set

    Given an array of  integers , we say a set  is a prime set of the given array, if  and  is prime. Ba ...

  9. Python发送邮件以及对其封装

    对Python发送邮件进行封装 Python发送邮件分为四步 连接到smtp服务器 登陆smtp服务器 准备邮件 发送邮件 导入所需要的包 import smtplib from email.mime ...

  10. Dubbo源码分析之SPI(二)

    一.概述 本篇文章是dubbo SPI源码分析的第二篇,接着第一篇继续分析dubbo SPI的内容,我们主要介绍 getDefaultExtension() 获取默认扩展点方法. 由于此方法比较简单, ...