#!/bin/sh #************** konfig start ************************************# OUTPUT_DIR="/tmp" TSMUSER=report TSMPASS=report TSMSERVER=tsm # dsm.sys servername XXX INAKTIV_NODE_NAPSZAM=32 #************** konfig vege ************************************# HOST=$(hostname) DSMADMCOPTS="-se=$TSMSERVER" # -dataonly=y" # Az elmult 7 nap aktivitasa tipusonken:t SQL1="SELECT substr(end_time,1,10), substr(activity,1,20), cast(float(sum(bytes))/1024/1024/1024 as dec(8,0)) as GB FROM summary WHERE end_time>current_timestamp-168 hours and activity<>'EXPIRATION' and bytes>0 GROUP BY activity, substr(end_time,1,10)" # Az elmuĂlt 7 nap adatmozgasai SQL2="select substr(end_time,1,10) as DATE, substr(nn.domain_name,1,15) as DOMAIN,substr(summary.activity,1,15) as ACTIVITY, sum(cast(summary.bytes/1024/1024/1024 as decimal(6,2))) as GB from nodes as nn, summary where (end_time between current_timestamp - 168 hours and current_timestamp) and (activity='BACKUP' or activity='RESTORE' or activity='ARCHIVE' or activity='RETRIEVE') and ((nn.node_name=summary.entity)) group by substr(end_time,1,10),domain_name,summary.activity order by date,activity,domain_name asc" # Node-ok méretei SQL3="select substr(ao.node_name,1,30) as node_name, ao.total_mb, sum(distinct oc.num_files) as NUM_FILES,count(distinct vu.volume_name) as tapes from auditocc ao JOIN occupancy oc ON ao.node_name=oc.node_name left JOIN volumeusage vu ON vu.node_name=ao.node_name group by ao.node_name,ao.total_mb order by 2 desc" # Adatbazis mentesek futasi ideje elmult 30 napban: SQL4="SELECT DATE(start_time) as DATE, TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as \"ELAPTIME (D HHMMSS)\", cast(bytes/1024/1024/1024 as DEC(8,2)) as GB FROM summary WHERE activity='FULL_DBBACKUP' AND current_timestamp - 30 days < start_time order by date" # Expiration processzek futasi ideje elmult 30 napban: SQL5="SELECT DATE(start_time) as DATE, TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as \"ELAPTIME (D HHMMSS)\", affected, number, successful FROM summary WHERE activity='EXPIRATION' AND entity IS NULL AND current_timestamp - 30 days < start_time order by date" # Storage poolok meretei, tipusai, tarolt objektum szammal SQL6="SELECT substr(occupancy.stgpool_name,1,20) as STGPOOL_NAME, substr(pooltype,1,15) as STGPOOL_TYPE, cast(SUM(logical_mb) as numeric (12,0)) AS Logical_MB,SUM(num_files)AS Num_Files FROM occupancy LEFT JOIN stgpools ON occupancy.stgpool_name=stgpools.stgpool_name GROUP BY occupancy.stgpool_name, pooltype" # Teljes szerveren tarolt adatmennyisegek SQL7="SELECT CAST(FLOAT(SUM(backup_mb))/1024 as DEC(8,0)) as BACKUP_GB, CAST(FLOAT(SUM(backup_copy_mb))/1024 as DEC(8,0)) as BACKUP_COPY_GB, CAST(FLOAT(SUM(archive_mb))/1024 as DEC(8,0)) as ARCHIVE_GB, CAST(FLOAT(SUM(archive_copy_mb))/1024 as DEC(8,0)) as ARCHIVE_COPY_GB, CAST(FLOAT(SUM(total_mb))/1024 as DEC(8,0)) as TOTAL_GB from auditocc" # Kliensek darabszama platformonkent SQL8="SELECT platform_name,COUNT(*) as COUNT FROM nodes where locked='NO' GROUP BY platform_name" # Storage poolok devclass-sal, library-vel, merettel SQL9="SELECT substr(o.stgpool_name,1,25) as STGPOOL_NAME,substr(case when s.devclass='DISK' then s.devclass else s.devclass || ' (' || d.devtype || ')' end,1,25) as DEVCLASS ,substr(d.library_name,1,20) as LIBRARY_NAME,CAST(FLOAT(SUM(o.logical_mb))/1024/1024 AS DEC(6,2)) as TB FROM stgpools s, occupancy o, devclasses d where s.stgpool_name=o.stgpool_name and s.devclass=d.devclass_name GROUP BY o.stgpool_name,s.devclass,d.devtype,d.library_name ORDER BY o.stgpool_name" # Inaktiv node-ok SQL10="select substr(node_name,1,30) as node, (select domain_name from nodes no where no.node_name=oc.node_name),(select (days(current_timestamp)-days(lastacc_time)) as LAST_ACCESS from nodes no where no.node_name=oc.node_name), sum(REPORTING_MB)/1024 as GB from occupancy oc where (select (days(current_timestamp)-days(lastacc_time)) as LAST_ACCESS from nodes no where no.node_name=oc.node_name)>$INAKTIV_NODE_NAPSZAM GROUP BY oc.node_name order by last_access" SQL11="select no.domain_name, count(no.node_name) as inactive_nodes,(select count(node_name) as ALL_NODES from nodes no2 where no2.domain_name=no.domain_name) from nodes no where (days(current_timestamp)-days(no.lastacc_time)) \> $INAKTIV_NODE_NAPSZAM group by no.domain_name" # Direkt tape mountok SQL12="select substr(message,instr(message,' ',1,6)+1,instr(message,' ',1,7)-instr(message,' ',1,6)-1) as NODE, count(*) as TAPE_MOUNTS from actlog where msgno in (0839,0406) and session in (select session from actlog where msgno=0511 and substr(message,instr(message,' ',1,6)+1,1)!='/') and current_timestamp < date_time + 7 days group by substr(message,instr(message,' ',1,6)+1,instr(message,' ',1,7)-instr(message,' ',1,6)-1)" if [[ $1 != "-t" && $1 != "-o" ]]; then echo "Hasznalat:" echo "$0 [-t] [-o]" echo echo " -t : TSM-es lekerdezesek futtatasa (allitsd be a szkript fejleceben a TSM-es hozzaferesi adatokat)" echo " -o : OS lekerdezesek futtatasa" exit 1 fi while [ "$1" ]; do if [ "$1" = "-t" ]; then VER=$((`dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSERVER q opt | sed -n -e 's/Server Version \([0-9]\),.*/\1/p' -e 's/\t\s//g'`)) if [ "$VER" = "0" ]; then echo "A TSM szerverre nem tudtam bejelentkezni. Ellenorizd a konfigot a szkript fejleceben!" exit 1 fi echo "TSM-es lekerdezeseket futtatok..." dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q system" > ${OUTPUT_DIR}/${HOST}_q_system.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q server" > ${OUTPUT_DIR}/${HOST}_q_server.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q subscription" > ${OUTPUT_DIR}/${HOST}_q_subscription.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q log" > ${OUTPUT_DIR}/${HOST}_q_log.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q dbs" > ${OUTPUT_DIR}/${HOST}_q_dbs.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q drive" > ${OUTPUT_DIR}/${HOST}_q_drive.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q drive f=d" > ${OUTPUT_DIR}/${HOST}_q_drive_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q fi" > ${OUTPUT_DIR}/${HOST}_q_fi.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q fi f=d" > ${OUTPUT_DIR}/${HOST}_q_fi_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q path" > ${OUTPUT_DIR}/${HOST}_q_path.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q path f=d" > ${OUTPUT_DIR}/${HOST}_q_path_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q auditocc" > ${OUTPUT_DIR}/${HOST}_q_auditocc.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q occ" > ${OUTPUT_DIR}/${HOST}_q_occ.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS -commadel "q occ" > ${OUTPUT_DIR}/${HOST}_q_occ_commadel.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q stg" > ${OUTPUT_DIR}/${HOST}_q_stg.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q stg f=d" > ${OUTPUT_DIR}/${HOST}_q_stg_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q stgpooldir f=d" > ${OUTPUT_DIR}/${HOST}_q_stgpooldir_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q sch" > ${OUTPUT_DIR}/${HOST}_q_sch.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q sch f=d" > ${OUTPUT_DIR}/${HOST}_q_sch_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q sch t=a" > ${OUTPUT_DIR}/${HOST}_q_sch_a.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q sch t=a f=d" > ${OUTPUT_DIR}/${HOST}_q_sch_t_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q scr f=l" > ${OUTPUT_DIR}/${HOST}_q_scr_fl.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q co t=b f=d" > ${OUTPUT_DIR}/${HOST}_q_co_b_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q co t=a f=d" > ${OUTPUT_DIR}/${HOST}_q_co_a_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q n" > ${OUTPUT_DIR}/${HOST}_q_node.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q n f=d" > ${OUTPUT_DIR}/${HOST}_q_node_fd.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS "q replnode *" > ${OUTPUT_DIR}/${HOST}_q_replnode_fd.out echo "TSM-es SELECT-eket futtatok..." dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL1 > ${OUTPUT_DIR}/${HOST}_Elmult_7_nap_aktivitasa.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL2 > ${OUTPUT_DIR}/${HOST}_Elmult_7_nap_adatmozgasai.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL3 > ${OUTPUT_DIR}/${HOST}_Node-ok_meretei.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL4 > ${OUTPUT_DIR}/${HOST}_DB_mentesek_futasi_idoi.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL5 > ${OUTPUT_DIR}/${HOST}_Expire_Invetory-k_futasi_idoi.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL6 > ${OUTPUT_DIR}/${HOST}_Storage_poolok_helyfoglalasa.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL7 > ${OUTPUT_DIR}/${HOST}_Teljes_szerveren_tarolt_adatmennyisegek.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL8 > ${OUTPUT_DIR}/${HOST}_Kliensek_szama_platformonkent.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL9 > ${OUTPUT_DIR}/${HOST}_Storage_poolok_parameterei.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL10 > ${OUTPUT_DIR}/${HOST}_Inaktiv_node-ok_listaja_merettel.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL11 > ${OUTPUT_DIR}/${HOST}_Inaktiv_node-ok_szama.out dsmadmc -id=$TSMUSER -pa=$TSMPASS $DSMADMCOPTS $SQL12 > ${OUTPUT_DIR}/${HOST}_Direkt_tape_mountok_szama.out fi if [ "$1" = "-o" ]; then echo "OS oldali lekerdezeseket futtatok..." if [ $(uname -s) = 'AIX' ]; then prtconf > ${OUTPUT_DIR}/${HOST}_prtconf.out ifconfig -a > ${OUTPUT_DIR}/${HOST}_ifconfig-a.out netstat -nr > ${OUTPUT_DIR}/${HOST}_netstat-nr.out lsdev -Cc disk > ${OUTPUT_DIR}/${HOST}_lsdev_disk.out lsdev -Cc tape > ${OUTPUT_DIR}/${HOST}_lsdev_tape.out lsdev -Cc adapter > ${OUTPUT_DIR}/${HOST}_lsdev_adapter.out lscfg > ${OUTPUT_DIR}/${HOST}_lscfg.out lsconf > ${OUTPUT_DIR}/${HOST}_lsconf.out lslpp -l > ${OUTPUT_DIR}/${HOST}_lslpp.out lsvg > ${OUTPUT_DIR}/${HOST}_lsvg.out lsvg | xargs lsvg > ${OUTPUT_DIR}/${HOST}_lsvg-all.out lsvg | xargs lsvg -l > ${OUTPUT_DIR}/${HOST}_lsvg-l.out lsvg | xargs lsvg -p > ${OUTPUT_DIR}/${HOST}_lsvg-p.out lsps -s > ${OUTPUT_DIR}/${HOST}_lsps.out oslevel -s > ${OUTPUT_DIR}/${HOST}_oslevel.out df -g > ${OUTPUT_DIR}/${HOST}_df.out fi if [ $(uname -s) = 'Linux' ]; then uname -a > ${OUTPUT_DIR}/${HOST}_uname-a.out cp /etc/udev/rules.d/99-lin_tape.rules > ${OUTPUT_DIR}/${HOST}_udev.out cat /proc/meminfo > ${OUTPUT_DIR}/${HOST}_meminfo.out cat /proc/cpuinfo > ${OUTPUT_DIR}/${HOST}_cpuinfo.out cat /proc/version > ${OUTPUT_DIR}/${HOST}_version.out ifconfig -a > ${OUTPUT_DIR}/${HOST}_ifconfig-a.out netstat -nr > ${OUTPUT_DIR}/${HOST}_netstat-nr.out lspci -vvknnqq > ${OUTPUT_DIR}/${HOST}_lspci.out lvs > ${OUTPUT_DIR}/${HOST}_lvs.out pvs > ${OUTPUT_DIR}/${HOST}_pvs.out vgs > ${OUTPUT_DIR}/${HOST}_vgs.out cat /proc/scsi/IBMtape > ${OUTPUT_DIR}/${HOST}_IBMtape.out cat /proc/scsi/IBMchanger > ${OUTPUT_DIR}/${HOST}_IBMchanger.out df -h > ${OUTPUT_DIR}/${HOST}_df.out fi fi shift done echo "Elkeszitem a $OUTPUT_DIR/${HOST}_tsm_collect_data.tar.gz fajt..." cd $OUTPUT_DIR tar -cvf - ${HOST}_*.out | gzip > $OUTPUT_DIR/${HOST}_tsm_collect_data.tar.gz #rm -f $OUTPUT_DIR/$HOST_*.out