Наблюдението на производителността на вашата MySQL база данни в реално време ви помага незабавно да идентифицирате проблеми и други фактори, които биха могли да причинят проблеми сега или в бъдеще. Това също е добър начин да определите кои компоненти на базата данни могат да бъдат подобрени или оптимизирани, за да повишите вашата ефективност и производителност. Това обикновено се прави чрез софтуер и инструменти за наблюдение или вградени в софтуера за управление на базата данни, или инсталирани от доставчици на трети страни.
Prometheus е софтуерно приложение с отворен код, използвано за наблюдение и предупреждение на събития. Може да се използва заедно с инструмент за визуализация като Grafana за лесно създаване и редактиране на табла за управление, запитване, визуализиране, предупреждение и разбиране на вашите показатели. ScaleGrid предоставя пълен администраторски достъп до вашите MySQL внедрявания – това улеснява интегрирането на съществуващата MySQL екосистема от инструменти с вашите ScaleGrid MySQL внедрявания в AWS или Azure. Prometheus работи добре за записване на всякакви чисто числови времеви серии, а също така предлага поддръжка за многоизмерно събиране на данни и запитване. Grafana може да се използва с него за изграждане на табла за управление, които помагат да се визуализират тези данни по начин, който е лесен за интерпретиране и използване. Тези инструменти ще предоставят допълнителна представа за вашите показатели, модели на използване и набори от данни заедно с мониторинга ви в ScaleGrid MySQL, анализа на заявките и сигналите. В тази публикация в блога обсъждаме как можете да настроите и използвате Prometheus и Grafana с вашите ScaleGrid MySQL разгръщания за разширено наблюдение и предупреждение на база данни.
Как да настроите своя MySQL мониторинг
Нека преминем през стъпките, свързани с инсталирането и конфигурирането на сървъра Prometheus за съхраняване и показване на показателите, експортер (MySQL Exporter в този случай), който събира показателите и ги предава на сървъра Prometheus и Grafana за създаване на табла за управление. Инструментът MySQL Exporter може да бъде инсталиран локално на MySQL сървър или централно на сървъра Prometheus. В случая на използване по-долу ще обясним как да настроите и започнете да използвате Prometheus, MySQL Exporter и Grafana от централен хост, работещ на Ubuntu, за наблюдение на множество MySQL сървъри. Можете също да прегледате инструкции стъпка по стъпка в нашия помощен документ за Prometheus и Grafana за MySQL.
Блоковата диаграма по-долу показва настройката на MySQL разгръщане на главен-подчинен-кворум, което включва два възела, носещи данни (главен и подчинен) и един член с гласуване (кворум), използвайки MySQL Exporter, Prometheus хост и Grafana:
Инсталиране и конфигуриране на сървъра Prometheus
Prometheus е инструментът, който ще използваме, за да централизираме и съхраняваме вашите MySQL показатели. Той изстъргва показателите от един или няколко износители на редовни интервали и ги показва в потребителския си интерфейс. По-долу са стъпките за инсталиране и конфигуриране на Prometheus на централен хост на Ubuntu. За повече подробности можете да се обърнете към тази статия.
1. Създайте системна група и потребител на Prometheus
$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus
2. Създайте директория с данни за Prometheus
$sudo mkdir /var/lib/prometheus
3. Създайте конфигурационни директории за Prometheus
$for i в правила rules.d files_sd; направете sudo mkdir -p /etc/prometheus/${i}; готово
4. Изтеглете архива на Prometheus и извлечете файла
За да изтеглите най-новия двоичен архив за Prometheus:
$mkdir -p /tmp/prometheus &&cd /tmp/prometheus$curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \| grep browser_download_url \| grep linux-amd64 \| cut -d '"' -f 4 \| wget -qi -
За да извлечете файла:
$tar xvf prometheus*.tar.gz$cd prometheus*/
5. Преместете файловете на Prometheus на стандартни местоположения
Преместете двоичните файлове на Prometheus в /usr/local/bin:
$sudo mv prometheus promtool /usr/local/bin/
Преместете шаблона за конфигурация на Prometheus в директорията /etc:
$sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Преместете също конзолите и console_libraries в директорията /etc/prometheus:
$sudo mv consoles/ console_libraries/ /etc/prometheus/
6. Създайте/редактирайте конфигурационен файл на Prometheus
Конфигурациите на шаблона трябва да изглеждат подобно на по-долу:
$cat /etc/prometheus/prometheus.yml #моята глобална конфигурация глобална:scrape_interval:15s # Задайте интервала на изстъргване на всеки 15 секунди. По подразбиране е на всеки 1 минута. evaluation_interval:15s # Оценявайте правилата на всеки 15 секунди. По подразбиране е на всеки 1 минута. #scrape_timeout е настроен на глобалната стойност по подразбиране (10s). #Предупреждение за конфигурация на Alertmanager:alertmanagers:- static_configs:- targets:#- alertmanager:9093 #Заредете правила веднъж и периодично ги оценявайте според глобалния 'evaluation_interval'. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Конфигурация за изстъргване, съдържаща точно една крайна точка за изстъргване:#Тук е самият Прометей. scrape_configs:#Името на заданието се добавя като етикет `job=` към всички времеви серии, изписани от тази конфигурация. - job_name:'prometheus' #metrics_path по подразбиране е '/metrics' #scheme по подразбиране е 'http'. static_configs:- цели:['localhost:9090']
7. Създайте файл Prometheus systemd Service Unit
$sudo vim /etc/systemd/system/prometheus.service
Добавете следното съдържание:
[Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=1" User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb. път=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0 :9090 \ --web.external-url=SyslogIdentifier=prometheus Restart=винаги [Инсталиране] WantedBy=multi-user.target
Не забравяйте да редактирате реда:Environment=”GOMAXPROCS=1 като замените 1 с броя на vcpus на вашия сървър.
8. Промяна на разрешенията за директория
Променете собствеността на тези директории на потребител и група на Prometheus:
$for i в правила rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done$for i в правила rules.d files_sd; направете sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/
9. Презаредете systemd Daemon и стартирайте услугата
$sudo systemctl daemon-reload$sudo systemctl стартиране prometheus$sudo systemctl активиране на prometheus
Проверете състоянието с помощта на systemctl status prometheus команда:
10. Конфигурирайте защитна стена за отваряне на порт 9090
$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload
След като настройката приключи, можете да получите достъп до потребителския интерфейс на Prometheus, като влезете в http://
Как да наблюдавате внедряванията на #MySQL с Prometheus &Grafana в ScaleGridClick To Tweet
Инсталиране и конфигуриране на MySQL Prometheus Exporter
Prometheus изисква експортер за събиране на показатели на MySQL сървъра. Този експортер може да се изпълнява централно на сървъра на Prometheus или на сървъра на базата данни. За допълнително четене вижте документацията на Prometheus.
Следвайте стъпките по-долу, за да инсталирате и настроите MySQL Prometheus Exporter на централния хост на Prometheus. За повече подробности вижте тази статия.
1. Изтеглете и инсталирайте Prometheus MySQL Exporter
$curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -$tar xvf mysqld_exporter*.tar.gz$sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/$sudo chmod +x /usr/ local/bin/mysqld_exporter
2. Създайте потребител на база данни на Prometheus Exporter за достъп до базата данни, изтриване на показатели и предоставяне на безвъзмездни средства
СЪЗДАДЕТЕ ПОТРЕБИТЕЛ 'mysqld_exporter'@'' ИДЕНТИФИЦИРАН ОТ 'StrongPassword' С MAX_USER_CONNECTIONS 2;ПРЕДОСТАВАЙТЕ ПРОЦЕС, РЕПЛИКАЦИОНЕН КЛИЕНТ, ИЗБЕРЕТЕ НА *.* КЪМ 'mysqld_exporter';usGLUES С MAX_USER_CONNECTIONS 2 се използва за задаване на максимален лимит за връзка за потребителя, за да се избегне претоварване на сървъра с мониторинг на скрейпове при голямо натоварване.
3. Конфигурирайте идентификационните данни на базата данни
Редактирайте конфигурационния файл на експортера на централния хост:
$sudo vim /etc/.mysqld_exporter.cnfДобавете потребителското име и паролата на създадения потребител и ScaleGrid MySQL сървъра, който искате да наблюдавате:
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.comЗадаване на разрешения за собственост:
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Създайте systemd Unit File
Създайте нов служебен файл на централния хост:
$sudo vim /etc/systemd/system/mysql_exporter.serviceДобавете следното съдържание:
[Unit] Описание=Prometheus MySQL Exporter След=network.target Потребител=prometheus Group=prometheus [Услуга] Тип=прост рестарт=винаги ExecStart=/usr/local/bin/mysqld_exporter \ --config.my-cnf / etc/.mysqld_exporter.cnf \ --collect.global_status \ --collect.info_schema.innodb_metrics \ --collect.auto_increment.columns \ --collect.info_schema.processlist \ --collect.binlog_size \ --collect.table. \ --collect.global_variables \ --collect.info_schema.query_response_time \ --collect.info_schema.userstats \ --collect.info_schema.tables \ --collect.perf_schema.tablelocks \ --collect.perf_schema.file_events \ .perf_schema.eventswaits \ --collect.perf_schema.indexiowaits \ --collect.perf_schema.tableiowaits \ --collect.slave_status \ --web.listen-address=0.0.0.0:9104 [Инсталиране] WantedBy=multi-user.web.listen-address=0.0.0.0:9104 указва, че сървърът слуша на порт 9104. Ако сървърът ви има публична и частна мрежа, може да се наложи да замените 0.0.0.0:9104 с частен IP, например – 192.168.4.5:9104.
Когато сте готови, презаредете systemd и стартирайте услугата mysql_exporter:
$sudo systemctl daemon-reload$sudo systemctl активиране на mysql_exporter$sudo systemctl стартиране на mysql_exporter5. Конфигурирайте MySQL крайната точка да бъде изпипана от Prometheus
Направете промени както по-долу във файла prometheus.yml:
scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:alias:db1Забележка:Ако експортерът не работи на същия хост като Prometheus, посочете IP адреса на сървъра вместо localhost. 9104 се отнася до порта, който Prometheus слуша, както е посочено в предишната стъпка.
Наблюдение на множество MySQL хостове от централен хост Prometheus
Много MySQL сървъра могат да бъдат наблюдавани от централен сървър. Това може да се постигне чрез отделна услуга за експортиране за всеки сървър. Уверете се, че сте създали файлове .mysqld_exporter.cnf и mysql_exporter.service (с уникални номера на портове, присвоени на флага –web.listen-address) за всяка услуга, както е посочено в стъпки 3 и 4 по-горе. Добавете цели към файла prometheus.yml, както е посочено в стъпка 5 по-горе. Имената на работните места трябва да са уникални за всяка цел. Например:
scrape_configs:- job_name:mysql_server1static_configs:- targets:['localhost:9104']labels:псевдоним:db1- job_name:mysql_server2static_configs:- targets:['localhost:9105-alis job_name_moybs3:ascl_name_db1] - targets:['localhost:9106']labels:alias:db3Забележка:Prometheus Server трябва да може да достига целите през мрежата. Уверете се, че конфигурациите на вашата мрежа/защитна стена са съответно променени.
Инсталиране на Grafana и създаване на табла за управление
Grafana използва Prometheus като източник на данни, което ви позволява да създавате табла за управление, за да визуализирате по-добре и да разберете вашите показатели. Той предоставя чудесен начин да получите представа за данните от времевите ви редове.
Следвайте стъпките по-долу, за да инсталирате Grafana на вашия централен хост на Prometheus.
1. Изтеглете най-новата версия на Grafana
Отидете на страницата за изтегляне на Grafana, за да изтеглите най-новата версия.
$wget$sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana_ _amd64.deb 2. Изтеглете APT хранилище и инсталирайте Grafana
Командата add-apt-repository не е приложение по подразбиране в Debian 9 и изисква:
$apt-get install -y software-properties-commonИнсталирайте хранилището за стабилни версии:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"Има отделно хранилище, ако искате бета версии:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"Използвайте горния ред, дори ако сте на Ubuntu или друга версия на Debian. След това добавете нашия gpg ключ. Това ви позволява да инсталирате подписани пакети:
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -Актуализирайте вашите Apt хранилища и инсталирайте Grafana:
$sudo apt-get update$sudo apt-get install grafana3. Стартирайте услугата
$systemctl daemon-reload$systemctl стартиране на grafana-server$systemctl status grafana-serverАктивирайте услугата systemd, така че Grafana да стартира при стартиране:
$sudo systemctl активира grafana-server.serviceЗа да стартирате Grafana, отворете браузъра си и отидете на http://
:3000/ . 3000 е http портът, който Grafana слуша по подразбиране.4. Добавяне на източник на данни
Когато е инсталирано, влезте в таблото за управление на администратора и отворете Конфигурация> Източници на данни. Щракнете върху Добавяне на източник на данни, изберете Prometheus под Бази данни от времеви редове и попълнете полетата Име и URL.
Име:URL адрес на Prometheus-1:http://localhost:9090
Забележка:Ако сървърът на Prometheus не работи на същия хост като Grafana, посочете IP адреса на сървъра вместо localhost.
Сега сте готови да създавате и персонализирате табла за мониторинг на MySQL. Можете да създадете ново табло за управление, като щракнете върху връзката от дясната страна на инструмента за избор на табло. След като таблото за управление е създадено, можете да добавите панели, като изберете показателите, които да се показват, да поставите звезда на таблото, да го запазите и споделите. За подробни инструкции можете да се обърнете към документацията „Първи стъпки“ на Grafana.
Ето пример за табло за управление на Grafana създадено за внедряване на MySQL в ScaleGrid:
Гореното табло за управление на Grafana показва MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Hourly и MySQL Table Locks метрики, визуализирани в диаграмите, а таблото за управление на Grafana по-долу показва MySQL Top Броячи на команди и MySQL Топ броячи на команди на час.
Винаги се стремим да направим живота на нашите потребители по-лесен, така че ни уведомете за всички други инструменти, които искате да свържете с внедряванията на ScaleGrid чрез нашите коментари или чрез Twitter на @scalegridio.