栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

每日监控日志生成功能实现

每日监控日志生成功能实现

每日监控日志生成功能实现 一、目的

为了实现全自动化数据采集到大数据平台上,需要生成每天的监控日志方便运维人员进行查看。

二、课题

​ 每日监控日志文件生成

三、过程与方法

[任务一]

任务说明:编写shell脚本,实现每日自动生成监控日志

实现效果:

1)执行自动化采集数据的脚本,会生成以下数据【每次执行日期会进行更新】

2021-09-24 20:56:16 INFO >> json文件的日期由20200901替换成20200902成功!

2021-09-24 20:56:56 INFO >> 数据从mysql采集到hive成功!采集成功的数据有62条

日志文件内容截图

四、仪器设备和工具
设备仪器机房
操作系统Windows操作系统
工具连接工具:sqlyog、navicat
网络环境能够联网
五、思考题

1)$?在linux中有什么作用,除了这个符号还有哪些特殊符号?

0 : 就 是 该 b a s h 文 件 名 , 个 位 数 的 , 可 直 接 使 用 数 字 , 但 两 位 数 以 上 , 则 必 须 使 用 符 号 来 括 住 , 如 0:就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住,如 0:就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用符号来括住,如{10}.

$?:是上一指令的返回值,成功是0,不成功是1。一般来说,UNIX(linux) 系统的进程以执行系统调用exit() 来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。一般指令程序倘若执行成功,其回传值为 0;失败为 1。

$*:所有脚本参数的内容:就是调用调用本bash shell的参数。

@ : 基 本 上 与 上 面 相 同 。 只 不 过 是 “ @:基本上与上面相同。只不过是“ @:基本上与上面相同。只不过是“*”返回的是一个字符串,字符串中存在多外空格。 “$@”返回多个字符串。

$#:返回所有脚本参数的个数。

$$ :Shell本身的PID(ProcessID),即当前进程的PID。

$! :Shell最后运行的后台Process的PID

$- :使用Set命令设定的Flag一览

六、实现过程

开启hadoop1,hadoop2,hadoop3

连接hadoop1的数据库

导入三张表

开启集群

进入hive创建test表,创建四张表

create database test;

use test;

create table `order_status_log20200901`(`id` string,`order_id` string,`order_status` string,`operate_time` string) row format delimited fields terminated by ',';

create table `order_status_log20200902`(`id` string,`order_id` string,`order_status` string,`operate_time` string) row format delimited fields terminated by ',';

create table `order_status_log20200903`(`id` string,`order_id` string,`order_status` string,`operate_time` string) row format delimited fields terminated by ',';

create table `order_status_log20200904`(`id` string,`order_id` string,`order_status` string,`operate_time` string) row format delimited fields terminated by ','; 

使用winscp将log.json文件上传到/root/datax/job目录下

log.json加权限

chmod +x log.json

接着修改log.json

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "123456",
                        "column": [
                            "id",
                            "order_id",
                            "order_status",
                            "operate_time"
                        ],
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [
                                    "order_status_log20200901"
                                ],
                                "jdbcUrl": [
     "jdbc:mysql://192.168.174.10:3306/test"
                                ]
                            }
                        ]
                    }
                },
               "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://192.168.174.11:8020",
                        "fileType": "text",
                        "path": "/user/hive/warehouse/test.db/order_status_log20200901",
                        "fileName": "order_status_log20200901",
                        "column": [
                            {
                                "name": "id",
                                "type": "STRING"
                            },
                            {
                                "name": "order_id",
                                "type": "STRING"
                            },
                            {
                                "name": "order_status",
                                "type": "STRING"
                            },
                            {
                                "name": "operate_time",
                                "type": "STRING"
                            }
                        ],
                        "writeMode": "append",
                        "fieldDelimiter": ",",
                        "compress":"GZIP"
                    }
                }
            }
        ]
    }
}

使用winscp将auto1.sh文件上传到/root/sh目录下

加权限

chmod +x auto2.sh

编写auto2.sh

#!/bin/bash
log_dir=/root/log
log_prefix=order_status
function write_log(){
  log_format=`date '+%Y-%m-%d %H:%M:%S'`
  echo "${log_format} $1 >> ${2}" >> ${log_dir}/${log_prefix}.`date '+%Y-%m-%d'`.log
  [ $1 == "ERROR" ] && exit 1
}
date=`cat /root/sh/date`
afterday_timestamp=$[`date -d "${date}" +%s`+86400]
afterday=`date -d @${afterday_timestamp} +%Y%m%d`
sed -i "s/order_status_log${date}/order_status_log${afterday}/g" /root/datax/job/log.json
write_log INFO "log.json文件的日期由${date}成功替换成${afterday}!!!"
sed -i "s/${date}/${afterday}/g" /root/sh/date
python /root/datax/bin/datax.py /root/datax/job/log.json

if [ $? -eq 0 ];then
  result=`hive -e "use test;select count(id) from order_status_log${afterday}"`
  write_log INFO "数据从mysql中采集成功!!!采集的数据有${result}条"
else
  write_log ERROR "数据采集失败!!!,请立即检查"
fi

在sh下创建date

touch date
#并设置20200901

在root目录下创建文件夹log存日志文件

mkdir /root/log

最后执行

sh auto2.sh
cat /root/log/order_status.2021-09-30.log
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号