?

Log in

No account? Create an account

admin_d


Заметки сисадмина


Deploying IBM Tivoli Monitoring Agents on AIX
admin_d

What we have

IBM Tivoli Monitoring 6.2.2, TEMS/TEPS share same Windows Server 2003.

A bunch of IBM Power System servers: a dozen of S822, pair of E870, etc.

VIOSes, LPARs running on them, and HMC operating somewhere.

What we need

To configure preinstalled VIOS agents: CEC Base (pk), and VIOS Premium (va).

To deploy ITM Systemp Agents to LPARs: UNIX OS (ux), AIX Premium (px), and HMC Base (ph).

1. Download the agents’ distribution set

It is called ITM_AGT_SYS_P_6.2.2_IF3_AIX_EN.tar.gz.

While it is pouring onto TEMS disk, we can proceed.

2. Check settings of HMC

Use your browser to open Hardware Management Console Workplace at https://<your HMC server>.

Click ‘HMC Management’ on left pane, in Operations section on right pane, choose Change Performance Monitoring Settings. Turn on Collection switch against servers of interest, or just push All On button, and press OK.

In Administration section on right pane, choose Remote Command Execution. Make sure it has ‘Enable remote command execution using the ssh facility’ switched on.

3. Unpack the distribution set

It contains three folders, as follows: ITM_Systemp_Agents, ITM_Systemp_Application_Support, and REPORTS. Copy them, if not yet, to TEMS.

4. Install application support

Run ITM_Systemp_Application_Support\WINDOWS\setup.exe, provided your TEMS runs Windows. Make sure all components are checked (if TEMS and TEPS share same server, otherwise install the components to appropriate servers).

5. Configure and start VIOS’ agents

VIOSes have ITM agents preinstalled: VIOS Premium (va), and CEC Base (pk). To configure and start them on all VIOSes use the following script.

#!/bin/bash

 

TEMS="TEMS Server name or IP"

HMC="HMC Server name or IP"

VIOS_LOGIN=padmin

HMC_LOGIN=hscroot

OUT=keys.out

 

> $OUT

while read vios cec ; do

  echo $vios $cec

  ssh -n $VIOS_LOGIN@$vios \

"ioscli stopsvc ITM_premium ;\

 ioscli stopsvc ITM_cec ;\

 ioscli cfgsvc ITM_premium -attr RESTART_ON_REBOOT=TRUE HOSTNAME=$TEMS MANAGING_SYSTEM=$HMC ;\

 ioscli cfgsvc ITM_cec -attr RESTART_ON_REBOOT=TRUE HOSTNAME=$TEMS MANAGING_SYSTEM=$HMC CEC=$cec ;\

 ioscli cfgsvc ITM_cec -key ;\

 ioscli startsvc ITM_premium ;\

 ioscli startsvc ITM_cec" | tee -a $OUT

done < vios.lst

 

grep ssh-rsa $OUT | \

while read v1 v2 v3 ; do

  mk="$mk mkauthkeys -a \"$v1 $v2 $v3\" ; "

done

 

ssh $HMC_LOGIN@$HMC "$mk"

The script reads vios.lst file which is implied to have the following format:

<IP or hostname of VIOS> <servername, as listed by `vtmenu` command at HMC>

It doesn’t matter where to run this script.

In a few minutes you must see VIOS nodes under UNIX Systems folder in TEP, each with CEC Base, and VIOS Premium agents.

6. Populate TEMS depository with agent ‘bundles’

Log on to the TEMS:

TEMS> tacmd login -s <TEMS Server> -u sysadmin -p "<password>"

Add agents to the local depot:

TEMS> tacmd addBundles -i <path to>\ITM_Systemp_Agents\unix -t px jr ph

Check which agents the deployment depot contains:

TEMS> tacmd viewDepot

If you cannot spot ‘Monitoring Agent for UNIX OS’ in the list you got, you have to add it to the depot too. Download and unpack ITM OS agents, then add UNIX OS agent to the depot:

TEMS> tacmd addBundles -i <path to>\unix -t ux -p aix523 aix526

7. Deploy the agents to target LPARs

Create AIX_Deploy.csv file for deploy group having the following format:

<LPAR hostname or IP>,DEPLOY,,

Create the deploy group:

TEMS> tacmd createGroup -g AIX_Deploy -t DEPLOY

TEMS> tacmd addGroupMember -g AIX_Deploy -x AIX_Deploy.csv

Create AIX_Bundle.csv file for bundle group with the following content:

Unix_OS,BUNDLE,-y ux,KDYRXA.RXAprotocol=ssh KDYRXA.RXAport=22

AIX_Premium,BUNDLE,-y px,

Create the bundle group:

TEMS> tacmd createGroup -g AIX_Bundle -t BUNDLE

TEMS> tacmd addGroupMember -g AIX_Bundle -x AIX_Bundle.csv

Run the deployment process, assuming all the nodes share the same password:

TEMS> tacmd createNode -g AIX_Deploy -b AIX_Bundle -u root -w <password>

8. Install and configure HMC Base Agent

Choose AIX system where to install the HMC Base Agent. Spot the desired system in the following list:

TEMS> tacmd listSystems -t ux

Substitute the name above into the following command:

TEMS> tacmd addSystem -n <AIX system>:kux -t ph ^

 -p INSTANCE=<agent instance, maybe HMC server name, up to 8 characters> ^

 "HMC Information".HMC_HOSTNAME=<name or IP> ^

 "HMC Information".HMC_USERNAME=hscroot

Check that the installation succeeded:

TEMS> tacmd getDeployStatus

Login to the system with newly installed HMC Base Agent and run the following script by root:

# /opt/IBM/ITM/aix526/ph/bin/setup_hmc_key.pl


Превращение URL-encoded в UTF-8
admin_d
Символы, выходящие за рамки ASCII, nginx пишет в журнал в кодировке URL-encoded. Чтобы с комфортом читать access.log, нужно предварительно преобразовать текст.

#!/usr/bin/perl
# urldec |-
# URL-encoded DECode

push @ARGV, '-' unless scalar(@ARGV);
foreach $f (@ARGV) {
  if ($f eq '-') {
    open(IN,"/dev/stdin");
  } elsif (-r $f) {
    open(IN, $f);
  } else {
    warn "Cannot open $f\n";
    next;
  }
  while () {
    s/%([0-9A-F][0-9A-F])/pack("H2",$1)/egi;
    print $_;
  }
  close(IN);
}
Tags: , , ,

Как прикрутить phpmyadmin к nginx
admin_d
phpMyAdmin-2.11.11.3
nginx-1.8.0
CentOS

phpmyadmin располагается в /usr/share/phpMyAdmin. Можно сделать ссылку из root и на этом настройку закончить (при условии, что php уже настроен), но мы не ищем лёгких путей. При настройке помогла возможность добавлять в ответ заголовок независимо от кода отклика, появившаяся в nginx 1.7.5: add_header name value always.

В итоге конфигурация выглядит так:

location = /phpmyadmin {
       rewrite ^ /phpmyadmin/ redirect;
}
location /phpmyadmin/ {
       alias /usr/share/phpMyAdmin/;
       index index.php;
}
location ~ /phpmyadmin/.+\.php$ {
       alias /usr/share/phpMyAdmin/;
       if ($fastcgi_script_name ~ "/([^/]+\.php)$") {
              set $basename $1;
       }
       fastcgi_pass unix:/var/run/php-fcgi.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$basename;
       include fastcgi_params;
}
location ~ \.php$ {
       fastcgi_pass unix:/var/run/php-fcgi.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
}

Важно поместить location ~ /phpmyadmin/.+\.php$ перед location ~ \.php$, т.к. nginx проверяет локации с регулярными выражениями в порядке их перечисления, и если поменять их местами, то запрос к /phpmyadmin/ даст ответ: "No input file specified" с кодом 404.

Запуск репликации после аварии ведомого сервера MySQL
admin_d
Ведомый сервер (slave), случается, выпадает в kernel panic. В таком случае позиция MASTER_LOG_POS, сохранившаяся в master.info, может сильно отставать от фактической позиции.
Если включён автостарт репликации – а по умолчанию так и есть, – то, пока ведомый не нагонит ведущего с этой отставшей позиции, репликацию придётся многократно перезапускать из-за дублирования ключей при вставке. Чтобы избежать этого

  1. надо заранее отключить автостарт репликации (skip-slave-start)

  2. ведомый MySQL пишет при запуске позицию, на которой он остановился (почему он не использует её при автостарте репликации, вопрос):

InnoDB: In a MySQL replication slave the last master binlog file
InnoDB: position 0 527285897, file name mysql-bin.003833

  1. проверить на ведущем с помощью mysqlbinlog, какие INSERT_ID предшествуют и следуют за этой позицией, убедиться, что первые на ведомом есть, а последних нет:

# mysqlbinlog mysql-bin.003833 | less

  1. перезапустить репликацию с этой позиции:

CHANGE MASTER TO MASTER_LOG_FILE="mysql-bin.003833",
MASTER_LOG_POS=527285897;
START SLAVE;

Установка CentOS 6 на IBM x3650 M4
admin_d
Дополнительная вводная: в сервере 2 диска, объединённые в RAID1 с помощью ServeRAID M5110e.

Дистрибутив CentOS 6.0 не имеет драйвера для этого RAID-контроллера (более поздние не проверял, мне нужен 6.0). Решение в том, чтобы скачать с сайта IBM вот этот файл: ibm_dd_sraidmr_6.506.00.00_rhel6_32-64.tgz. Он содержит ISO-образы дисков с драйвером под разные версии ядра.

Вставляем дистрибутив, запускаем установку. Когда появляется меню, нажимаем и дописываем в конец строки "dd":
boot dd
Так мы говорим, что для установки понадобится диск с драйвером.
В нужный момент подсовываем диск (для 6.0 понадобится dud-2.6.32-71-64.RHEL6.iso).
Далее установка продолжается обычным образом, и только в момент выбора ПО нужно оставить галочку возле "Driver Disk 0":
repos
Иначе после установки ждёт сюрприз – система не загрузится:

No root device found

Boot has failed, sleeping forever.

Расширение ФС на LVM
admin_d
CentOS 6 на ESXi.
Нужно увеличить ФС: корневую и /var, размещённые на LVM.
1.
Если виртуальный диск расширен при работающей ВМ, нужна перезагрузка ВМ либо
# echo 1 > /sys/block/sda/device/rescan
2.
Если партиция LVM - последняя в таблице разбивки, то можно её расширить с помощью fdisk, удалив её и создав на этом же месте с этим же номером новую, большего размера. Перезагрузка.
3.
# pvresize /dev/sda2

  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized


4.
# lvresize -r -L2g vg/lv_var

  Extending logical volume lv_var to 2.00 GiB
  Logical volume lv_var successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_simdb-lv_var is mounted on /var; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_simdb-lv_var to 524288 (4k) blocks.
The filesystem on /dev/mapper/vg_simdb-lv_var is now 524288 blocks long.


5.
Даже корневую ФС можно расширить на лету:
# lvresize -r -L3g vg/lv_root

  Extending logical volume lv_root to 3.00 GiB
  Logical volume lv_root successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_simdb-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_simdb-lv_root to 786432 (4k) blocks.
The filesystem on /dev/mapper/vg_simdb-lv_root is now 786432 blocks long.

Преобразовать время Tivoli в удобочитаемое
admin_d
Tivoli в журналах представляет время в 16-ричном виде. На самом деле, это просто секунды с начала Эпохи. Простое преобразование:

$ date -d @`printf "%d" 0x$hextime`


* Нужен date, который поддерживает -d.

Предотвращение повторного запуска скрипта Perl
admin_d
В самом начале выставляем флаг:

$FLAG_RUNNING = '/tmp/SCRIPT_RUNNING';
if ( -f $FLAG_RUNNING ) {
  die "Previous script is running!\n";
}
open(F,'>',$FLAG_RUNNING) or die "Cannot open $FLAG_RUNNING: $!";
print F "$$\n";
close(F);

В конце скрипта удаляем флаг:

unlink $FLAG_RUNNING;
Tags:

Макросы Excel-я для ФИО
admin_d
Выделяете область с фамилиями в винительном падеже и запускаете макрос. Останется только поправить редкие трудноформализуемые фамилии: Жук, Скрипка и т.п.
Sub Фамилия()

' Преобразует фамилию из винительного падежа в именительный

 For Each cell In Selection
  If (Len(cell.FormulaR1C1) = 0) Then
   GoTo last
  End If

  ending = Right(cell.FormulaR1C1, 3)
  flex = 0
  If (ending = "ову") Then
   newend = "ова"
   flex = 1
  ElseIf (ending = "еву") Then
   newend = "ева"
   flex = 1
  ElseIf (ending = "ину") Then
   newend = "ина"
   flex = 1
  ElseIf (ending = "ова") Then
   newend = "ов"
   flex = 1
  ElseIf (ending = "ева") Then
   newend = "ев"
   flex = 1
  ElseIf (ending = "ина") Then
   newend = "ин"
   flex = 1
  ElseIf (ending = "ича") Then
   newend = "ич"
   flex = 1
  ElseIf (ending = "юка") Then
   newend = "юк"
   flex = 1
  ElseIf (ending = "ого") Then
   end2 = Left(Right(cell.FormulaR1C1, 4), 1)
   If (end2 = "к") Then
    newend = "ий"
   Else
    newend = "ов"
   End If
   flex = 1
  ElseIf (ending = "его") Then
   newend = "ий"
   flex = 1
  Else
   ending = Right(cell.FormulaR1C1, 2)
   If (ending = "ую") Then
    newend = "ая"
    flex = 1
   End If
  End If
  If (flex = 1) Then
   cell.FormulaR1C1 = (Left(cell.FormulaR1C1, Len(cell.FormulaR1C1) - Len(ending)) & newend)
  End If
 last:
 Next
End Sub


Аналогично для имён:
Sub Имя()

' Преобразует имя из винительного падежа в именительный

 For Each cell In Selection
  If (Len(cell.FormulaR1C1) = 0) Then
   GoTo last
  End If

  ending = Right(cell.FormulaR1C1, 1)
  flex = 0
  If (ending = "у") Then
   newend = "а"
   flex = 1
  ElseIf (ending = "ю") Then
   newend = "я"
   flex = 1
  ElseIf (ending = "а") Then
   newend = ""
   flex = 1
  ElseIf (ending = "я") Then
   end2 = Left(Right(cell.FormulaR1C1, 2), 1)
   If (end2 = "а" Or end2 = "е" Or end2 = "и" Or end2 = "у") Then
    newend = "й"
   Else
    newend = "ь"
   End If
   flex = 1

  End If
  If (flex = 1) Then
   cell.FormulaR1C1 = (Left(cell.FormulaR1C1, Len(cell.FormulaR1C1) - 1) & newend)
  End If
last:
 Next
End Sub
Tags:

Тонкости настройки NIC bonding на CentOS 6
admin_d
Для начальной настройки я воспользовался инструкцией.
На первом сервере всё прошло гладко, только вместо insmod bond0 bonding я дал команду modprobe bonding.
На втором сервере неожиданно возникла проблема: во время service network restart вываливается сообщение:

ADDRCONF(NETDEV_UP): bond0: link is not ready

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

bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, otherwise bonding will not detect link failures! see bonding.txt for details.

Read more...Collapse )