文章目录
功能
设置日志保留存储策略
不同用户分配权限
截取日志中的数据进行指标统计
自定义索引映射
自定义分析器
使用Nginx代理web界面
问题
新建的用户,去登录就报错,新用户没法登陆
流的配置
功能
设置日志保留存储策略
选择编辑,策略如下图
三种单个索引策略
消息记录数 默认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}
1
2
第一行,用普通的正则表达式来定义一个 grok 表达式;第二行,通过打印赋值格式,用前面定义好的 grok 表达式来定义另一个 grok 表达式。
grok 表达式的打印复制格式的完整语法是下面这样的:
%{PATTERN_NAME:capture_name:data_type}
1
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本身是使用默认映射包括用于设置timestamp,message,full_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" : { }
}
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
为了扩展 Elasticsearch 和 Graylog 的默认映射,您可以创建一个或多个自定义索引映射并将它们作为索引模板添加到 Elasticsearch。
假设我们有一个数据架构,如下所示:
字段名称 字段类型 例子
http_method keyword GET
http_response_code long 200
ingest_time date 2016-06-13T15:00:51.927Z
took_ms long 56
将自定义索引映射的以下索引模板保存到名为 的文件中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"
}
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上述模板仅兼容 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"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
最后,使用以下命令将索引映射加载到 Elasticsearch:
$ curl -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'http://localhost:9200/_template/graylog-custom-mapping?pretty'
{
"acknowledged" : true
}
1
2
3
4
从那时起创建的每个 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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
前缀代理
如果您想在一个域名下为多个不同的应用程序提供服务,您还可以使用路径前缀为 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
1
解决方案
解决方案:去官方下载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
1
您可以通过取消注释该行来启用无限制,删除#:
crypto.policy=unlimited
1
现在重新启动指向JVM的Java应用程序即可。
流的配置
除非您明确希望在不同的 Elasticsearch 索引中多次存储消息,否则要么将默认索引集分配给相应的流,要么为相应的流启用从“所有消息”流设置中删除匹配项。
————————————————
版权声明:本文为CSDN博主「lakernote」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/abu935009066/article/details/119030784