kafka-splunk数据通路实践

news2024/11/17 2:33:52

目的: 鉴于目前网络上没有完整的kafka数据投递至splunk教程,通过本文操作步骤,您将实现kafka数据投递至splunk日志系统
在这里插入图片描述
实现思路

  1. 创建kafka集群
  2. 部署splunk,设置HTTP事件收集器
  3. 部署connector服务
  4. 创建connector任务,将kafka主题消息通过connector投递到splunk

测试环境

  • 测试使用的操作系统为centos7.5_x86_64
  • 文章提供了两种部署方式,分别是单机部署和容器化部署
  • 单机部署使用的主机来自腾讯云-cvm产品(腾讯云CVM),1台4c8g(如果条件允许,建议使用3台2c4g主机,分别部署kafka、connector、splunk,钱包有限,这里只是教程,不讲究这些)
  • 上述云主机,已安装JDK8及以上版本
  • 容器化部署使用的k8s集群来自腾讯云TKE,可以一键部署k8s集群,欢迎体验~

一、部署splunk

●splunk是一款收费软件,如果每天的数据量少于500M,可以使用Splunk提供的免费License,但不能用安全,分布式等高级功能。
部署步骤如下:

部署方式1:容器部署:

  1. 安装并启动docker(k8s集群节点可免除此步骤):
yum install docker -y
systemctl start docker
  1. 获取splunk镜像:
# https://hub.docker.com/r/splunk/splunk/tags
docker pull splunk/splunk
  1. 【非必须,3和4选一个】启动splunk容器,设置为自动接受lic,设置密码:
docker run -d -p 8000:8000 -e "SPLUNK_START_ARGS=--accept-license" -e "SPLUNK_PASSWORD=你的密码"  -p 8088:8088 --name splunk splunk/splunk:latest
  1. 【非必须,3和4选一个】在k8s中以工作负载方式部署splunk,这将为你创建一个splunk-ns命名空间,并创建deployment类型的工作负载部署splunk,以及一个LB类型的service,请根据你的需要修改命名空间、镜像、密码、端口:
vi splunk-deployment.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: splunk-ns

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: splunk
  namespace: splunk-ns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: splunk
  template:
    metadata:
      labels:
        app: splunk
    spec:
      containers:
      - name: splunk
        image: splunk/splunk:latest
        ports:
        - containerPort: 8000
        - containerPort: 8088
        env:
        - name: SPLUNK_START_ARGS
          value: "--accept-license"
        - name: SPLUNK_PASSWORD
          value: "你的密码"
        volumeMounts:
        - name: splunk-data
          mountPath: /opt/splunk/var
      volumes:
      - name: splunk-data
        emptyDir: {}

---

apiVersion: v1
kind: Service
metadata:
  name: splunk
  namespace: splunk-ns
spec:
  selector:
    app: splunk
  ports:
  - name: http
    port: 8000
    targetPort: 8000
  - name: mgmt
    port: 8088
    targetPort: 8088
  type: LoadBalancer
  1. 打开浏览器,访问splunk的地址:8000,预期可以看到splunk的页面。用户名/密码:admin/你的密码
    在这里插入图片描述

部署方式2:单机部署:

  1. 注册账号并获取splunk下载链接:https://www.splunk.com/en_us/download/splunk-enterprise.html ⚠️
  2. 解压缩
# 解压到/opt
tar -zxvf splunk-8.0.8-xxzx-Linux-x86_64.tgz -C /opt  
  1. 启动splunk,接受许可
cd /opt/splunk/bin/
./splunk start --accept-license  //启动,并自动接收许可
  1. 输入自定义用户名、密码
    在这里插入图片描述
    其他命令参考:
./splunk start   //启动splunk
./splunk restart   //重启splunk
./splunk status    //查看splunk状态
./splunk version   //查看splunk版
#卸载
./splunk disable boot-start //关闭自启动
./splunk stop //停止splunk
/opt/splunk/bin/rm–rf/opt/splunk //移除splunk安装目录
  1. splunk安装之后,默认开启Splunk Web端口8000。我们访问8000端口
    ●ps:Splunkd端口8089为管理端口
    在这里插入图片描述

在这里插入图片描述
至此,splunk部署成功

二、配置Splunk HTTP 事件收集器

  1. 在splunk中配置HTTP 事件收集器:
    a. 进入splunk web页面,点击右上角【设置】-【数据输入】
    在这里插入图片描述
    b. 选择HTTP事件收集器,点击【全局设置】,启用标记,HTTP端口为8088,点击【保存】
    在这里插入图片描述
    c. 点击右上角【新建标记】,新建HTTP事件收集器,填写:

    填写名称:splunk_kafka_connect_token,点击【下一步】;
    新建来源类型“splunk_kafka_data”,新建索引“splunk_kafka_index”,点击【检查】;
    提交;

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 随后,在设置-数据输入-HTTP事件收集器页面,将得到一个token,记录此token
    在这里插入图片描述

三、启动kafka并生产消息

  1. 启动kafka实例
    a. 安装jdk
yum install java -y

b. 下载kafka:https://kafka.apache.org/downloads,以2.12版本为例
在这里插入图片描述

c.解压

tar -zxvf kafka_2.12-3.6.1.tgz 

d.启动zookeeper

cd kafka_2.12-3.6.1/
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

e.启动kafka

./bin/kafka-server-start.sh config/server.properties &

在这里插入图片描述

f.创建topic,假设叫topic0

./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic0

在这里插入图片描述

g.使用生产者发送若干条消息

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic0

在这里插入图片描述

h.消费

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic topic0

在这里插入图片描述
至此,kafka启动成功

三、使用splunk for kafka connector实现splunk与kafka数据通路

  1. github上下载splunk for kafka connector的latest jar,下载地址:https://github.com/splunk/kafka-connect-splunk,在执行以下操作前请仔细阅读github上的redame,因为随着版本更新,配置或许会改变
    在这里插入图片描述
    在这里插入图片描述
  2. 配置splunk for kafka connector
    a.此步骤将完成kafka connector服务。返回带有kafka sdk的主机(注意,这里我只有一台测试机,但是如果你是多台主机分别部署kafka、connector的背景下,这里返回的不是kafka集群主机,我们要创建connector服务,kafka sdk是带有connector的配置的),编辑kafka_2.12-3.6.1/config/connect-distributed.properties
    参数说明:
    注意:rest.advertised.host.name和rest.advertised.port在不同的kafka版本中参数名不同,以connect-distributed.properties原文档参数为准;StringConverter表示日志格式为string,若日志为其他格式,请参考官方文档
# 将10.0.0.0:19000替换为你的kafka地址
bootstrap.servers=10.0.0.0:19000
group.id=test-splunk-kafka-connector
# 假设消息是string类型,格式不对splunk就不能解析日志
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.storage.StringConverter
key.converter.schemas.enable=false
value.converter.schemas.enable=false
# 换为connector的地址
rest.advertised.host.name=10.1.1.1
rest.advertised.port=8083
#指定splunk-kafka-connector.jar所在目录
plugin.path=/usr/local/bin/
  1. 启动conncetor:
cd kafka_2.12-3.6.1/
./bin/connect-distributed.sh config/connect-distributed.properties
  1. 验证splunk connector:
# curl http://「connector ip」:8083/connector-plugins
curl http://10.1.1.1:8083/connector-plugins

预期出现这个字段,表示splunk connector已经启动了:{“class”:“com.splunk.kafka.connect.SplunkSinkConnector”,“type”:“sink”,“version”:“v2.2.0”}
在这里插入图片描述

  1. 创建connector任务,替换10.1.1.1为您的kafka connector地址10.0.0.0为您的splunk地址,token为splunk事件收集器的token,topics替换为您的kafka topic
curl 10.1.1.1:8083/connectors -X POST -H "Content-Type: application/json" -d'{
  "name": "splunk-kafka-connect-task",
    "config": {
     "connector.class": "com.splunk.kafka.connect.SplunkSinkConnector",
     "tasks.max": "3",
     "topics": "topic0",
     "splunk.indexes": "splunk_kafka_index",
     "splunk.hec.uri":"https://10.0.0.0:8088",
     "splunk.hec.token": "b4594xxxxxx",
     "splunk.hec.ack.enabled" : "false",
     "splunk.hec.raw" : "false",
     "splunk.hec.json.event.enrichment" : "org=fin,bu=south-east-us",
     "splunk.hec.ssl.validate.certs": "false",
     "splunk.hec.track.data" : "true"
    }
}'

预期返回:
在这里插入图片描述

  1. 进入splunk 主页-search&reporting
    在搜索栏填写:index="splunk_kafka_index"验证index中的数据,预期能查看到我们生产的消息
    在这里插入图片描述
    在这里插入图片描述
    至此,kafka-splunk已打通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1435764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具】Android|Android Studio 长颈鹿版本安装下载使用详解

版本:2022.3.1.22, https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.22/android-studio-2022.3.1.22-windows.exe 前言 笔者曾多次安装并卸载Android Studio,反复被安卓模拟器劝退。现在差不多是第三次安装&#xff0c…

LeetCode-第2469题=温度转换

1.题目描述 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。 你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组 ans …

canvas缩放坐标系(scale)

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

(篇九)MySQL常用内置函数

目录 ⌛数学函数 ⌛字符串函数 ⌛聚合函数 ⌛日期函数 📐获取当前时间 📐获取时间的某些内容 📐​编辑 📐格式化函数 📏format类型: ⌛系统信息函数 ⌛类型转换函数 数学函数 字符串函数 聚合函…

PCB正片和负片的区别与使用

PCB正片和负片的区别与使用 简单解释详细解释 简单解释 简单的来说,正片在电路板的表面(指定是顶层和底层)上保留我们绘图工具所画的线(图案)。 而负片则是将我们绘制的线(图案)进行腐蚀掉&am…

transformers之agent

Hugging Face 发布了 Transformers Agent,一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。此举使其与 LangChain 作为构建企业通用人工智能 (AGI) 应用程序的新兴框架直接竞争,因为它很像 LangChain 工具和代理。 什么是 Transformers…

python将Word页面纸张方向设置为横向

通过python-docx的章节属性,就可以更改纸张方向、纸张尺寸。 import docx from docx.enum.section import WD_ORIENT from docx.shared import Cmdocument docx.Document() section document.sections[0]# 设置纸张大小为A4大小 section.page_width Cm(21) sect…

AI人工智能怎么自动抠图去除背景

抠图在许多场合中都发挥着重要的作用,它可以帮助我们去除图片的背景,从而将图片转换成透明底色,方便我们为图片更换其他的背景。为了实现照片去除背景只提取人物,我们需要使用专业的图片处理工具,并进行一系列的操作。…

万界星空科技低代码平台:快速搭建MES系统

低代码MES系统:制造业数字化转型的捷径 随着制造业的数字化转型,企业对生产管理系统的需求逐渐提高。传统的MES系统实施过程复杂、成本高昂,已经无法满足现代企业的快速发展需求。而低代码搭建MES系统的出现,为企业提供了一种高…

公共用例库计划--个人版(七)Excel导入功能开发与导出功能改造

1、任务概述 本次计划的核心任务是开发一个,个人版的公共用例库,旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理,并以提高用例的复用率为目标,力求最大限度地减少重复劳动,提升…

巴尔加瓦算法图解:K最近邻算法

巴尔加瓦算法图解:K最近邻算法 目录 巴尔加瓦算法图解:K最近邻算法判断水果创建推荐系统1. 判断相似程度练习 回归(预测结果)机器学习总结 本章内容 ❑ 学习使用K最近邻算法创建分类系统。❑ 学习特征抽取。❑ 学习回归&#xff0…

JAVA建造者模式详解

建造者模式 1 建造者模式介绍 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 **建造者模式要解决的问题 ** 建造者模式可以将部件和其组装过程分开…

代码编辑器垂直选中列选择

一、vscode 1. alt shift 鼠标左键 效果如下:(可框选字符,也可仅垂直编辑) 2. ctrl alt 方向键 这个不像上个操作那样可以框选字符,只能上下(并不总垂直) 二、VS 1. alt 鼠标左键 或…

动态规划解决棋盘覆盖问题:一步步教你理解

从简单到复杂:理解动态规划通过矩形覆盖问题 动态规划是解决各种算法问题的一种强大方法,特别是当问题可以分解成重叠的子问题时。为了深入理解这个概念,我们将先从一个简单的矩形覆盖问题开始,然后逐步过渡到更复杂的二维棋盘覆盖问题。 简单问题:用2x1的小矩形覆盖2xn…

Linux实验记录:使用DHCP动态管理主机地址

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 动态主机配置协议(DHCP&…

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示:“java: 程序包org.junit不存在”,针对这一问题,我们可以考虑以下三步来解决: 第一步:检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖,但仍需检查…

Redis(十二)Bigkey

文章目录 游标案例生成100万测试数据key生产上限制keys */flushdb/flushall等危险命令不使用keys *&#xff1a;scan Biigkey案例多大算大发现bigkey渐进式删除生产调优示例问题 游标案例 生成100万测试数据key shell: for((i1;i<100*10000;i)); do echo "set k$i v…

CF1404BTree Tag/ BZOJ0487. 树上追逐详解

1.题目 传送门:Tree Tag - 洛谷 2.思路 我们考虑什么情况下Alice可以获胜. 如果​ ≤ da&#xff0c;则Alice可以一步就追上Bob. 如果Alice处在一个能覆盖整棵树的点&#xff0c;即2da 1≥树的直径&#xff0c;那么Bob也无论走到哪里Alice都能追到,Alice获胜. 其它情况下…

浅析现代计算机启动流程

文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程&#xff0c;这个流程中会涉及到各种硬件的配置与交互&#xff0c;包…

(基于xml配置Aop)学习Spring的第十五天

一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…