splunk是一款非常优秀的运维管理平台。Splunk 是机器数据的引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据 。 使用 Splunking 处理计算机数据,可让您在几分钟内解决问题和调查安全事件。监视您的端对端基础结构,避免服务性能降低或中断。以较低成本满足合规性要求。关联并分析跨越多个系统的复杂事件。获取新层次的运营可见性以及 IT 和业务智能。

splunk 有多种方式来收集数据,这里只介绍其中一种—— HTTP事件收集器

splunk默认的可用索引只有三个:history main summary ,如果有多个项目的日志需要记录,那么只有这三个索引明显是不够的。所以我们需要自定义索引。

有三种方式来创建自定义索引:web网页、命令行、配置文件。

web网页方式,根据web上的提示即可成功创建索引。

命令行方式,比较少用,每次只能用一次,且将命令中的参数写入文件,即可变为配置文件。

配置文件方式,可以重复使用,它参数就是命令行中的参数。

通过docker-compose.yaml可以实现splunk index自动创建、配置.

配置文件如下:

docker-compose.yaml

splunk:
image: splunk/splunk:latest # 指定 splunk 镜像
container_name: splunk # docker 容器名
restart: always # 是否重启
volumes:
- ./splunk_dev/data:/opt/splunk/etc # 数据文件
- ./splunk_dev/conf:/opt/splunk/var # 配置文件
- ./splunk_dev/indexes.conf:/opt/splunk/etc/system/local/indexes.conf # 映射 indexes.conf 文件,具体内容见下面
- ./splunk_dev/inputs.conf:/opt/splunk/etc/apps/splunk_httpinput/local/inputs.conf # 映射 inputs.conf 文件,具体内容见下面
environment:
SPLUNK_START_ARGS: --accept-license
SPLUNK_ENABLE_LISTEN: 9997
SPLUNK_ADD: tcp 1514
SPLUNK_CMD_1: "set minfreemb 500 -auth admin:changeme" # 修改磁盘空间,可用磁盘空间不足500M时,会暂停索引。splunk免费版,这个数要小于等于500,不然报错
SPLUNK_CMD_2: "edit user admin -tz Asia/Shanghai -auth admin:changeme" # 修改用户时区,默认使用的零时区,即:当搜索日志时,会发现日志时间要早8个小时
SPLUNK_CMD_3: "restart" # 重启splunk使上述配置生效
ports:
- "8080:8000" # 配置docker 端口映射 访问 localhost:8000即可访问 splunk网页版
- "8088:8088" # 该端口是 HTTP事件收集器 使用的端口
在项目指定目录内创建 indexes.conf 文件,在本例中就是在项目的 splunk_dev 目录下创建的。
该文件的作用是 创建一个自定义的 index [customer_index] # index 的名字
homePath=/opt/splunk/var/lib/splunk/customer_index/db/ # 存储路径
coldPath=/opt/splunk/var/lib/splunk/customer_index/colddb/
thawedPath=/opt/splunk/var/lib/splunk/customer_index/thaweddb/
在项目指定目录内创建 inputs.conf 文件,在本例中就是在项目的 splunk_dev 目录下创建的。
该文件的作用是 配置和关联 上面创建的 index [http]
disabled=0 # 全局启用 HTTP 事件收集器 [http://customer_collecter] # 指定 index 关联的 HTTP事件收集器的名字 ,splunk 会自动创建该HTTP事件收集器
disabled=0 # 启用该 HTTP 事件收集器 可省略
token=4B28FED9-1FA7-4E67-A426-7B4DFA0A0624 # 指定index 的 token
index=customer_index # 关联 index

此时通过 docker-compost up -d即可创建splunk ,通过浏览器访问 localhost:8080即可登陆splunk

通过如下命令即可向splunk 发送一条日志,以验证splunk启用成功

curl -k https://localhost:8088/services/collector -H 'Authorization: Splunk 4B28FED9-1FA7-4E67-A426-7B4DFA0A0624' -d '{"sourcetype": "mysourcetype", "event":"Hello, World!"}'

如果想将 splunkdjango结合使用,需要安装 splunk-handler,然后在django 配置文件中添加如下内容:


# logging
LOGGING = {
'version': 1,
'formatters': {
'simple': {
'format': '%(asctime)s %(levelname)s %(module)s[%(lineno)d] %(message)s'
},
'json': {
'()': 'pythonjsonlogger.jsonlogger.JsonFormatter',
'format': ('%(asctime)s %(created)f %(exc_info)s %(filename)s %(funcName)s %(levelname)s %(levelno)s '
'%(lineno)d %(module)s %(message)s %(pathname)s %(process)s %(processName)s %(relativeCreated)d '
'%(thread)s %(threadName)s')
},
},
'handlers': {
'stdout_console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
'formatter': 'simple',
},
'splunk': {
'level': 'DEBUG',
'class': 'splunk_handler.SplunkHandler',
'formatter': 'json',
'host': '127.0.0.1',
'port': 8088,
'token': '4B28FED9-1FA7-4E67-A426-7B4DFA0A0624',
'index': 'customer_index',
'sourcetype': 'json',
'verify': False,
'multiple_process': True,
},
},
'loggers': {
'django.request': {
'handlers': ['stdout_console', 'splunk'],
'propagate': False,
'level': 'DEBUG',
},
'console_logger': {
'level': 'DEBUG',
'handlers': ['stdout_console', 'splunk'],
'propagate': False
}
}
}

splunk + docker-compose 实现自定义 index的更多相关文章

  1. Docker compose学习笔记

    一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...

  2. Docker 核心技术之Docker Compose

    Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...

  3. 附003.Docker Compose命令详解

    一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...

  4. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  5. docker——三剑客之Docker Compose

    编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compo ...

  6. Docker入门-docker compose的使用

    Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在https://github.com/docker/compose 上开源. ...

  7. Docker Compose编排工具部署lnmp实践及理论(详细)

    目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...

  8. Docker Compose 项目打包部署

    Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...

  9. 什么,容器太多操作不过来?我选择Docker Compose梭哈

    接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ...

随机推荐

  1. 猴哥来了-游戏开发记录17-微信排行榜bug

    上线后排行榜bug 1.排序算法 const dataSorter = (gameDatas, field = Consts.OpenDataKeys.LevelKey) => {  let d ...

  2. linux系统配置jdk环境

    前提:linux服务器+JDK8-linux版本 工具:FileZilla+Xshell 将jdk上传到服务器的某个文件夹(本人是JDK) 进入该文件夹,输入tar xzvf  jdk-8u77-li ...

  3. tomcat简单使用(一)

    先来说一说tomcat的使用 官网下载tomcat:tomcat,我的百度云上的:tomcat Tomcat分为安装版和解压版:安装版:一台电脑上只能安装一个Tomcat:解压版:无需安装,解压即可用 ...

  4. HDFS分布式文件系统

    hadoop致力于构建在廉价的商用服务器上 多副本存储策略(副本数存多少合适) 常见是数据访问方式:流式数据访问(更适合大数据的访问)    随机数据访问(更适合传统的关系型数据库的访问)

  5. OSB格式(REST)转化(XML到JSON,JSON到XML)

    OSB转换项目操作手册 新建一个OSB项目 建立以下文件夹,以便更规范的管理工程 一.XML转JSON 1.导入wsdl文件 1)右键wsdl文件夹,选择import选项 2)在弹出框中选择Servi ...

  6. CPU UsageTimes Profile (cpu=times)

    HPROF工具能搜集CPU使用信息通过注入代码到每个方法进入点和退出点.因此能够统计方法真实调用次数和花费的时间. 它使用BCI(Byte Code Injection),所以比cpu=samples ...

  7. 21.xpath定位中id 、starts-with、contains、text()和last() 的用法

    xpath语法:id .starts-with.contains.text()和last() 的用法 <input id="su" class="bg s_btn ...

  8. 26.纯 CSS创作按钮被从纸上掀起的立体效果

    原文地址:https://segmentfault.com/a/1190000014930183 感想:主要2D和3D转换.阴影效果. HTML代码: <nav> <ul> & ...

  9. 转载 Servlet3 的 @WebServlet http://www.cnblogs.com/luxh/archive/2012/06/06/2537458.html

    我使用的开发环境:MyEclipse10+Tomcat7+JDK6. 开发Servlet3的程序需要一定的环境支持.Servlet3是Java EE6规范的一部分,MyEclipse10和Tomcat ...

  10. kubectl version报did you specify the right host or port

    现象: [root@localhost shell]# kubectl version Client Version: version.Info{Major:", GitVersion:&q ...