Graylog 中文手册 常用功能和问题整理

功能

设置日志保留存储策略

选择编辑,策略如下图

三种单个索引策略

  • 消息记录数 默认2千万
  • 消息大小 多少字节
  • 消息时间 存储多少时间

如果达到预定策略,会新建个索引,如下图 graylog_0满了后,新建graylog_1继续写入。最多可以存几个索引,由下面索引保留策略配置决定。

在这里插入图片描述
索引保留策略

看这个配置时最多2个索引,多于的会删除,如下图:

注意: graylog_0被删除了,但是不是立马删除。

不同用户分配权限

1.添加用户

2.分配角色

一般分配Reader角色即可

3.用admin账户创建流和大屏面板

添加Manage Alerts,例如app_name = roadnet

分享–》选择用户或者团队–》选择权限–》点击Add Collborator–》点击Save

同理构建大屏分享给指定用户

截取日志中的数据进行指标统计

有很多种方式去截取

  • 数据不规则,无格式
    • 正则表达式
    • grok 推荐
  • 数据规则,例如:log使用json格式
    • 使用json抽取 推荐

有很多自己选

官网推荐使用grok抽取

以在 grok 里预定义好命名正则表达式,Grok 支持把预定义的 grok 表达式 写入到文件中

USERNAME [a-zA-Z0-9._-]+
USER %{USERNAME}

第一行,用普通的正则表达式来定义一个 grok 表达式;第二行,通过打印赋值格式,用前面定义好的 grok 表达式来定义另一个 grok 表达式。

grok 表达式的打印复制格式的完整语法是下面这样的:

%{PATTERN_NAME:capture_name:data_type}
  • http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/filter/grok.html

  • http://grokdebug.herokuapp.com/

常用总结

  • (?<temMsg>(.*)(?=Report)/?)获取Report之前的字符,作为temMsg字段的值

  • (?<temMsg>(?=Report)(.*)/?)获取Report之后的字符,作为temMsg字段的值

  • (?<temMsg>(?<=report).*?(?=msg)) 截取report和msg之间的值 不包含report和msg本身,作为temMsg字段的值

  • (?<temMsg>(report).*?(?=msg)) 截取 包含report但不包含msg

  • (?<temMsg>(?<=report).*?(msg))截取 不包含report但包含msg

  • (?<temMsg>(report).*?(msg|request))输出以report开头,以msg或者以request结尾的所有包含头尾信息

  • (?<temMsg>(report).*?(?=(msg|request)))输出以report开头,以msg或者以request结尾的不包含头尾信息

自定义索引映射

Graylog本身是使用默认映射包括用于设置timestampmessagefull_message,和source索引的消息的字段:

$ curl -X GET 'http://localhost:9200/_template/graylog-internal?pretty'
{
"graylog-internal" : {
  "order" : -1,
  "index_patterns" : [
    "graylog_*"
  ],
  "settings" : {
    "index" : {
      "analysis" : {
        "analyzer" : {
          "analyzer_keyword" : {
            "filter" : "lowercase",
            "tokenizer" : "keyword"
          }
        }
      }
    }
  },
  "mappings" : {
    "message" : {
      "_source" : {
        "enabled" : true
      },
      "dynamic_templates" : [
        {
          "internal_fields" : {
            "mapping" : {
              "type" : "keyword"
            },
            "match_mapping_type" : "string",
            "match" : "gl2_*"
          }
        },
        {
          "store_generic" : {
            "mapping" : {
              "type" : "keyword"
            },
            "match_mapping_type" : "string"
          }
        }
      ],
      "properties" : {
        "gl2_processing_timestamp" : {
          "format" : "yyyy-MM-dd HH:mm:ss.SSS",
          "type" : "date"
        },
        "gl2_accounted_message_size" : {
          "type" : "long"
        },
        "gl2_receive_timestamp" : {
          "format" : "yyyy-MM-dd HH:mm:ss.SSS",
          "type" : "date"
        },
        "full_message" : {
          "fielddata" : false,
          "analyzer" : "standard",
          "type" : "text"
        },
        "streams" : {
          "type" : "keyword"
        },
        "source" : {
          "fielddata" : true,
          "analyzer" : "analyzer_keyword",
          "type" : "text"
        },
        "message" : {
          "fielddata" : false,
          "analyzer" : "standard",
          "type" : "text"
        },
        "timestamp" : {
          "format" : "yyyy-MM-dd HH:mm:ss.SSS",
          "type" : "date"
        }
      }
    }
  },
  "aliases" : { }
}

为了扩展 Elasticsearch 和 Graylog 的默认映射,您可以创建一个或多个自定义索引映射并将它们作为索引模板添加到 Elasticsearch。

假设我们有一个数据架构,如下所示:

字段名称字段类型例子
http_methodkeywordGET
http_response_codelong200
ingest_timedate2016-06-13T15:00:51.927Z
took_mslong56

将自定义索引映射的以下索引模板保存到名为 的文件中graylog-custom-mapping.json

{
  "template": "graylog_*",
  "mappings" : {
    "message" : {
      "properties" : {
        "http_method" : {
          "type" : "keyword"
        },
        "http_response_code" : {
          "type" : "long"
        },
        "ingest_time" : {
          "type" : "date",
          "format": "strict_date_time"
        },
        "took_ms" : {
          "type" : "long"
        }
      }
    }
  }
}

上述模板仅兼容 Elasticsearch 6.X。如果将 Graylog 4.0 与 Elasticsearch 7.x 一起使用,请使用下面的模板,将其另存为graylog-custom-mapping-7x.json.

{
  "template": "graylog_*",
  "mappings": {
    "properties": {
      "http_method": {
        "type": "keyword"
      },
      "http_response_code": {
        "type": "long"
      },
      "ingest_time": {
        "type": "date",
        "format": "strict_date_time"
      },
      "took_ms": {
        "type": "long"
      }
    }
  }

最后,使用以下命令将索引映射加载到 Elasticsearch:

$ curl -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'http://localhost:9200/_template/graylog-custom-mapping?pretty'
{
  "acknowledged" : true
}

从那时起创建的每个 Elasticsearch 索引都会有一个由原始graylog-internal索引模板和新graylog-custom-mapping模板组成的索引映射:

  • https://docs.graylog.org/en/4.1/pages/configuration/elasticsearch.html

自定义分析器

https://docs.graylog.org/en/4.1/pages/configuration/server.conf.html

elasticsearch_analyzer = standard

  • 用于message 和 full_message 字段的分析器(标记器)。“标准”过滤器通常是一个好主意。
  • 所有支持的分析器是:standard, simple, whitespace, stop, keyword, pattern, language, snowball,自定义
  • Elasticsearch 文档:https : //www.elastic.co/guide/en/elasticsearch/reference/5.6/analysis.html
  • 请注意,此设置仅对新创建的索引生效。

使用Nginx代理web界面

标准的代理

server
{
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name graylog.example.org;

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Graylog-Server-URL http://$server_name/;
      proxy_pass       http://127.0.0.1:9000;
    }
}

前缀代理

如果您想在一个域名下为多个不同的应用程序提供服务,您还可以使用路径前缀为 Graylog Web 界面提供服务

server
{
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name applications.example.org;

    location /graylog/
    {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Graylog-Server-URL http://$server_name/graylog/;
      rewrite          ^/graylog/(.*)$  /$1  break;
      proxy_pass       http://127.0.0.1:9000;
    }
}
  • Web interface: http://applications.example.org/graylog/
  • REST API: http://applications.example.org/graylog/api/

https://docs.graylog.org/en/4.1/pages/configuration/web_interface.html

问题

新建的用户,去登录就报错,新用户没法登陆

翻看graylog的日志,错误如下:

java.security.InvalidKeyException: Illegal key size

解决方案

  • 解决方案:去官方下载JCE无限制权限策略文件。

    jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR

    jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

    JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
    JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
    如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件。

    如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

下面是1.8对应的下载方式 链接: https://pan.baidu.com/s/14wizbqpxRXHq9RPsZ4SUkg 提取码: 2sh6

  • JDK1.8.0_151无需去官网下载 local_policy.jar US_export_policy.jar这个jar包,只需要修改Java\jdk1.8.0_151\jre\lib\security这目录下的java.security文件配置即可

    jre/lib/security 文件夹中查找文件 java.security

    默认情况下,您应该能找到一条注释掉的行:

    #crypto.policy=unlimited
    

    您可以通过取消注释该行来启用无限制,删除

    crypto.policy=unlimited
    

    现在重新启动指向JVM的Java应用程序即可。

流的配置

除非您明确希望在不同的 Elasticsearch 索引中多次存储消息否则要么将默认索引集分配给相应的流,要么为相应的流启用从“所有消息”流设置中删除匹配项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lakernote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值