我想使用graylog作为中央日志服务器,目前我只是使用slf4j Logger“slf4j-api”作为Java日志框架来登录我的java应用程序。我可以使用 SLF4J 将日志记录发送到 Graylog 吗?或者我需要哪些额外的库才能将这些日志发送到 Graylog?
我正在使用graylog作为中央日志服务器,我正在使用gelf log4j2-appender将日志消息发送到graylog.这很好用.现在我创建了我的应用程序的docker镜像,我可以将我的软件作为docker容器运行.
使用docker我还会登录到stdout(console-appender)以将应用程序日志导入docker(docker logs {containerId}).
现在我问自己,我可以在gelf log4j2-appender上使用它,而是使用一个docker日志驱动程序/插件来支持gelf.(见https://docs.docker.com/engine/admin/logging/overview/)
这里的最佳做法是什么?我认为使用docker log插件会将整个字符串消息发送到graylog,而graylog需要从该字符串中提取元信息(因此我需要在日志消息中提供此元数据,例如log_level).这可能会导致graylog端的资源消耗更多,并且也无法将docker配置为仅向graylog发送错误消息.这会导致更多的网络流量.使用log4j2 gelf-appender我能够提供日志消息之外的一些元数据,而不将其包含在主日志消息中,并且在graylog端不需要提取.也可以通过log_level配置应该将哪些消息发送到graylog.或者我错了?什么是最佳解决方案或每种方式将日志发送到graylog的优缺点是什么?
我们尝试过滤从一个类生成的日志:
com.websudos.phantom
Run Code Online (Sandbox Code Playgroud)
为了两个目标:
来自应用程序的所有日志都保存在文件中,除了来自该类的日志
该文件中的所有日志都传输到graylog。
我们使用此过滤器通过正则表达式过滤这些日志:
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<matcher>
<Name>parameter</Name>
<regex>Executing query</regex>
</matcher>
<expression>parameter.matches(formattedMessage)</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
Run Code Online (Sandbox Code Playgroud)
Executing query
此类的正则表达式:com.websudos.phantom
我们不接受将此类的级别设置为,OFF
因为我们需要将此日志传输到graylog而不是保存在文件中!
有什么解决办法吗?
我已经安装了graylog服务器及其依赖项。尝试使用Monolog将日志从我的php应用程序发送到graylog服务器。但我不知道如何使用 Gelf 处理程序。我已经看到了 Monolog 项目中存在的 GelfHandlerTest.php,但我无法设置我的发布者并创建处理程序。请任何人用示例代码向我解释一下如何使用它。
尝试将日志从我的本地主机 apache 发送到在安装 Graylog 的同一专用网络中设置的服务器。
在 PHP 中执行的 testLogging 文件是,
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\GelfHandler;
use Gelf\Message;
use Monolog\Formatter\GelfMessageFormatter;
$handler = new GelfHandler($publisher);
Run Code Online (Sandbox Code Playgroud)
monolog中如何设置发布者?
感谢任何形式的帮助。谢谢
我可以在 Docker 文档中看到:https : //docs.docker.com/config/containers/logging/gelf/
在 GELF 中,每条日志消息都是一个包含以下字段的字典:...您自己配置的任何自定义字段
这是否意味着此驱动程序支持自定义字段?
我想为每个 GELF 消息添加自定义字段环境。我怎样才能做到这一点?
如何使用 PHP 从graylog 服务器搜索日志?
假设graylog服务器是https://host.td/api/search/universal/absolute
我一直在安装最新版本的Docker(1.8).这个新版本很棒,因为你可以设置一个特定的日志驱动程序来将日志发送到Graylog2(例如).
这是来自 docker 的博客文章:Docker博客宣布1.8这里是graylog团队博客,以实现神奇的发生:Graylog blog
我的问题是它不起作用:(
这是我在执行此命令时收到的错误消息:
docker run –log-driver=gelf –log-opt gelf-address=udp://127.0.0.1:12201 busybox echo Hello Graylog
Run Code Online (Sandbox Code Playgroud)
错误:
Unable to find image '–log-driver=gelf:latest' locally repository name component must match "[a-z0-9]+(?:[._-][a-z0-9]+)*"
Run Code Online (Sandbox Code Playgroud)
这是一个截图:
任何的想法 ?
编辑
遵循聪明人的建议:看起来破折号不是好的.
这是正确命令的粘贴:
docker run --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 busybox echo Hello Graylog
Run Code Online (Sandbox Code Playgroud) 在可用的开源日志管理工具中,我遇到过这两个,但无法弄清楚要使用哪一个.我尝试搜索Graylog vs Fluentd的文章,但找不到.
有人可以建议哪一个适合以下标准,
*生产master-slaves体系结构没有那么高端硬件,例如单核处理器具有4GB RAM和适当的驱动器大小以容纳日志
*通过UI
*日志搜索基于规则的警报
*最小化设置(如果可能)
*从VIP动态添加/删除从属主机
在此先感谢
米尔扎
我有一个简单的请求日志,其中每个记录在exec_time
属性下具有以秒为单位的执行时间.它应该始终是一个数字(越低越好).基于该属性,我有仪表板小部件,显示其平均值,直到最近才工作正常.现在它显示了NaN
.
我的猜测是,有一个或多个记录exec_time
不是数字.我怎样才能找到这些记录?
我有一台运行了一段时间的Graylog 2.1服务器.我最近没有注意到我的保留率,今天早上来到Graylog部分崩溃是因为磁盘空间不足.Elasticsearch Shards目前正在占用近100%的磁盘空间.对于Graylog Web界面是不是目前它在状态下使用.我尝试了一些标准的Ubuntu技巧为释放磁盘空间一样apt-get autoremove
和clean
,但未能获得足以让Web界面功能.
问题是我目前可以通过Web界面找到更改保留率和循环分片的所有文档.Graylog配置文件中不再显示唯一的配置选项.
有没有人知道手动,CLI,从Graylog 2.1中的Elasticsearch Shards中清除数据的方法?