如何将OpenShift日志和事件发送到Splunk

时间:2020-02-23 14:31:49  来源:igfitidea点击:

作为群集管理员,我们肯定会希望汇总来自OpenShift Container Platform群集的所有日志,例如容器日志,节点系统日志,应用程序容器日志等。在本文中,我们将安排群集日志记录Pod和其他必要的资源,以支持向Splunk发送日志,事件和群集指标。

我们将使用Splunk Connect for Kubernetes,它提供了一种导入和搜索Splunk中的OpenShift或者Kubernetes日志,对象和指标数据的方法。 Splunk Connect for Kubernetes在开发这些工具时利用并支持多个CNCF组件,以将数据导入Splunk。

设置要求

对于此设置,我们需要以下项目。

使用oc命令行工具配置的OpenShift Cluster。需要管理访问权限.Splunk Enterprise 7.0或者更高版本工作站中已安装头盔至少两个Splunk索引HTTP事件收集器用于验证事件数据的HEC令牌

为此,将在OpenShift上部署三种类型的部署:用于收集OpenShift对象中的更改的部署;每个OpenShift节点上的一个DaemonSet用于度量标准收集;每个OpenShift节点上的一个DaemonSet用于日志收集。

实际的实现将如下图所示。

创建Helm索引

我们将至少需要两个索引才能进行此部署。一个用于日志和事件,另一个用于度量。

以管理员用户身份登录到Splunk:

创建事件和日志索引。输入数据类型应为事件。

对于Metrics Index,输入数据类型可以是Metrics。

确认索引可用。

建立Splunk HEC凭证

HTTP事件收集器(HEC)使我们可以通过HTTP和安全HTTP(HTTPS)协议将数据和应用程序事件发送到Splunk部署。由于HEC使用基于令牌的身份验证模型,因此我们需要生成新令牌。

这是在"数据输入"配置部分下完成的。

选择" HTTP事件收集器",然后填写名称,然后单击"下一步"。

在下一页中,允许令牌写入我们创建的两个索引。

查看并提交设置。

安装头盔

如果我们尚未在工作站或者堡垒服务器中安装头盔,请查看以下链接中的教程。

在Kubernetes集群上安装和使用Helm 3

我们可以通过检查头盔的可用版本来验证安装。

$helm version
version.BuildInfo{Version:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"clean", GoVersion:"go1.14.10"}

为Kubernetes部署Splunk Connect

为Splunk connect名称空间创建名称空间。

$oc new-project splunk-hec-logging

创建项目后,它应该是我们当前的工作项目。但是我们也可以随时切换到项目。

$oc project splunk-hec-logging

为安装创建值yaml文件。

$vim ocp-splunk-hec-values.yaml

我的已被修改为类似于以下内容。

global:
  logLevel: info
  journalLogPath: /run/log/journal
  splunk:
    hec:
      host: <splunk-ip> # Set Splunk IP address
      port: <splunk-hec-port> # Set Splunk HEC port
      protocol: http
      token: <hec-token> # Hec token created
      insecureSSL: true
      indexName: <indexname> # default index if others not set
  kubernetes:
    clusterName: "<clustername>"
    openshift: true
splunk-kubernetes-metrics:
  enabled: true
  splunk:
    hec:
      host: <splunk-ip>
      port: <splunk-hec-port>
      protocol: <hec-protocol>
      token: <hec-token>
      insecureSSL: true
      indexName: <metrics-indexname>
  kubernetes:
    openshift: true
splunk-kubernetes-logging:
  enabled: true
  logLevel: debug
  splunk:
    hec:
      host: <splunk-ip>
      port: <splunk-hec-port>
      protocol: <hec-protocol>
      token: <hec-token>
      insecureSSL: true
      indexName: <logging-indexname>
  containers:
    logFormatType: cri
  logs:
    kube-audit:
      from:
        file:
          path: /var/log/kube-apiserver/audit.log
splunk-kubernetes-objects:
  enabled: true
  kubernetes:
    openshift: true
  splunk:
    hec:
      host: <splunk-ip>
      port: <splunk-hec-port>
      protocol: <hec-protocol>
      token: <hec-token>
      insecureSSL: true
      indexName:  <objects-indexname>

相应地填写值,然后开始部署。在安装之前获取最新版本的URL。

helm install splunk-kubernetes-logging -f ocp-splunk-hec-values.yaml https://github.com/splunk/splunk-connect-for-kubernetes/releases/download/1.4.3/splunk-connect-for-kubernetes-1.4.3.tgz

部署输出:

NAME: splunk-kubernetes-logging
LAST DEPLOYED: Thu Oct 22 22:22:51 2017
NAMESPACE: splunk-logging
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
███████╗██████╗ ██╗     ██╗   ██╗███╗   ██╗██╗  ██╗██╗
██╔════╝██╔══██╗██║     ██║   ██║████╗  ██║██║ ██╔╝╚██╗
███████╗██████╔╝██║     ██║   ██║██╔██╗ ██║█████╔╝  ╚██╗
╚════██║██╔═══╝ ██║     ██║   ██║██║╚██╗██║██╔═██╗  ██╔╝
███████║██║     ███████╗╚██████╔╝██║ ╚████║██║  ██╗██╔╝
╚══════╝╚═╝     ╚══════╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝

Listen to your data.

Splunk Connect for Kubernetes is spinning up in your cluster.
After a few minutes, you should see data being indexed in your Splunk.

If you get stuck, we're here to help.
Look for answers here: http://docs.splunk.com

检查正在运行的节点:

$oc get pods
NAME                                                              READY   STATUS    RESTARTS   AGE
splunk-kubernetes-logging-splunk-kubernetes-metrics-4bvkp         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-4skrm         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-55f8t         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-7xj2n         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-8r2vj         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-agg-5bppqqn   1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-f8psk         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-fp88w         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-s45wx         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-metrics-xtq5g         1/1     Running   0          48s
splunk-kubernetes-logging-splunk-kubernetes-objects-b4f8f4m67vg   1/1     Running   0          48s

将特权SCC分配给服务帐户

for sa in $(oc  get sa --no-headers  | grep splunk | awk '{ print  }'); do
  oc adm policy add-scc-to-user privileged -z $sa
done

登录到Splunk,然后检查是否正在发送日志,事件和指标。