# 日志数据分析

# 示例

以下为接入示例的hive日志接入大数据平台示例文件文件示例

# 本内容你将获得

  • 日志接入数据中台进行分析采集
  • 日志的定时清理和迁移备份
  • 集成自动化运维能力集成

# 使用场景

ES这里集成的主要目标是为了日志的采集监控,存储空间和数据分析能力这里并不做太多的 处理,我们建议每个服务有自己的职责,数据分析采用数据中台组件进行分析管理,包括模型和维度的管理,数据的分析

# 接入配置

这里主要分几部分,主要从备份要求、运维自动化、数据导入几个角度,数据分析此为数据治理章节, 这里不做过多的描述

# 数据备份

这里的备份主要指的是导入es中,一般日志数据建议是保留6个月(等保要求),然后导入数据仓库中,导入脚本如下

# 待补充脚本

# 运维自动化

这里主要指的是定时的备份管理,这里集成jenkins+ansible+dingtalk的集成配置能力

Jenkinsfile的配置

pipeline {
    agent any

    environment {
    	// 构建参数
        PROJECT_NAME = 'elasticsearch-watcher-backup-test'
        PROJECT_DESC = '日志导入应用链接状态巡检'
        PRO_VERSION = '2.1.3-Alpha'

        // ansible-playbook配置
       	INVENTORY_YML = "/hosts/hosts.yml"
       	ANSIBLE_PLAYBOOK = "/ansible/elasticsearch-watcher-backup-test.yml"

        // 通知
      	NOTICE = "dingtalk"
       	DINGTALK_ROBOT = "alinesno-operation-dingtalk-robot"
    }

   	// 每天晚上22点执行1次导入
    triggers {
        cron('0 22 * * *')
    }

    options {
        buildDiscarder(logRotator(numToKeepStr: '2', artifactNumToKeepStr: '7', daysToKeepStr: '5'))
    }

    stages {
       stage('发布新的脚本') {
            steps {
				sh label: '', script: '''
					export ANSIBLE_CALLBACK_WHITELIST=json
					export ANSIBLE_STDOUT_CALLBACK=json

					ansible-playbook \
						-i ${WORKSPACE}${INVENTORY_YML} \
						${WORKSPACE}${ANSIBLE_PLAYBOOK} > ${WORKSPACE}/url_status.json

					cat ${WORKSPACE}/url_status.json
				'''
            }
       }

       stage('发送报告到监控中心') {
            steps {
            	script {
				   AJAX_RESULT_RESPONSE = sh (
						script: 'curl -F "file=@${WORKSPACE}/url_status.json" -X POST "http://alinesno-transfer.admin.beta.linesno.com/api/v2/inspect"' ,
						returnStdout: true
					).trim()
					echo "提交到报告中心结果: ${AJAX_RESULT_RESPONSE}"
				}
            }
        }

    }

    // 发送结果通知
    post {
        failure {
            dingtalk (
                robot: "${env.DINGTALK_ROBOT}",
                type:'ACTION_CARD',
                atAll: false,
                title: "日志导入应用链接检测巡检:${env.JOB_NAME}",
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 描述:${PROJECT_DESC}" ,
                    "- 巡检时间:${currentBuild.timeInMillis}" ,
                    "- 提交报告中心:${AJAX_RESULT_RESPONSE}" ,
                    "- 任务:[${currentBuild.displayName}](${env.BUILD_URL})",
                    '- 状态:<font color=#EE0000 >失败</font>',
                    "- 持续时间:${currentBuild.durationString}".split("and counting")[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                ]
           )
        }
        success {
            dingtalk (
                robot: "${env.DINGTALK_ROBOT}",
                type:'ACTION_CARD',
                atAll: false,
                title: "日志导入应用链接检测巡检:${env.JOB_NAME}",
                text: [
                    "### [${env.JOB_NAME}](${env.JOB_URL}) ",
                    '---',
                    "- 描述:${PROJECT_DESC}" ,
                    "- 巡检时间:${currentBuild.timeInMillis}" ,
                    "- 提交报告中心:${AJAX_RESULT_RESPONSE}" ,
                    "- 任务:[${currentBuild.displayName}](${env.BUILD_URL})",
                    '- 状态:<font color=#005bd4 >成功</font>',
                    "- 持续时间:${currentBuild.durationString}".split("and counting")[0],
                    "- 执行人:${currentBuild.buildCauses.shortDescription}",
                ]
           )
        }
    }
}

ansible的yaml配置

# 待补充脚本

集成之后的效果配置效果,有可视化的平台和定时处理,同时结果预警通知。

# 其它