За да видите актуализирания курс 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 и да публикувате напредъка си, като използвате някой от носителите по-долу.
- Twitter: @100daysofdevops ИЛИ @lakhera2015
- Facebook: https://www.facebook.com/groups/795382630808645/
- Медиум: https://medium.com/@devopslearning
- Slack: https://devops-myworld.slack.com/messages/CF41EFG49/
- Връзка към GitHub: https://github.com/100daysofdevops
Справка