我的示例日志如下所示
fixed message: 443-343-234-event-put
fixed message: wre-sdfsdf-234-event-keep-alive
fixed message: dg34-343-234-event-auth_revoked
fixed message: qqqq-sdf-234-event-put
fixed message: wre-r323-234-event-keep-alive
fixed message: we33-343-234-event-auth_revoked
Run Code Online (Sandbox Code Playgroud)
日志模式是"fixed message: {UUID}-{event-type}"
我想捕获总共有多少事件;其中有多少是 event-put、event-keep-alive 和 event-auth_revoked
我可以使用 splunk 查询来捕获上述需求吗?
我们最近将 AKS 集群从 1.17.x 更新到 1.19.x,并发现自定义应用程序日志的格式发生了/var/lib/docker/containers变化。
我可以在变更日志中找到一些注释,其中 kubernetes 从文本日志更改为结构化日志(对于系统组件),但我不知道这与我们的日志格式更改有何关联。
https://kubernetes.io/docs/concepts/cluster-administration/system-logs/
/var/lib/docker/containers在 AKS > 1.19.x 中是否仍有机会获取有效的 json 日志?
背景:我们将应用程序日志发送到 Splunk,并且不使用 Azure 堆栈进行日志分析。目前,我们的 Splunk 设置无法解析新的日志格式。
我需要将log4j日志发送到Splunk。我找到了几种解决方案:
curl -k -u admin:changeme -d "name=/tmp/myfile.log" -d "sourcetype=syslog" https://localhost:8089/servicesNS/admin/search/data/inputs/monitor)使用log4j附加程序,例如:
log4j.appender.splunk = org.apache.log4j.net.SyslogAppender log4j.appender.splunk.SyslogHost = localhost:8089 log4j.appender.splunk.layout = org.apache.log4j.PatternLayout log4j.appender.splunk.facility = LOCAL2 log4j.appender.splunk.layout.ConversionPattern = [%p]%t:%m%n
但是在我看来,如果splunk服务器和日志位于单独的计算机上,则第三种解决方案将无法工作。
第二种解决方案需要安装其他软件
谁能提出其他解决方案?
PS我试图使用开源Java库。但这没有给出结果。
我正在尝试在 Splunk 中创建一个表,其中包含提取的多个字段以及当我向 Splunk 提供要搜索的字符串时返回的条目总数。我遇到的问题是,当我使用 stats 命令获取返回结果的计数并将其通过管道传送到表时,它只是将所有字段留空,但显示返回结果计数的值。如果没有计数逻辑,该表将显示我想要的所有值。下面是我的示例查询:
index=test "Failed to find file"
| table host, sourceUser, sourceApp, source
| rename host as "Server", sourceUser as "User", sourceApp as "Application", source as "Log"
Run Code Online (Sandbox Code Playgroud)
以下是示例结果(由于我无法发布图片,所以采用两行 CSV 格式):
服务器、用户、应用程序、日志
myserver1,joesmith,RadomApp,C:\Users\Joe\Log.txt
这将返回我要求的所有字段。如果我添加 stats 命令(如下所示),它会返回一个包含所有列的表,但唯一包含数据的是“错误计数”列:
index=test "Failed to find file"
| stats count as error
| table host, sourceUser, sourceApp, source, error
| rename host as "Server", sourceUser as "User", sourceApp as "Application", source as "Log", error as "Error Count"
Run Code Online (Sandbox Code Playgroud)
结果示例:
服务器、用户、应用程序、日志、错误计数
,,,,1
知道解决这个问题的最佳方法是什么吗?
我正在尝试使用splunk的logback appender直接在我的Java应用程序中记录splunk.
似乎什么都没有发生什么,但是当我在REST客户端手动发出post命令时,我在splunk中看到了我的数据.
我无法获得正式的splunk logback测试.
logback.xml
<appender name="SPLUNK" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
<url>http://mySplunkUrl:8088/services/collector</url>
<token>1234566789</token>
<disableCertificateValidation>true</disableCertificateValidation>
<batch_size_count>1</batch_size_count>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%msg</pattern>
</layout>
</appender>
<root level="trace">
<appender-ref ref="SPLUNK" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
单元测试
@Test
public void splunkLogger() {
Logger logger = LoggerFactory.getLogger(LogFactoryTest.class);
Date date = new Date();
String jsonMsg = String.format("{event:'CancerCenterTest'}");
logger.info("CancerCenterTest");
logger.info(jsonMsg);
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用的文档:http://dev.splunk.com/view/splunk-logging-java/SP-CAAAE7M
我错过了一些明显的东西吗
编辑 这是我项目的链接 - https://github.com/toymachiner62/splunk-logging
我们有一个python程序需要将日志发送到splunk。我们的 splunk 管理员创建了一个服务收集器 HTTP 端点,用于将日志发布到以下位置:
我们找不到在 splunk python SDK客户端中输入 URI 的位置。例如:
import splunklib.client as client
import splunklib.results as results_util
HOST="splunkcollector.hostname.com"
URI="services/collector/raw"
TOKEN="ABCDEFG-8A55-4ABB-HIJK-1A7E6637LMNO"
PORT=443
# Create a Service instance and log in
service = client.connect(
host=HOST,
port=PORT,
token=TOKEN)
# Retrieve the index for the data
myindex = service.indexes["cloud_custodian"]
# Submit an event over HTTP
myindex.submit("Dummy test python client log")
Run Code Online (Sandbox Code Playgroud)
如您所见,我从不使用 URI 变量。上述代码的结果是:
Traceback (most recent call last):
File "splunk_log.py", line 15, in <module>
myindex = service.indexes["cloud_custodian"] …Run Code Online (Sandbox Code Playgroud) 我是掌舵人。我用大量的conf文件构建了一个混乱的头盔图表。我目前在configmap中使用类似的东西..
apiVersion: v1
kind: ConfigMap
metadata:
name: splunk-master-configmap
data:
indexes.conf: |
# global settings
# Inheritable by all indexes: no hot/warm bucket can exceed 1 TB.
# Individual indexes can override this setting.
homePath.maxDataSizeMB = 1000000
Run Code Online (Sandbox Code Playgroud)
但是我更喜欢将conf文件放在单独的文件夹中,例如configs / helloworld.conf,并且跨过“ tpl”,但是正在努力了解如何实现它。-任何人都可以建议最佳做法。附带说明一下,splunk的出现顺序为>>,因此可能在不同位置使用了许多index.conf文件。有没有人对如何最好地实现这一目标有任何想法?
干杯。
我收到了来自 splunk 的日志,我想获取字符串中间的特定数据并将其用于仪表板。例如:
msg="somestring1 somestring2 500 somestring3 ..."
我如何获得值 500?
抱歉,我不是 splunk 方面的专家。提前致谢
与 Splunk 相比,这更像是一个 Python 问题,但如果有人这样做的话将会很有帮助......特别是在这里,有一个关于在单个 POST 中向服务器发送多个指标的讨论。他们提供的示例是使用curl 并将整个有效负载用单引号(\')括起来,例如
\n\ncurl -k http://<IP address or host name or load balancer name>:8088/services/collector \\\n-H "Authorization: Splunk 98a1e071-bc35-410b-8642-78ce7d829083" \n\\\n-d \'{"time": 1505501013.000,"source":"disk","host":"host_99","fields": \n{"region":"us-west-1","datacenter":"us-west- 1a","rack":"63","os":"Ubuntu16.10","arch":"x64","team":"LON","service":"6","service_version":"0","service_environment":"test","path":"/dev/sda1","fstype":"ext3","_value":999311222774,"metric_name":"total"}}\n{"time": 1505511013.000,"source":"disk","host":"host_99","fields": \n{"region":"us-west-1","datacenter":"us-west-1a","rack":"63","os":"Ubuntu16.10","arch":"x64","team":"LON","service":"6","service_version":"0","service_environment":"test","path":"/dev/sda1","fstype":"ext3","_value":1099511627776,"metric_name":"total"}}\'\nRun Code Online (Sandbox Code Playgroud)\n\n我的问题是如何在 python \xe2\x80\x93 中执行相同的操作,即您不能像在curl命令中那样将多个JSON对象用单引号括起来 - 这只会使整个有效负载成为字符串。是否有其他包装可以用于此目的?
\n\n所以,这有效:
\n\npayload = {"time": 1505501013.000,"source":"disk","host":"host_99","fields": \n{"region":"us-west-1","datacenter":"us-west- 1a","rack":"63","os":"Ubuntu16.10","arch":"x64","team":"LON","service":"6","service_version":"0","service_environment":"test","path":"/dev/sda1","fstype":"ext3","_value":999311222774,"metric_name":"total"}}\nRun Code Online (Sandbox Code Playgroud)\n\n但这并不:
\n\npayload = {"time": 1505501013.000,"source":"disk","host":"host_99","fields": \n{"region":"us-west-1","datacenter":"us-west- 1a","rack":"63","os":"Ubuntu16.10","arch":"x64","team":"LON","service":"6","service_version":"0","service_environment":"test","path":"/dev/sda1","fstype":"ext3","_value":999311222774,"metric_name":"total"}}\n {"time": 1505511013.000,"source":"disk","host":"host_99","fields": \n{"region":"us-west-1","datacenter":"us-west-1a","rack":"63","os":"Ubuntu16.10","arch":"x64","team":"LON","service":"6","service_version":"0","service_environment":"test","path":"/dev/sda1","fstype":"ext3","_value":1099511627776,"metric_name":"total"}}\nRun Code Online (Sandbox Code Playgroud)\n\n仅供参考,那么 POST 看起来像:
\n\n resp = requests.post(splunkurl,json=payload,headers=headers)\nRun Code Online (Sandbox Code Playgroud)\n 根据 Splunk MINT 文档 ( https://docs.splunk.com/Documentation/MintAndroidSDK/5.2.x/DevGuide/Requirementsandinstallation ),您必须手动下载 Gradle 插件工件并将其包含在您的项目中。
我成功地下载并部署了这个工件到 Artifactory 的本地实例,因为它已经以 maven repo 格式存档。
为了测试集成,我简单地创建了一个全新的项目并添加/应用了 mint 插件。从这里开始,Gradle 同步失败并出现以下错误:
Caused by: java.lang.NoSuchFieldError: javacTask
at com.splunk.mint.gradle.android.plugin.utils.VariantUtilsKt.getJavaTask(VariantUtils.kt:13)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform.setupVariant(AspectJTransform.kt:81)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform$prepareProject$1.execute(AspectJTransform.kt:57)
at com.splunk.mint.gradle.android.plugin.api.AspectJTransform$prepareProject$1.execute(AspectJTransform.kt:43)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:150)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:147)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:144)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
... 126 more
Run Code Online (Sandbox Code Playgroud)
我怀疑 …