跳转至

数据采集框架

所有的数据都通过zabbix采集,高频数据直接存入zabbix,低频数据存入数据库后再存入zabbix 1739157420892

高频数据采集

比如CPU占用率等硬件相关信息(zabbix默认会采集),这里以机房温度为例,展示高频数据的采集思路。 首先需要准备一段可以获取机房温度的代码

# 这里根据传感器编写一个脚本获取传感器实时温度
/root/02Software/zabbix/temp_wet/get_temp.py
随后基于agent获取相关数据
cd /etc/zabbix/zabbix_agent2.d
vi get_temp.conf
UserParameter=env.temp,python3 /etc/zabbix/zabbix_agent2.d/temp_wet/get_temp.py
最后在对应主机监控项配置该数据相关信息即可

1739192106234

低频数据采集

比如IArk平台各物种每日采集数据量等需要一定计算时间的任务,这里以各国每日数据新增量为例,展示低频数据的采集思路。 首先仍然准备获取相关数据的代码,这里直接在IArk系统中编写一个接口,方便随时调用。

class stat_new_sample_by_geo(APIView):
    description="统计各地区最近一天/周新增的数据"
    record = openapi.Schema(description='是否记录统计结果',
                          type=openapi.TYPE_BOOLEAN, example=False)
    @swagger_auto_schema(operation_description=description,operation_summary="统计各地区最近一天/周新增的数据",request_body=openapi.Schema(
        type=openapi.TYPE_OBJECT,
        properties={'record': record}
    ))
    @action(methods=['post'], detail=False)
    def post(self, request):
        request_data = request.data
        record = request_data.get('record', False)
        res=fn_new_sample_by_geo(record=record)
        return Response(res, status=status.HTTP_200_OK)
接着利用celery定时调用该接口,并将结果存储到数据库
#这里将一天执行一次的任务都放在一起,所以不需要再去配置celery定时执行
def run_all_1d_cron():
    #1、调用接口(这里直接调用函数即可)
    ##统计国家分布
    fn_stat_sample_by_country(record=True)
随后就是利用agent去获取数据库中对应的值
UserParameter=total_sample_by_country,python3 /etc/zabbix/zabbix_agent2.d/get_monitor/get_item_value.py -t sample -l total_sample_by_country -i 86400
最后和上面一样配置监控项即可,考虑到大规模的添加监控项的场景,建议使用zabbix脚本批量添加,具体参考有空再填坑

本文阅读量  次
本站总访问量  次
Authors: Wind