我正在使用ELK堆栈从我的Django服务器进行集中式日志记录.我的ELK堆栈位于远程服务器上,logstash.conf如下所示:
input {
tcp {
port => 5959
codec => json
}
}
output {
elasticsearch {
hosts => ["xx.xx.xx.xx:9200"]
}
}
Run Code Online (Sandbox Code Playgroud)
两个服务elasticsearch和logstash都正常工作(使用检查docker-compose logs logstash).
我的Django服务器的设置文件的日志配置如下:
LOGGING = {
'version': 1,
'handlers': {
'logstash': {
'level': 'INFO',
'class': 'logstash.TCPLogstashHandler',
'host': 'xx.xx.xx.xx',
'port': 5959, # Default value: 5959
'version': 0, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library)
'message_type': 'django', # 'type' field in logstash message. Default value: 'logstash'.
'fqdn': …Run Code Online (Sandbox Code Playgroud) 我正在尝试过滤 Kibana 以查找包含字符串“pH”的字段。该字段称为extra.monitor_value_name. 潜在值的示例有Temperature_ABC01、DO_ABC01、 或pH_ABC01。
Kibana 的 Elasticsearch Query DSL 似乎没有“包含字符串”,因此我需要自定义查询。
我是 Query DSL 的新手,您能帮我创建查询吗?
另外,将其称为 Query DSL 是否合适?我什至不确定措辞是否正确。
我有一个带有Express的Node.js服务器应用程序.我想将其活动记录到ElasticSearch中,并使用Kibana可视化日志.
这样做的正确方法是什么?
我应该写一个json行的日志文件并用Logstash读取它吗?
我正在将Elasticsearch和Kibana设置为我们办公室的集中式日志记录平台.
我们有许多自定义实用程序和插件,我想跟踪用户的使用情况以及用户是否遇到任何错误.更不用说还有我想跟踪的服务器和预定工作.
因此,如果我有许多不同的日志数据源,所有这些源都会转到同一个弹性搜索集群,那么它们如何组织成索引和文档类型的约定或最佳实践呢?
Logstash使用的默认索引值是"logstash-%{+YYYY.MM.dd}".所以看起来最好用当前日期后缀任何索引名称,因为这样可以很容易地清除旧数据.
但是,Kibana允许添加可以在UI中选择的多个"索引模式".然而,我读过的所有教程都只提到创建一个单一的模式logstash-*.
如何在实践中使用多种索引模式?我是否只为我的数据的所有来源命名?如:
BackupUtility-%{+YYYY.MM.dd}
UserTracker-%{+YYYY.MM.dd}
ApacheServer-%{+YYYY.MM.dd}
Run Code Online (Sandbox Code Playgroud)
我在一些具有弹性搜索目标的工具中使用nLog.nLog和其他类似日志框架的约定是为源代码中的每个类都有一个"记录器".这些记录器是否应该转换为弹性搜索中的索引?
MyCompany.CustomTool.FooClass-%{+YYYY.MM.dd}
MyCompany.CustomTool.BarClass-%{+YYYY.MM.dd}
MyCompany.OtherTool.BazClass-%{+YYYY.MM.dd}
Run Code Online (Sandbox Code Playgroud)
或者这对于弹性搜索索引名称来说太过细化了,最好只坚持应用程序的单个日期索引?
CustomTool-%{+YYYY.MM.dd}
Run Code Online (Sandbox Code Playgroud) 我最近使用redis 2.8.24,Elasticsearch 1.2.2和Kibana 3.1升级了我的ELK堆栈(使用redis 3.2.3,Elasticsearch 2.3.5和Kibana 4.5.4的logstash 2.3.4)(logstash 1.4.1/1.4.2) 0.1).升级进行得很顺利,但升级后我有一些字段有冲突类型.此特定字段由logstash动态创建,因此Elasticsearch中没有整体映射.我花了相当多的时间搜索如何改变它.每篇在线文章都说我不能简单地改变现有数据的字段类型.我引用的许多文章都需要重新索引,但未能解释如何.以下是我更改类型和重新索引的确切步骤.
从需要更改字段类型的当前索引获取映射:
curl -XGET http://localhost:9200/logstash-2016.05.30/_mapping?pretty=1 > logstash-2016.05.30
Run Code Online (Sandbox Code Playgroud)
编辑logstash-2016.05.30文件,删除文件中的第二行(索引名称)和第二行(花括号).如果不这样做,将不会更新映射.我想如果你将索引名称编辑为新名称它可以工作,但我没有尝试(应该尝试我猜).
编辑logstash-2016.05.30文件并更改类型(即long为string或string为long).您可以使用类似字段使用的确切定义.
"http_status" : {
"type" : "string",
"norms" : {
"enabled" : false
},
"fields" : {
"raw" : {
"type" : "string",
"index" : "not_analyzed",
"ignore_above" : 256
}
}
},
Run Code Online (Sandbox Code Playgroud)
改成:
"http_status" : {
"type" : "long"
},
Run Code Online (Sandbox Code Playgroud)
接下来创建新索引(追加_new或任何你想要的)
curl -XPUT http://localhost:9200/logstash-2016.05.30_new -d @logstash-2016.05.30
Run Code Online (Sandbox Code Playgroud)
仔细检查映射是否已正确创建
curl -XGET http://localhost:9200/logstash-2016.05.30_new/?pretty
Run Code Online (Sandbox Code Playgroud)
使用以下方法重新索引:
curl -XPOST http://localhost:9200/_reindex -d '{
"source": {
"index" : "logstash-2016.05.30"
},
"dest" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 nfs mount 作为我的 elasticsearch 数据目录,之前我使用的是主机存储。但是当我尝试打开我的容器时,我遇到了下面提到的错误:
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes/0];
es02 | Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes/0
es02 | at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
es02 | at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
es02 | at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
es02 | at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:388)
es02 | at java.base/java.nio.file.Files.createDirectory(Files.java:694)
es02 | at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:801)
es02 | at java.base/java.nio.file.Files.createDirectories(Files.java:787)
es02 | at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:275)
es02 | at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:212)
es02 | at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:272)
es02 | at org.elasticsearch.node.Node.<init>(Node.java:362)
es02 | at org.elasticsearch.node.Node.<init>(Node.java:289)
Run Code Online (Sandbox Code Playgroud)
我之前使用 docker-compose 时,我的集群工作正常,当我使用主机存储时,但当我尝试切换到 NFS 存储时,我遇到了上述错误。下面是我的 docker-compose 文件:
version: '3.3'
volumes:
data:
driver: local …Run Code Online (Sandbox Code Playgroud) 我正在使用ELK堆栈和log4j 2通过sl4j和json模式布局来记录消息.我的所有日志都记录为json消息.在我的一个日志中,我正在尝试记录json从第三方服务收到的响应.但是这个响应json主体没有附加到json结构中.但它更多地附加为包含转义字符的字符串.
如何记录最终日志.
{
"timeMillis": 1471862316416,
"thread": "FioranoMQ Pubsub Session Thread",
"level": "INFO",
"loggerName": "com.mlp.eventing.bridge.fiorano.TopicMessageListener",
"message": "{\"Msgtype\":\"SentToRabbitMqTest\",\"MessageData\":\"10\",\"opration\":\"devide\"}",
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.slf4j.Log4jLogger",
"threadId": 28,
"threadPriority": 5
}
Run Code Online (Sandbox Code Playgroud)
在上面的消息段中作为转义字符串而不是整个json结构附加.我的预期出局应该是
{
"timeMillis": 1471862316416,
"thread": "FioranoMQ Pubsub Session Thread",
"level": "INFO",
"loggerName": "com.mlp.eventing.bridge.fiorano.TopicMessageListener",
"message": {
"Msgtype": "SentToRabbitMqTest",
"MessageData": "10",
"opration": "devide"
},
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.slf4j.Log4jLogger",
"threadId": 28,
"threadPriority": 5
}
Run Code Online (Sandbox Code Playgroud)
我期待使用神交过滤器提取的消息段的字段json中shipper.conf
以下是我的配置: - log4j2.xml
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我正在使用来自弹性云的小型弹性搜索集群。
我需要:
在 Kibana UI 部分中,Snapshot and Restore我可以看到我的快照和此提示:
使用存储库来存储和恢复 Elasticsearch 索引和集群的备份。
但是我如何将实际数据从elasticsearch索引下载到我的机器(作为一堆json)并将其导入到本地运行的elasticsearch中?
我有两个由两个不同的lambda生成的日志组.当我将一个日志组订阅到我的elasticsearch服务时,它正在运行.但是,当我添加其他日志组时,我在cloudwatch生成的日志中出现以下错误:
"responseBody": "{\"took\":5,\"errors\":true,\"items\":[{\"index\":{\"_index\":\"cwl-2018.03.01\",\"_type\":\"/aws/lambda/lambda-1\",\"_id\":\"33894733850010958003644005072668130559385092091818016768\",\"status\":400,\"error\":
{\"type\":\"illegal_argument_exception\",\"reason\":\"Rejecting mapping update to [cwl-2018.03.01] as the final mapping would have more than 1 type: [/aws/lambda/lambda-1, /aws/lambda/lambda-2]\"}}}]}"
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题,并且在我的Elasticsearch服务中仍然有两个日志组,并可视化所有日志?
谢谢.
logging amazon-web-services elasticsearch amazon-cloudwatch elastic-stack