;m^ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlmZmZdd lmZdd lmZmZdd lmZmZd ZGd de ZddZedkreej dkrddlm!Z! e!j"e!j#ejZ$eej dde$dS#e%$re&dYdSej'$rZ(e&e)e(YdZ([(dSdZ([(we!j*$rZ+e+,YdZ+[+dSdZ+[+wwxYwdSdS)N)insert)OperationalError)select)func)LveStatsPluginLveStatsPluginTerminated)dbengine) get_chunks reboot_lock)ProgressCallback)FIELD_TO_TABLE_COLUMN HistoryShow)history history_x60ic@eZdZgdZdZdZdZdZdZdZ dZ d S) DBSaverX60)IDaCPUlCPUCPUfaEPlEPEPfaVMemlVMemVMemFaPMemlPMemPMemFaNproclNprocNprocFaIOlIOIOfIOPSflIOPSaIOPSctjd|_d|_d|_t |_d|_d|_d|_ td|_ dS)Nzplugin.DBSaverX60r localhostFg?)time_change_step) logging getLoggerlognowconfigAGGREGATE_PERIODperiod server_idverbose_execute_timeoutr progress)selfs /builddir/build/BUILDROOT/lve-stats-4.3.2-1.el9.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/plugins/generic/dbsaver_x60.py__init__zDBSaverX60.__init__5sV$%899 & $ !(#>>> c||_dSNr1)r8_configs r9 set_configzDBSaverX60.set_config?s  r;c  |jr|dt|ttzttz}||kr |tz }||z tkr0|jd||t t|t|tdD]\}}|tz}||krnt|j |dz||j |j |j}| }g} |D]z|j |j |d} | fdt |j D| dxxdzcc<| d xxdzcc<| | {t!5|j } | } | r;t'| D]*} | t+t,| +n1| t+t,|j |dd |jr&d||z dz||z zz }||| | n{#t2$rv}| |jd t9||jr(t;d t9|dd dYd}~nd}~wt<$rV}| | |jdt=|d}~wt>$r}| | t9|}d|vr|j |ddl!m"}||j |j#|||jYd}~ddddSd}~wwxYwdddn #1swxYwYtIj$|j%z }|j&dkr4|j&|z ||z dzkr |jd|||dS|jdn|jd|jr2|dd|j'dSdS)Nrz'Data aggregation from %s to %s started.)r period_from period_to show_columnsr4r/)r4timecreatedc>i|]\}}t||S)r ).0indx_field_rows r9 z9DBSaverX60.aggregate_db_data_by_hours..`s)ooo}uf.v6E ooor;cpud cpu_limit)r4rGidz-Can not write aggregated data to database: %sz Warning: z...Plugin is terminated.z*=: 'NoneType' and 'int')fix_db) from_timestmp to_timestamplog_z/Data was aggregated from %s to %s in %s secondszData aggregation done.zNothing to aggregate.T)force)(r5r7intr2r/debug enumeraterangerengineFIELDSr4proceed time_countupdateappendr connectbeginr executerrcommitcloserrollbackerrorstrprintr TypeErrorwarninglvestats.lib.dbenginerUr1rFr0r6stop)r8utc_fromutc_to utc_from_ aggr_cycle hour_fromhour_to history_showrowsmass_insert_valuesone_insert_valuesconn_transchunk progress_oeexcmsgrU work_timerMs @r9aggregate_db_data_by_hoursz%DBSaverX60.aggregate_db_data_by_hoursBs =  MM!   MMS)9%:%::SAQ=R=RR  ) )I I  0 0 0 HNNDiQW X X X)25CKKQa3b3bde)f)fI I % I#&66V##E*![ )A %!%"n     $++--%'" A AC%)^ , 7#*))% &,,ooooXabfbmXnXnooo&e,,,3,,,%k222c9222&--.?@@@@ ]]&&&& K//11E!KKMME#&-)34F)G)GJJ % f[.A.A5 I I I IJ"MM &{ 3 34>^emn5o5o =5(+v /AS.HVV_M_.`(`I MM)4440  1,CCC((('VX[\^X_X_```=C!"As2wwtt}"A"A"ABBB3BBB((( '>???688cA$   ((( !"gg5S@@!((---@@@@@@t{DKy_fmqmuvvvvG&&&&&&&&&&&&&&&&&&0 1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&P!IKK$(2 (1,,1E 1QT]`jTjmnTn1n1nHNN#TV_ahjstttFF HNN3 4 4 4 4 HNN2 3 3 3 = ! MM#TM * * * M    ! !s^).P$BJ3*P$ P'A+LP$ P%AM66 PA;P>P$PP$$P( +P( c|jd|jdd|_|\}}}}|||||||dS)NzPlugin executedr4r*)r/r[r1getr4get_max_min_ts aggregate_newaggregate_migrated)r8lve_data dt_x1_max dt_x1_min dt_x60_max dt_x60_mins r9rfzDBSaverX60.executes| ()))kBB7;7J7J7L7L4 9j* 9i<<<  :66666r;c|jd|0|0|tz|kr$||tz |dSdSdSdS)NzAggregating migrated)r/r[r2r)r8rrs r9rzDBSaverX60.aggregate_migratedsi -...  Z%; L\@\_i@i@i  + +J9I,I: V V V V V ! %;%;@i@ir;c|r^|s|}|jrtd|d|d||z tdzkrd|_n t|_|||dSdS)Nz*[lve-stats]: Start aggregating data from "z" to "z"; to skip press Ctrl+C ...<)r5rlr2r3r)r8rrrs r9rzDBSaverX60.aggregate_news  C '& } BBB$BBB :%(81(<<<  .  + +J B B B B B C Cr;c 8|j} ttjt jtjt jg|j t j k}tj }| |}| \}}|j dt|ddiddtj |z ttjt$jtjt$jg|j t$j k}| |}| \}}|j dt|ddiddtj |z |nO#t($rB} ||j dt)| d} ~ wwxYw||||fS)Nz%s; query time: %s literal_bindsT)compile_kwargs  rT)r^rdrrmaxrrGminwherer4rFrffetchoner/r[rkcompilereplacerrhr) r8r{query time_startrMrrrrrs r9rzDBSaverX60.get_max_min_tss& ##%% DHW_55tx7P7PQRRXX'"33EJ--&&C#&<<>> Iy HNN$EMM/41HMIIJJRRSWY\]] j(   DH[%89948KDW;X;XYZZ``+"77E--&&C%(\\^^ "J HNN$EMM/41HMIIJJRRSWY\]] j(    KKMMMM ( 6 6 6 KKMMM HNN2 3 3 3*,,# 5 6)Z;;sHI J=JJN) __name__ __module__ __qualname__r_r:r@rrfrrrrIr;r9rrsF2???X!X!X!t777WWW CCC "<"<"<"<")pluginrB)rrStoppedr=)-r-sysrF sqlalchemyrsqlalchemy.excrsqlalchemy.sqlrsqlalchemy.sql.expressionrlvestats.core.pluginrr lvestats.libr lvestats.lib.commons.funcr r lvestats.lib.commons.progressr lvestats.lib.lveinfolibr rlvestats.orm.historyrrr2rrrlenargvr1read_plugin_config read_configcnfKeyboardInterruptrlMakeDbExceptionerk ConfigErrorce log_and_exitrIr;r9rsu ++++++!!!!!!******IIIIIIII!!!!!!========::::::FFFFFFFF55555555@<@<@<@<@<@<@<@CD( D("C<< D( D##D(