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. 移动端动态font-size

    /** * Created by shimin on 2017/8/18. *///计算dpr!function(win, lib) { var timer, doc = win.document, ...

  2. 生成excel的时候要用双引号。。。。。

    <?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition ...

  3. RxJava响应式编程,入门的HelloWorld;

    RxJava核心就是异步,它也被称之为响应式编程:最大的优势就是随着程序逻辑变得越来越复杂,它依然能够保持简洁. Rxjava真的是让人又爱又恨,因为它的线程切换和链式调用真的很好用,但是入门却有点难 ...

  4. Android 自定义TabHost,TabWidget样式

    界面比较简单,要想做得漂亮换几张图片就可以了. 第一步:先在布局(这里用了main.xml创建时自动生成的)里面放上TabHost ,只要将TabHost控件托至屏幕中就可: <?xml ver ...

  5. [Unity动画]01.HasExitTime & ApplyRootMotion

    参考链接: https://www.cnblogs.com/hammerc/p/4828774.html 资源下载: https://assetstore.unity.com/packages/ess ...

  6. Nop常用知识点

    1.列表标题与内容均居中对齐,列中配置为: headerAttributes: { style: "text-align:center" }, attributes: { styl ...

  7. Angular.js入门

    一.引入angular.js  <script type="text/javascript" src="../plugins/angularjs/angular.m ...

  8. Android开发中常见的设计模式(一)——单例模式

    首先了解一些单例模式的概念. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这样做有以下几个优点 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中. 保持 ...

  9. Python基础6 面向对象编程

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

  10. java abstract构造函数调用

    构造函数是对象的基本,没有构造函数就没有对象.如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 public abstract cl ...