Назад | Перейти на главную страницу

Как получить следы scsi в реальном времени от Vscsistats?

Вот вещи, которые я уже знаю, используя vscsistat -t вариант Я могу получить трассировку команд для "VM / .vmdk" на ESxi.

Шаги по получению следов scsi:

  1. Начать сбор трасс, при успешном запуске будет сгенерирован log_channel (id)

    vscsiStats -s -t -w worldgroupid -i handleid
    
  2. Дамп трассировки в файл в двоичном формате

    logchannelloger channelname filename
    
  3. Получите удобочитаемый fromat из файла трассировки.

    vscsistats -e filename
    

С помощью этих шагов каждый раз, когда я запускаю команду vscsistats -e filename чтобы получить scsitrace в удобочитаемом формате из файла трассировки, он возвращает данные трассировки от начала до момента запуска команды.

Если я запустил команду через 10 минут, она снова вернет следы от начала до времени команды стрельбы.

Итак, вопрос, есть ли способ сбросить следы, когда они поступают в двоичный файл, непосредственно на стандартный вывод, например tail -f или blktrace -o - |blkparse -i - как на линуксе?

Это не так:

  VscsiStats -- This tool controls vscsi data collection for virtual machine disk
                disk I/O workload characterization. Users can start and stop online data
                data collection for particular VMs as well as print out online histogram data.
                Command traces can also be collected and printed.

  The following histogram related options are available:
     -h, --help will print the usage
     -l, --list will list the available virtual machines and their virtual disks
     -r, --reset will reset the stats
     -s, --start will start vscsiStats collection; exclusive of -x
     -x, --stop will stop vscsiStats collection; exclusive of -s
     -w <worldgroup id>, --worldgroupid specifies a worldID to use for this operation
     -i <handle id>, --handleid specifies a vscsi handleID to use for this operation
           requires the -w option
     -p <histoType>, --printhistos will print out the current histograms for the specified
            histogram type. May be used in conjunction with -w and -i.
            histoType must be one and only one of:
                 all, ioLength, seekDistance, outstandingIOs, latency, interarrival
     -c, --csv will use comma as delimiter in conjunction with -p

  The following command trace related options are available:
     -t, --tracecmds will start scsi cmd traces; in conjunction with -s
         Note:- the -t option consumes significant system resources so
                enabling it indefinitely is not advisable
              - try to limit the #virtual disk for which cmd tracing is enabled at any
                given time by using --worldgroupid and/or --handleid options.
              - trace contains NO customer sensitive data
                - only information recorded is:
                  - serialnumber, IO block size, number of scatter-gather elements
                  - command type, block number, timestamp
                - Therefore, actual data/payload of commands is not stored
              - If successfully started, log channel id(s) will be printed out.
                To store the command trace in a file for later processing, invoke:
                $ logchannellogger <log_channel_id> <binary_trace_file>
     -e <trace file name>, --traceprettyprint reads in a vscsi cmd trace from the given
        filename and sends a CSV formatted output to stdout; exclusive of all other options

  vscsiStats Usage:
         vscsiStats [options]

Что вы можете сделать, так это запустить watch -n 1 cat <file> чтобы обновить содержимое вашего файла в другой оболочке. Если вы не хотите запускать команды вручную, вы можете объединить их в пакет и добавить в cron.

Кстати, будьте осторожны, некоторые файлы в esxi сбрасываются при каждой перезагрузке.

Вот способ добавить скрипт в cron без сброса при каждом запуске:

  • редактировать файл /etc/rc.local.d/local.sh

      #add to crontab a task
      echo "01 00 1,15 * * root /vmfs/volumes/datastore1/script/yourscript.sh" >> /var/spool/cron/crontabs/root
      #stop crontab process
      kill $(cat /var/run/crond.pid)
      #start crontab process
      crond
    

не забудьте установить свой скрипт как исполняемый

chmod +x /vmfs/volumes/datastore1/script/yourscript.sh