以在 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本身是使用默认映射包括用于设置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” : { }
}
为了扩展 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”
}
}
}
}
}
上述模板仅兼容 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;
}
}
前缀代理
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。
更多JVM面试整理:
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
解视频,并且会持续更新!**
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。
[外链图片转存中…(img-9huoqvRN-1711970889280)]
更多JVM面试整理:
[外链图片转存中…(img-NW97HWhP-1711970889281)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!