предисловие
В условиях «моли Бога, чтобы сервер не упал» и «убей программистов, чтобы принести жертву небу», программисты дрожат каждый день, и они дрожат от страха, когда им звонят и смс. безопасности, мы можем вовремя выявить проблему работы сервера, это не просто вопрос эксплуатации и обслуживания. Сегодня я подытожу общие показатели мониторинга серверов, надеюсь, что все разработчики запустят скрипт для обеспечения собственной безопасности.
Статья часто сканируется, а исходный адрес не указан. Мое обновление и исправление ошибок здесь синхронизировать нельзя. Вот исходный адрес: http://www.cnblogs.com/zhenbianshu/p/7683496.html
Получить информацию о сервере
Когда необходимо контролировать несколько машин одновременно, на каждой машине должна быть запущена программа мониторинга.Сначала нам нужно получить информацию о сервере, чтобы отличить машину.При возникновении проблемы мы также можем оценить ее серьезность. .
получить IP
Получите IP-адрес интрасети:
Получите всю информацию о сети с помощью команды ifconfig и исключите информацию о локальном хосте и ipv6.
/sbin/ifconfig | grep inet | grep -v '127.0.0.1' | grep -v inet6 | awk '{print $2}' | tr -d "addr:"
Примечание здесь, чтобы использоватьifconfig
Абсолютный путь, потому что, если скрипт мониторинга запускается в crontab, он не будет содержать информацию об окружающей среде при выполнении.
Получить внешний IP:
Мы можем повторить IP-адрес внешней сети, запросив другие веб-сайты.Некоторые веб-сайты предоставляют эту услугу, напримерipecho.net/plain
Или сайт, который мне лень делать самому:alwayscoding.net
.
Команда выглядит следующим образомcurl alwayscoding.net
Получить информацию о системе
Рекомендуется получить системную информациюlsb_release -a
метод:
lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
скопировать код
Информация относительно богата, и требуемая часть строки может быть перехвачена;
CPU
Загрузка процессора — это основной показатель, который мы хотим отслеживать, а системная загрузка, о которой мы часто говорим, относится к нему.一段时间内CPU处理进程数占 CPU 能处理最大进程数的比例
, то есть максимальная загрузка процессора1.0
, в этом случае ЦП может просто завершить выполнение всех процессов, при превышении этого лимита система войдет в перегруженное состояние, и некоторым процессам потребуется дождаться окончания выполнения других процессов. Обычно мы думаем, что загрузка процессора0.6
Далее идет состояние здоровья.
Просмотр загрузки системы на терминале обычно выполняется с помощьюtop
команда, но она интерактивная, а данные все более и более сложные, что не способствует написанию скриптов мониторинга.Мы обычно используемuptime
через егоaverage load
поле для получения средней нагрузки за последние 1 минуту, 5 минут, 15 минут.
uptime
16:03:30 up 130 days, 23:33, 1 user, load average: 4.62, 4.97, 5.08
скопировать код
В это время средняя загрузка системы составляет около 5. Дело не в том, что система перегружена и ошибка не отображается, это связано с тем, что при рассмотрении нагрузки также учитывается количество ядер ЦП. процессов, которые многоядерный ЦП может обрабатывать одновременно, пропорциональна количеству ядер.Нагрузка равна не 1, а ее количеству N ядер ЦП.
Мы используемnproc
Вы можете проверить количество ядер ЦП в системе.Количество ядер на машине, которую я использую, равно 16, поэтому максимальная нагрузка составляет 16, средняя нагрузка составляет 5/16 = 0,32, а ЦП исправен.
ОЗУ
Память — еще один ключевой показатель, который мы хотим отслеживать.Если использование памяти слишком велико, это, несомненно, приведет к тому, что процесс не сможет выделить память для нормального выполнения.
Мы также можем просмотреть использование памяти с помощью команды top, но она чаще используется для мониторинга.free
Заказ:
free -m
total used free shared buffers cached
Mem: 32108 18262 13846 0 487 11544
-/+ buffers/cache: 6230 25878
Swap: 0 0 0
скопировать код
Давайте сначала посмотрим на строку памяти, всего 32108 МБ памяти, 18262 МБ было использовано, а остальные 13846, тогда коэффициент использования памяти составляет 18262/32108 * 100% = 56,88%. Итак, что означают следующие общие, буферные и кэшированные данные?
На самом деле, в Linux выделение памяти также является принципом лени, когда память выделяется процессу, Linux не будет очищать память сразу после выполнения процесса, а сохранит эту часть памяти в виде кеша. Нет необходимости перезагружать, если доступная память израсходована, эта часть кеша очищается и используется повторно. Посмотрите на это с другой стороныused 里的 buffers 和 cached 部分是随时可被重用
Да, это нельзя считать занятым. А общая часть — это часть процесса с общей памятью, которая будет использоваться как занятая часть, но обычно она используется меньше.Для связанного контента вы можете обратиться к справочной статье в конце статьи.
Реальные данные — это часть третьей строки, которая удаляет буферы и кеш, то есть реальное использование памяти6230/(6230+25878)*100% = 19.4%
.
Подкачка в четвертой строке используется для временного хранения буферов памяти и кешей.Хотя это может ускорить перезапуск процесса в обычных условиях, при малом объеме физической памяти это приведет к частому чтению и записи подкачки, что увеличивает IO-нагрузка сервера или нет, зависит от ситуации.
Интернет
Сеть также является очень важным показателем, когда Linux используется в качестве веб-сервера.Существует много связанных команд, но каждая имеет свои сильные стороны.Мы обычно отслеживаем следующие состояния:
Используйте netstat для просмотра прослушиваемых портов.
netstat -an | grep LISTEN | grep tcp | grep 80
Посмотрите, не отслеживает ли какой-либо процесс порт 80.
Мониторинг сетевых подключений с помощью ping
использоватьping
Команда может проверить, подключена ли сеть, использовать параметр -c для управления количеством запросов, использовать параметр -w для управления временем ожидания (единица измерения: миллисекунды) и, наконец, использовать параметр&&
символический短路
Особенности для управления полученным выходом:
ping -w 100 -c 1 weibo.com &>/dev/null && echo "connected"
жесткий диск
Жесткий диск не является особо важным показателем мониторинга, но сбой записи файлов при заполнении жесткого диска также повлияет на нормальное выполнение процесса.
Мы используемdf
команда для просмотра состояния использования диска, -h выводит в удобочитаемом формате:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 6.0G 32G 16% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/vdb1 296G 16G 265G 6% /data0
скопировать код
Мы можем использовать команду grep, чтобы найти узел монтирования, который мы хотим запросить, а затем использовать команду awk, чтобы получить поля результатов.
дополнительно использоватьdu [-h] /path/to/dir [--max-depth=n]
Вы можете просмотреть размер каталога, обратите внимание на использование--max-depth=n
Управляет глубиной обхода.
бег/другое
Другие состояния мониторинга в основном включают мониторинг журнала ошибок процесса, мониторинг количества запросов, мониторинг состояния существования процесса и т. д. Их можно использовать с некоторыми базовыми командами, такими какps
Ждать.
Для получения более подробной информации необходимо воспользоваться журналом процесса, использоватьgrep 、awk
и другие команды для анализа журнала для получения более подробной информации.
Суммировать
Наконец, результаты мониторинга статистики, вы можете использовать общий режим «push» и «pull», предполагается, что машина выталкивает результаты на одну статистику машины и сигналы тревоги. также можно использоватьrsync
Метод выбирается с каждого сервера, а способ оповещения, например корпоративный WeChat, SMS, электронная почта и т. д., можно настроить по мере необходимости.
Наконец, системный мониторинг — важная вещь, требующая постоянного внимания, желаю, чтобы у всех серверы никогда не падали.
Если у вас есть какие-либо вопросы по поводу этой статьи, вы можете оставить сообщение ниже, чтобы связаться с ним. Если вы считаете, что эта статья полезна для вас, вы можете нажать кнопку ниже.推荐
Поддержите меня, блог обновлен, добро пожаловать关注
.
Ссылаться на: