splunk + docker-compose 实现自定义 index
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!"}'
如果想将 splunk和django结合使用,需要安装 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的更多相关文章
- Docker compose学习笔记
		一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ... 
- Docker 核心技术之Docker Compose
		Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ... 
- 附003.Docker Compose命令详解
		一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ... 
- 一文掌握Docker Compose
		目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ... 
- docker——三剑客之Docker Compose
		编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compo ... 
- Docker入门-docker compose的使用
		Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在https://github.com/docker/compose 上开源. ... 
- Docker Compose编排工具部署lnmp实践及理论(详细)
		目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ... 
- Docker Compose 项目打包部署
		Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ... 
- 什么,容器太多操作不过来?我选择Docker Compose梭哈
		接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ... 
随机推荐
- 第32课 Linux内核链表剖析
			1. Linux内核链表的位置及依赖 (1)位置:{linux-2.6.39}\\include\linux\list.h (2)依赖 ①#include<linux\types.h> ② ... 
- javascript-table出现滚动条表格自动对齐
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- NameNode配置HA后及其反过程Hive路径不正确的问题解决
			在CDH5.7下,配置了NameNode的HA后,Hive无正常查询数据了,但是其他的组件HDFS , HBase ,Spark都正常的.Hive新建表出现如下异常: CREATE TABLE `x_ ... 
- SPOJ COT3 - Combat on a tree
			/* 考虑直接使用暴力来算的话 SG[i]表示以i为根的子树的SG值, 然后考虑枚举删除那个子树节点, 然后求拆成的树的sg异或值, 求mex即可 复杂度三次方 然后考虑尝试 整体来做 发现对于每次子 ... 
- is和==的区别
			is 比较的是内存地址 == 比较的是内容 当两个变量指向同一个对象的时候. is是True, ==也是True 
- 零基础学习python_字符串(14-15课)
			今天回顾下我之前学习python的第一个对象——字符串,这个对象真蛋疼,因为方法是最多的,也是最常见的类型,没有之一... 内容有点多,我就搜了下网上的资料,转载下这个看起来还不错的网址吧:http: ... 
- h5项目如何打成war包
			有着java的运行环境,进入到h5工作目录,运行: jar -cvf projectname.war ./* projectname为项目的名称. 
- Java并发编程:Java Thread 的 sleep() 和 wait() 的区别
			1. start 和 run 方法解释: 1) start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调用Thread类 ... 
- python3基础:基本语句(2017)
			http://www.cnblogs.com/qq21270/p/4591318.html 字符串.文本文件 http://www.cnblogs.com/qq21270/p/7872824.htm ... 
- hive表命名规范 源码规则
			tablename 进来前已经把"`","."等过滤掉了,所以就是单词字符喽 \w搞定 \w包含_ 哈哈 规范就是 a-z A-Z 0-9 _ 也就是传说中的单 ... 
