我正在编写一种grok 模式来解析cinder-api的fluenced中的日志,其中一行是:
2015-09-17 17:44:49.663 ^[[00;32mDEBUG oslo_concurrency.lockutils [^[[00;36m-^[[00;32m] ^[[01;35m^[[00;32mAcquired semaphore "singleton_lock"^[[00m ^[[00;33mfrom (pid=30534) lock /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:198^[[00m
Run Code Online (Sandbox Code Playgroud)
和^[[00;32m其他此类事件是ASCII 颜色代码,在终端中打印时打印如下:
我需要解析该行,并且当没有使用(测试的)模式的
颜色代码时我能够做到这一点%{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}{NOTSPACE:api}%{SPACE}\[(?:%{DATA:request})\]%{SPACE}%{GREEDYDATA:message}
如何修改 grok 模式以便能够解析彩色日志行?
我发现以下内容是否可以帮助任何人找到解决方案:
^[实际上是ESC键,八进制代码为\033,十六进制代码为\x1B,十进制 ASCII 代码为27 ,也用^[表示。我整天都在尝试这样做。我想通过fluentd日志记录引擎将日志从Docker发送到FluentD,然后从fluentd将那些日志发送到logstash进行处理。
我一直从logstash收到此错误:
{:timestamp=>"2016-03-09T23:29:19.388000+0000",
:message=>"An error occurred. Closing connection",
:client=>"172.18.0.1:57259", :exception=>#<TypeError: can't convert String into Integer>,
:backtrace=>["org/jruby/RubyTime.java:1073:in `at'",
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.2.2-java/lib/logstash/timestamp.rb:27:in `at'",
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-fluent-2.0.2-java/lib/logstash/codecs/fluent.rb:41:in `decode'",
"org/msgpack/jruby/MessagePackLibrary.java:195:in `each'",
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-fluent-2.0.2-java/lib/logstash/codecs/fluent.rb:40:in `decode'",
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-tcp-3.0.2/lib/logstash/inputs/tcp.rb:153:in `handle_socket'",
"/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-tcp-3.0.2/lib/logstash/inputs/tcp.rb:143:in `server_connection_thread'"], :level=>:error}
Run Code Online (Sandbox Code Playgroud)
相当基本的logstash配置:
input {
tcp {
port => 4000
codec => "fluent"
}
}
output {
stdout {
}
}
Run Code Online (Sandbox Code Playgroud)
相当基本的流利配置:
<source>
@type forward
</source>
<match docker.json>
@type forward
send_timeout 60s
recover_wait 10s
heartbeat_type none
phi_threshold 16
hard_timeout 60s
<server>
name logstash
host 172.18.0.2
port 4000
weight 60
</server>
</match>
<match …Run Code Online (Sandbox Code Playgroud) 我写的
<source>
@type tail
format nginx
path /home/work/opt/nginx/var/log/access.log
tag nginx.access
</source>
Run Code Online (Sandbox Code Playgroud)
在我的 fluent.conf 文件中并与 stdout 匹配,但是当我对我的网站进行 post 调用时,nginx 将访问记录到其日志中,但 fluentd_ui 建议
[warn]: no patterns matched tag="nginx.access"
Run Code Online (Sandbox Code Playgroud)
如何为我的 http 请求添加标签?
我需要将日志存储到 Es 索引,当我使用 logstash 日期被附加到索引名称为 logstash.2018-08-06 时,但是当我尝试在流动的 conf 中提供自定义名称时,它没有被添加
</store>
<store>
@type elasticsearch
host X.X.X.X
port 9200
logstash_format false
index_name updatetest.%Y%m%d --> In index name its not replacing with date
</store>
Run Code Online (Sandbox Code Playgroud)
这是索引名称,由上面的 conf updatetest.%Y%m%d 创建 --> 它应该像 updatetest.20180806
提前感谢您的帮助
使用 Fluentd,我以 JSON 格式将日志发送到 Splunk 和 ES,如下所示:
{
"object1": {
"obj1_key1": "value_xyz"
}
"object2": {
"obj2_key1": "value_abc"
}
}
Run Code Online (Sandbox Code Playgroud)
在将日志发送到服务器之前,我想在 Object1 和 Object2 中添加一些字段作为元数据,例如。
{
"object1": {
"obj1_key1": "value_xyz"
"metadata": "constant_value"
}
"object2": {
"obj2_key1": "value_abc"
"metadata": "constant_value"
}
}
Run Code Online (Sandbox Code Playgroud)
我知道使用 fluidd“record_transformer”插件我们可以添加新字段,但问题是如何在对象或嵌套对象内添加字段?
使用:
在 Openshift 中运行(Kubernetes v1.17.1+20ba474)。
Fluentd 和 Elasticsearch 都在不同的 pod 中运行。
Fluentd配置文件:
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<filter *.**>
@type parser
key_name log
reserve_data true
<parse>
@type none
</parse>
</filter>
<match *.**>
@type copy
<store>
@type elasticsearch
host elasticdb
port 9200
logstash_format true
logstash_prefix applogs
logstash_dateformat %Y%m%d
include_tag_key true
type_name app_log
tag_key @log_name
flush_interval 1s
user elastic
password changeme
</store>
<store>
@type stdout
</store>
</match>
Run Code Online (Sandbox Code Playgroud)
从本地 springboot 服务,我向 fluidd 发送一些虚拟数据: …
我知道有很多标题相似的问题,但没有一个与我的问题相似。我的问题很简单,我正在尝试使用命令在我的 dockerfile 中安装一些软件包install_packages。这会导致权限被拒绝错误,指出/bin/sh: 1: install_packages: Permission denied
我尝试过添加USER 0,USER root但没有一个起作用。下面是我的 Dockerfile。我究竟做错了什么?。在 github 中也看到了类似的问题,但那里提供的解决方案对我不起作用。类似问题:https://github.com/bitnami/bitnami-docker-wordpress/issues/230
Dockerfile:(第六条命令出错)
FROM docker.io/bitnami/minideb:buster
LABEL maintainer "Bitnami <containers@bitnami.com>"
USER root
ENV HOME="/" \
OS_ARCH="amd64" \
OS_FLAVOUR="debian-10" \
OS_NAME="linux"
COPY prebuildfs /
# Install required system packages and dependencies
RUN install_packages ca-certificates curl ghostscript gzip imagemagick libc6 libgcc1 libgmp-dev libjemalloc-dev libncurses5-dev libncurses6 libreadline-dev libreadline7 libssl1.1 libstdc++6 libtinfo6 libxml2-dev libxslt1-dev procps tar zlib1g zlib1g-dev
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "ruby" "2.6.6-0" --checksum …Run Code Online (Sandbox Code Playgroud) 例子:
require "fluent/plugin/output"
module Fluent::Plugin
class Outer < Fluent::Plugin::Output
@outer_var = "Hello from outer variable"
class Inner
def initialize()
puts "@outer_var", @outer_var # nil
log.info "Hello from inner initialize" # undefined local variable or method log
outer_method() # undefined method `outer_method' for #<Outer::Inner:0x00007fd2100452b0> (NoMethodError)
end
end # Inner
def initialize()
Inner.new()
log.info "Hello from outer initialize" # works
end
def outer_method
puts "Hello from outer method"
end
end # Outer
end # Fluent::Plugin
Run Code Online (Sandbox Code Playgroud)
如何使内部类可以访问外部变量和方法?这里的示例显示了如何定义内部/外部类,但没有显示如何访问外部类。我知道 Ruby 中不存在内部/外部类的概念,根据这个答案。在仍然是模块一部分的情况下使用 …