За да видите актуализирания курс DevOps (101DaysofDevOps)

Връзка за регистрация на курс: https://www.101daysofdevops.com/register/

Връзка към курса: https://www.101daysofdevops.com/courses/101-days-of-devops/

Връзка към YouTube: https://www.youtube.com/user/laprashant/videos

Добре дошли в Ден 65 от 100 дни на DevOps, Фокусът за днес е Bash Script to Monitor Service

Стъпка 1: Как да проверите дали услугата работи?

  • Има няколко начина, по които можем да го проверим
  • Първи подход netstat
# netstat -antulp|grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      19122/httpd


  • Вторият подход е командата ps
# ps aux|grep -v grep |grep -i httpd
root     19122  0.0  0.5 228280  5116 ?        Ss   Mar22   0:13 /usr/sbin/httpd -DFOREGROUND
apache   19123  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19124  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19125  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19126  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19127  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19128  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19130  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19898  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19899  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND
apache   19900  0.0  0.3 228416  3740 ?        S    Mar22   0:00 /usr/sbin/httpd -DFOREGROUND

Стъпка 2: След като проверихме дали услугата работи, съхранихме състоянието й в някаква променлива

SERVICESTATUS=`echo $?`

Всяка команда връща статус на изход (понякога наричан статус на връщане или код за изход). Успешна команда връща 0, докато неуспешна връща ненулева стойност, която обикновено може да се интерпретира като код за грешка.

Стъпка 3:Използвайте условен израз (if-else), за да определите дали услугата не работи, стартирайте я

if [ "$SERVICESTATUS" != 0 ]
then
systemctl start $SERVICENAME
echo "$SERVICENAME started"
else
echo "$SERVICENAME is already running"
fi
  • Ако изходният код е нещо друго освен нула, стартира услугата (това е системата Centos7, затова използвам systemctl) в противен случай просто ехо, услугата за съобщения вече се изпълнява

Изход

  • Ако услугата работи
# bash /tmp/httpd.sh
tcp6       0      0 :::80                   :::*                    LISTEN      19122/httpd
httpd is already running
  • В случай, че услугата е спряна
# bash /tmp/httpd.sh
httpd started

Друг начин за писане на същия скрипт

* Check the number of httpd process
# ps -ef | grep -v grep | grep httpd | wc -l
6
* If it greater then zero, then service is already running, else start the service
  • Сега това работи напълно добре, ако трябва да проверя една услуга, какъв би бил случаят, ако трябва да проверя куп услуги
* In this case we can define function(eg:servicecheck) and with the help of positional parameter we can pass service name to the function
  • Друг подход, който видях използван от много хора, е да уведомите администраторите по имейл, преди да стартирате услугата
echo "$servicename is not running" | mail -s "$servicename is down" [email protected]
  • Едва драскам повърхността и това е един от многото начини. ние можем да наблюдаваме услугата с помощта на shell скрипт, моля не се колебайте да споделите вашия скрипт или идеи как да подобрите този скрипт

Очаквам с нетърпение от вас, момчета, да се присъедините към това пътуване и да отделяте минимум час всеки ден през следващите 100 дни за работа с DevOps и да публикувате напредъка си, като използвате някой от носителите по-долу.

Справка