Как установить и настроить grafana

Bonus : explore data using ad hoc filters

Real time data is interesting to see – but the real value comes when you are able to explore your data.

In this bonus section, we are not going to use the ‘Explore’ function (maybe in another article?), we are going to use ad hoc filters.

With Grafana, you can define variables associated to a graph. You have many different options for variables : you can for example define a variable for your data source that would allow to dynamically switch the datasource in a query.

In our case, we are going to use simple ad hoc filters to explore our data.

From there, simply click on ‘Variables’ in the left menu, then click on ‘New’.

Take a look at the top left corner of the dashboard.

Filters!

Now let’s say that you want the performance of a certain process in your system : let’s take Prometheus itself for example.

Simply navigate into the filters and see the dashboard updating accordingly.

Now you have a direct look at how Prometheus is behaving on your instance.

You could even go back in time and see how the process behaved, independently from its pid!

Учебное пособие по графане — интеграция с графаной Zabbix

Предположим, что у вас установлена работающая установка Grafana и Zabbix.

На консоли сервера Grafana используйте следующие команды, чтобы получить список всех плагинов Grafana.

Используйте следующую команду для установки плагина Grafana Zabbix.

После завершения установки плагина Grafana перезапустите сервис Grafana.

# grafana-cli plugins list-remote
# grafana-cli plugins install alexanderzobnin-zabbix-app
# service grafana-server restart

На панели инструментов Zabbix откройте меню Администрирование и выберите опцию Пользователи.

Нажмите на кнопку Создать пользователя.

Настройте новую учетную запись пользователя в качестве члена группы Zabbix Administrators.

Откройте вкладку «Разрешения» и выберите опцию Zabbix super Admin.

На панели инструментов Grafana откройте меню плагинов Grafana.

Включить плагин Grafana Zabbix.

На панели инструментов Grafana откройте меню источников данных Grafana.

Добавьте источник данных Zabbix.

На странице конфигурации источника данных Zabbix вам необходимо выполнить следующую настройку:

Введите правильный URL-адрес файла Zabbix api_jsonrpc.php.

В нашем примере мы ввели следующий URL:

http://34.220.49.29/zabbix/api_jsonrpc.php

Затем вам нужно выбрать версию Zabbix, к которой подключается Grafana, и ввести информацию для входа в Zabbix.

В нашем примере мы включили опцию Trends.

В нашем примере мы выбрали Zabbix версии 4.

В нашем примере мы ввели графическую учетную запись Zabbix и пароль kamisama123.

Нажмите кнопку Добавить, чтобы завершить настройку источника данных и проверить соединение Zabbix.

Start the server

This starts the process as the user, which was created during the package installation.

If you installed with the APT repository or package, then you can start the server using or . If you installed a binary file, then you need to execute the binary.

Start the server with systemd

To start the service and verify that the service has started:

Configure the Grafana server to start at boot:

Serving Grafana on a port < 1024

If you are using and want to start Grafana on a port that is less than 1024, then you must add a unit override.

  1. The following command creates an override file in your configured editor:

1 Add these additional settings to grant the capability. To read more about capabilities, see the manual page on capabilities.

To start the service and verify that the service has started:

Configure the Grafana server to start at boot:

Execute the binary

The binary .tar.gz needs the working directory to be the root install directory where the binary and the folder are located.

Start Grafana by running:

A quick word to conclude

From this tutorial, you now have a better understanding of what Prometheus and Grafana have to offer.

You know have a complete monitoring dashboard for one instance, but there is really a small step to make it scale and monitor an entire cluster of Unix instances.

DevOps monitoring is definitely an interesting subject – but it can turn into a nightmare if you do it wrong.

This is exactly why we write those articles and build those dashboards : to help you reach the maximum efficiency of what those tools have to offer.

We believe that great tech can be enhanced with useful showcases.

If you agree, join the growing list of DevOps who chose this path.

I made similar articles, so if you enjoyed this one, make sure to read the others :

  • Monitoring Windows services using Grafana, Telegraf and InfluxDB.
  • The Definitive Guide To InfluxDB in 2019

Until then, have fun, as always.

The General Idea

Lets say that you want to monitor a bunch of servers, and you want to keep track of multiple stats for each of them, and see in a glance the status of all of them.

This plugin will make it easier to do. You just add all the metrics you want to track, and choose how you want their values to be treated:

  1. Component severity marker — Set the threshold for each and you get an overview that will report to you if there is anything wrong with any of the metrics. This means that if all the metrics are in the OK state, the panel will be green. If even one of the metrics is in the WARNING state, it will be yellow, and red if any of them is CRITICAL.
  2. Component disable marker — Set the exact value that represents if the component is disabled, the panel will be grey.
  3. Display as text — show extra information about the component in the panel.

Severity and text values can be shown in 2 modes:

  1. Regular — under the panel title.
  2. Annotation — In the top left side of the panel.

Note: The disable markers are prioritized over the severity ones.

You can also repeat the panel on a template if you have multiple instances that you want to watch.

Основы мониторинга процессов Unix

Когда дело доходит до мониторинга процессов для систем Unix, у вас есть несколько вариантов.

Самым популярным, наверное, является «top».

Top предоставляет полный обзор показателей производительности вашей системы, таких как текущее использование ЦП , текущее использование памяти, а также показатели для отдельных процессов.

Эта команда широко используется системными администраторами и, вероятно, является первой командой, запускаемой при обнаружении узкого места производительности в системе (если вы, конечно, можете получить к нему доступ!)

Команда top уже хорошо читается, но есть команда, которая делает все еще более читаемым, чем эта: htop .

Htop предоставляет тот же набор функций (процессор, память, время безотказной работы …), что и top, но в красочной и приятной форме.

Htop также предоставляет датчики , отражающие текущее использование системы.

Основная причина — доступность системы : в случае перегрузки системы у вас может не быть физического или удаленного доступа к вашему экземпляру.

Благодаря внешнему мониторингу процесса вы можете анализировать причину сбоя, не обращаясь к машине.

Другая причина в том, что процессы создаются и уничтожаются все время , часто самим ядром.

В этом случае выполнение команды top не даст вам никакой информации, так как вам будет слишком поздно понять, кто вызывает проблемы с производительностью в вашей системе.

Вам придется покопаться в журналах ядра, чтобы увидеть, что было убито.

С помощью панели мониторинга вы можете просто вернуться в прошлое и увидеть, какой процесс вызвал проблему.

Теперь, когда вы знаете, почему мы хотим создать эту панель управления, давайте посмотрим на архитектуру, созданную для ее создания.

Установка Node Exporter

Свежую версию Node Exporter ищем на странице приложения. Скачайте его и извлеките из архива:

root@dedicated:~# wget https://github.com/prometheus/node_exporter
/releases/download/v1.0.0/node_exporter-1.0.0.linux-amd64.tar.gz
root@dedicated:~# tar xvfz node_exporter-*.*-amd64.tar.gz

 Перейдите в каталог и запустите сценарий:

root@dedicated:~# cd node_exporter-*.*-amd64
root@dedicated:~# ./node_exporter

Вы должны получить следующее сообщение. Не прерывайте его выполнение:

Откройте в браузере адрес https://ip_address:9100/metrics, или создайте новую консоль терминала, обратившись к данным с помощью curl. Результат должен быть примерно следующим:

Файлы с node-exporter предварительно скопированы в каталолг /etc/prometheus/node-exporter/. Проследите так же, чтобы на него были выставлены правильные права:

root@dedicated:~# chown -R prometheus:prometheus /etc/prometheus/node-exporter/

Cоздайте юнит со следующим содержимым:

root@dedicated:~# mcedit /etc/systemd/system/node-exporter.service


Description=Node Exporter
After=network.target
 

User=prometheus
Group=prometheus
Type=simple
ExecStart=/etc/prometheus/node-exporter/node_exporter
 

WantedBy=multi-user.target

Затем отредактируйте главный конфигурационный файл prometheus, добавив в него информацию о Node Exporter. При редактировании файлов *.yml табуляция не допустима, используйте четное количество пробелов:

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: 

Примечание: Два узла добавлены для примера, если вы хотите использовать только метрики node_exporter, достаточно указать один узел:

Примените настройки, активируйте и добавьте в автозагрузку node-exporter.service, перезапустите службу prometheus.service. Введите в адресной строке браузера https://ip_address:9090/targets

Если вы все сделали правильно, результат должен быть следующий:

Download and install

You can install Grafana using our official APT repository, by downloading a package, or by downloading a binary file.

Install from APT repository

If you install from the APT repository, then Grafana is automatically updated every time you run .

Grafana Version Package Repository
Grafana Enterprise grafana-enterprise
Grafana Enterprise (Beta) grafana-enterprise
Grafana OSS grafana
Grafana OSS (Beta) grafana

Add this repository for stable releases:

Add this repository if you want beta releases:

After you add the repository:

To install the latest OSS release:

Add this repository for stable releases:

Add this repository if you want beta releases:

After you add the repository:

  1. On the Grafana download page, select the Grafana version you want to install.
    • The most recent Grafana version is selected by default.
    • The Version field displays only finished releases. If you want to install a beta version, click Nightly Builds and then select a version.
  2. Select an Edition.
    • Enterprise — Recommended download. Functionally identical to the open source version, but includes features you can unlock with a license if you so choose.
    • Open Source — Functionally identical to the Enterprise version, but you will need to download the Enterprise version if you want Enterprise features.
  3. Depending on which system you are running, click Linux or ARM.
  4. Copy and paste the code from the installation page into your command line and run. It follows the pattern shown below.

Installing Grafana on Ubuntu or Debian

In this article, I will show you how to install Grafana on an Ubuntu or Debian-based system.

The easy way is to download the latest Grafana version in the form of .deb package. But this way, your Grafana install won’t get future updates and you’ll have to manually install the newer version.

This is why the better way is to add it to your repository list and then install the latest stable release. This way, your Grafana install gets regular updates.

In the terminal, add this command to use apt over https:

Now enable the software-properties-common package so that you can add additional repositories:

Use wget to get the GPG key and add it to your system:

Rest is easy. Update the software repository cache:

And then install Grafana:

Now that you have installed Grafana, let’s see how to set it up properly.

Шаг 1: Установка Grafana на Ubuntu

Grafana отсутствует в репозиториях Ubuntu по умолчанию. Мы добавим официальный репозиторий Grafana для установки. Это гарантирует, что у вас будет последняя версия Grafana.

Выполните следующие команды, чтобы добавить репозиторий Grafana:

Теперь выполните установку других необходимых пакетов

Обновите кэш репозиториев (Как очистить кэш APT)

Всё, теперь можете устанавливать Grafana с помощью команды APT

Проверьте установленную версию для получения дополнительной информации

Терминал показывает, что установлена Графана .

Теперь включите службу при запуске, чтобы при перезагрузке сервера она также запускалась автоматически

Теперь требуется запустить службу, чтобы Grafana работала должным образом

Time based thresholds

Thresholds can be overriden, based on day and time of the browser.

Multiple time based threshold rules can be set for any given pattern. If multiple rule matches, last rule wins. If no rule matches, default thresholds will be applicable. Example given below.

Following notations should be followed when added time based threshold rule

Name : Can be any representation in string but not more than 60 characters.

From : in HHMM format examples: 0000 2400 1330 1250

To : in HHMM format examples: 0000 2400 1330 1250

On : Days seperated by comma. Order doesnt matter. Examples; «Sat,Sun», «Mon,Sun,Tue»

Threshold : Same format as default threshold

WARNING: «From» and «To» fields will be compared against timestamp of last data received from server. If the last data point is not availble, then browser time will be considered.

TIPS : If your threshold time rage ranges between two day, (example: 2300 of saturday to 0230 of sunday), then split the rule into two each for saturdary and sunday.

NOTE : If you specify n number threshold levels in default pattern (ex: 20,30),then time based thresholds should also follow same number of levels.

Установка Helm в Unix/Linux

Так как helm нужен для помощи с k8s, то нужно установить Kubernetes. Если еще не сделали, то вот полезные маны:

Я буду использовать minikube (но это не столь важно) для стоих локальных тестов. И так, давайте приступим к установке хелма и посмотрим как можно работать с ним

-=== СПОСОБ 1 ===-

Можно вытянуть мастер ветку с гита через wget/curl, например:

$ wget https://codeload.github.com/helm/helm/zip/master -O /usr/local/src/helm.zip && unzip /usr/local/src/helm.zip -d /usr/local/src

Или через git:

$ cd /usr/local/src && git clone https://github.com/helm/helm.git

Перейдем в папку:

$ cd helm

И выполняем билд:

$ make bootstrap build

Готово!

-=== СПОСОБ 2 ===-

Зайти на сайт и выкачать последний релиз-кандидат. Я люблю автоматизацию и по этому захотелось найти способ получить последние релизы прям из терминала, вот команда:

$ curl -s --list-only https://github.com/helm/helm/releases | grep -E "https://storage.googleapis.com/kubernetes-helm/helm-"| grep -E "MacOS|Linux"| cut -d">" -f2| cut -d"=" -f2| cut -d '"' -f2

Покажет примерно вот такое:

https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-darwin-amd64.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-amd64.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-arm.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-arm64.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-386.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-ppc64le.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-s390x.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-rc.4-darwin-amd64.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-rc.4-linux-amd64.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-rc.4-linux-arm.tar.gz
https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-rc.4-linux-arm64.tar.gz

.............

Находим необходимую ссылку и качаем

$ wget https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-darwin-amd64.tar.gz -O /usr/local/src/helm-v2.11.0-darwin-amd64.tar.gz

Получаем бинарник из архива:

$ tar xfvz /usr/local/src/helm-v2.11.0-darwin-amd64.tar.gz -C /usr/local/src

Перемещаем бинарник:

$ mv darwin-amd64/helm /usr/local/bin/helm && sudo chmod +x /usr/local/bin/helm

Да! Иногда я велосипедю))) Но разве это плохо? xD

Почитав доку с хелмом, нашел их решение по уставновке (ЛОЛка):

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash

Или:

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Можно юзать все кому что удобно.

-=== СПОСОБ 3 ===-

Для Mac OS X имеется установщик через homebrew (Установка homebrew тут):

$ brew install kubernetes-helm kubernetes-cli

Может есть еще другие способы установить данное ПО себе на машину, но думаю этих хватит.

Отправка логов на сервер

В нашем примере мы передадим логи веб-сервера NGINX в нашу Grafana Loki. Для этого переходим на сервер с NGINX и выполним следующие действия.

Установка Promtail

Promtail — агент, который читает и отправляет логи на сервер. Его установка во многом напоминает установку сервера — получаем бинарник и добавляем его в автозагрузку. В нашем примере мы загрузим уже скомпилированный файл для запуска.

Для начала, установим следующие пакеты:

yum install unzip wget

* unzip нужен для распаковки архива с бинарником; wget — для скачивания архива.

Загружаем последнюю версию promtail для Linux:

wget https://github.com/grafana/loki/releases/latest/download/promtail-linux-amd64.zip

* в нашем примере загружается бинарник на систему 64-бит. На странице https://github.com/grafana/loki/releases можно скачать файлы для установки под Linux и Windows.

Распаковываем скачанный архив:

unzip promtail-linux-amd64.zip

Переносим бинарник в каталог /usr/local/bin:

mv promtail-linux-amd64 /usr/local/bin/promtail

* обратите внимание, что мы его сразу переименовали в promtail. Создаем каталог для конфигурационных файлов promtail:

Создаем каталог для конфигурационных файлов promtail:

mkdir /etc/promtail

Создаем конфигурационный файл:

vi /etc/promtail/promtail.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0
positions:
  filename: /tmp/positions.yaml
clients:
  — url: http://192.168.0.15:3100/loki/api/v1/push

* где 9080 — номер порта, на котором будет слушать promtail; 192.168.0.15 — IP-адрес нашего сервера Loki, куда нужно отправлять данные.

Создаем юнит в systemd для promtail:

vi /etc/systemd/system/promtail.service

Description=Promtail Service
After=network.target

Type=simple
ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail/promtail.yaml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

WantedBy=multi-user.target

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем запуск сервиса promtail и стартуем его:

systemctl enable promtail —now

Проверяем статус:

systemctl status promtail

На клиенте в настройки брандмауэра добавляем правило на разрешение порта 9080.

а) если используем iptables (Debian, Ubuntu): 

iptables -I INPUT 1 -p tcp —dport 9080 -j ACCEPT

apt-get install iptables-persistent

netfilter-persistent save

б) если используем firewalld (CentOS, Red Hat):

firewall-cmd —permanent —add-port=9080/tcp

firewall-cmd —reload

После установки promtail открываем браузер и переходим на страницу http://192.168.0.25:9080/targets, где 192.168.0.25 — IP-адрес клиентского компьютера с NGINX. Мы должны увидеть страницу:

Promtail работает. Можно приступать к сбору логов.

Настройка сбора логов

Открываем конфигурационный файл promtail:

vi /etc/promtail/promtail.yaml

… и добавляем:


scrape_configs:
— job_name: nginx
  static_configs:
  — targets:
      — localhost
    labels:
      job: nginxlogs
      __path__: /var/log/nginx/*log

* где:

  • job_name — имя задания для чтения лога.
  • targets — компьютер, на котором читаем лог.
  • job — метка для имени задания. Важный параметр для выборки данных.
  • __path__ — путь до файлов с логами.

Перезапускаем сервис promtail:

systemctl restart promtail

Снова заходим по адресу http://192.168.0.25:9080/targets — мы должны увидеть настроенное нами задание:

Сбор логов настроен.

Установка MYSQL/MariaDB в Unix/Linux

Я тоже не буду приводить подробности по установке, а приведу чтиво:

Установка MySQL на Debian/Ubuntu/Linux Mint

Установка MySQL 5.5 на RHEL / CentOS и Fedora

Установка MariaDB 10 на CentOS 7

Вот может еще пригодится:

Разрешить доступ к MySQL с определенной подсети в Unix/Linux

Сейчас, я создаю пользователя, базу и пароль:

Создаем базу и пользователя с паролем:

Заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> MYSQL и вводим свои данные. У меня выглядит вот так:

добавляем data source для grafana

PS: Нам говорят что данный плагин находится в тестовом виде и его не особо стоит пока-что юзать.

Нажимаем на «Add», потом на «Save & Test» и у вас будет уже mysql. Открываем когфиг:

И приводим к виду:

Перезапускаем grafana-server:

После чего, в созданной БД, будут созданы таблицы для работы с графаной.

PS: Это довольно хороший способ хранить хранить, т.к легко можно создать бэкап и ничего не потерять.

Как по мне — очень хорошее решение. Идем далее….

Настройка grafana в Unix/Linux

Установленная grafana, будет работать — http://your_host_or_IP:3000, например как это можно видеть у меня:

Первый вход в grafana

Вводим логин и пароль ( для первого входа используйте admin/admin) и попадаем в дашборд. Его нужно настроить под себя. Для примера, я создам проект c Prometheus и построю ( добавлю) графики. И так, нажимаем на «Data Sources» и добавляем ( заполняем) строки, у меня это выглядит так:

Добавление Prometeus в Grafana

Как все заполнили, нажимаем на «Add». Собственно потом добавляем график и все!

PS: Но для этого нужно иметь уже установленный protheus сервер.

Настройка прокси-сервера для Grafana

Использовать 3000-й порт, — это нормально, но удобно юзать 80-й/443-й и для этого я буду использовать nginx в качестве прокси сервера. Установка описана вот тут:

Открываем конфиг:

# vim /etc/nginx/conf.d/grafana.conf

И прописываем:

server {
 	listen 80;
 	server_name grafana.local;
 	access_log /var/log/nginx/access-grafana.log;
 	error_log /var/log/nginx/error-frafana.log info;
	location / {
		#proxy_set_header X-WEBAUTH-USER $remote_user;
		proxy_pass http://127.0.0.1:3000;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
        	proxy_set_header Connection 'upgrade';
		proxy_set_header   Host $host;
		proxy_cache_bypass $http_upgrade;
		proxy_set_header   X-Real-IP        $remote_addr;
            	proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_max_temp_file_size 0;
		}
}

Вот и вся установка. Перезапускаем nginx + grafana.

Установка плагинов для  grafana

Самый простой способ установки плагинов — использовать grafana-cli который идет в комплекте с grafana. После внесения любых изменений (добавления, удаление плагинов), необходимо перезапустить grafana-server.

Все установленные плагины лежат в /var/lib/grafana/plugins. Можно переопределить каталог в котором будет работать grafana-cli, указав флаг «-pluginsDir».

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

$ grafana-cli plugins list-remote

Установите последнюю версию плагина:

$ grafana-cli plugins install <plugin-id>

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

$ grafana-cli plugins install <plugin-id> <version>

Чтобы просмотреть какие плагины уже установлены, выполните:

$ grafana-cli plugins ls

Обновить все установленные плагины можно так:

$ grafana-cli plugins update-all

Или, если нужно обновить конкретный, то используйте:

$ grafana-cli plugins update <plugin-id>

Чтобы удалить определенный плагин, используйте следующую команду:

$ grafana-cli plugins remove <plugin-id>

На этом у меня все, статья «Установка grafana в Unix/Linux» завершена.

Использование, тестирование cgroups в Unix/Linux

Запуск службы cgconfig создает виртуальную файловую систему, установленную в /cgroup со всеми подсистемами. Проверим это:

# ls /cgroup
blkio cpu cpuacct cpuset devices freezer memory net_cls

Можно запустить команду `lscgroup ‘для проверки:

$ sudo lscgroup

Вы увидите подсистемы в несколько иной компоновке:

cpuset:/
cpu:/
cpuacct:/
memory:/
devices:/
freezer:/
net_cls:/
blkio:/

Протестируем ограничение на диск, для этого — нужно установить утилиту hdparm. Например, для rpm’s ОС, выполните:

# yum install hdparm

Теперь давайте запустим команду для измерения скорости чтения вашего жесткого диска, например:

# hdparm --direct -t /dev/vda

Вывод будет такой:

/dev/vda:
Timing O_DIRECT disk reads: 6 MB in 3.00 seconds = 2.00 MB/sec

На выходе показана пропускная способность диска 2 МБ/с. Если вы остановите службы cgconfig и cgred и снова запустите команду hdparm, вы можете увидеть исходную/стандартную скорость чтения с того момента, когда правила группы не были реализованы.

Создание cgroups в Unix/Linux

Чтобы создать CGroup c ограничением по CPU/RAM, выполним:

# cgcreate -g cpu,memory:your_cgroup_name

Где:

  • cpu,memory — Какие ресурсы будут ограничены. Можно еще ограничить — cpuset,cpuacct.
  • your_cgroup_name — Название вашей cgroup группы.

Можно установить ограничение прям в консоле, например, — установим ограничение по использованию RAM:

# cgset -r memory.limit_in_bytes=1G your_cgroup_name

Можно установить ограничение прям в консоле, например, — установим ограничение по использованию CPU приоритет до ~10% (1024 — это 100% приоритет):

# cgset -r cpu.shares=102 your_cgroup_name

Если используете systemD, то можно использовать SystemD Slices, нпример:

# systemctl set-property user.slice MemoryLimit=512M
# systemctl set-property system.slice MemoryLimit=1024M

Или, можно закинуть в fstab:

# cat /etc/fstab | grep -E "cgroup"

cgroup /sys/fs/cgroup cgroup defaults 0 0

Мне этого хватило что-бы пофиксить кое-что связанное с докером. Если появятся мысли что дополнить — обязательно дополню. Вот и все, статья «Установка cgroups в Unix/Linux» завершена.

Panel plugins

Since Grafana 6.x, panels are ReactJS components.

Prior to Grafana 6.0, plugins were written in AngularJS. Even though we still support plugins written in AngularJS, we highly recommend that you write new plugins using ReactJS.

Panel properties

The interface exposes runtime information about the panel, such as panel dimensions, and the current time range.

You can access the panel properties through , as seen in your plugin.

src/SimplePanel.tsx

Development workflow

Next, you’ll learn the basic workflow of making a change to your panel, building it, and reloading Grafana to reflect the changes you made.

First, you need to add your panel to a dashboard:

  1. Open Grafana in your browser.
  2. Create a new dashboard, and add a new panel.
  3. Select your panel from the list of visualization types.
  4. Save the dashboard.

Now that you can view your panel, try making a change to the panel plugin:

#1. Prometheus

Ключевые особенности:

  • Prometheus – это инструмент с открытым исходным кодом, используемый для мониторинга событий.
  • Prometheus изменил способ систем мониторинга, поэтому он стал проектом верхнего уровня Cloud Native Computing Foundation (CNCF).
  • Компоненты Prometheus написаны на Go.
  • Prometheus использует мощный язык запросов, то есть «PromQL».
  • Серверы Prometheus независимы и могут собирать временные ряды методом пуловера через HTTP.

Преимущества:

  • В Prometheus есть вкладки, которые обслуживают сотни сервисов и микросервисов.
  • Работает как единый сервис, чтобы управлять всеми инстансами.
  • Prometheus использует несколько режимов, используемых для поддержки построения графиков и информационных панелей.

см. также:

What You Will Learn

Before jumping right into this technical journey, let’s have a quick look at everything that you are going to learn by reading this article:

  • Understanding current state-of-the-art ways to monitor process performance on Unix systems;
  • Learn how to install the latest versions of Prometheus v2.9.2, Pushgateway v0.8.0 and Grafana v6.2;
  • Build a simple bash script that exports metrics to Pushgateway;
  • Build a complete Grafana dashboard including the latest panels available such as the ‘Gauge’ and the ‘Bar Gauge’;
  • Bonus : implementing ad-hoc filters to track individual processes or instances.

Now that we have an overview of everything that we are going to learn, and without further due, let’s have an introduction on what’s currently existing for Unix systems.

Установка и настройка MySQL Exporter

root@dedicated:~# wget https://github.com/prometheus/mysqld_exporter/releases
/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

root@dedicated:~# tar xvf mysqld_exporter*.tar.gz
root@dedicated:~# mv  mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/
root@dedicated:~# chmod +x /usr/local/bin/mysqld_exporter

Добавим данные для аутентификации:

root@dedicated:~# mcedit /etc/.mysqld_exporter.cnf 


user=mysqld_exporter
password=StrongPassword

Создадим юнит systemd:

root@dedicated:~# mcedit /etc/systemd/system/mysqld_exporter.service

 
 Description=Prometheus MySQL Exporter
 After=network.target
 User=prometheus
 Group=prometheus

 
 Type=simple
 Restart=always
 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.info_schema.tablestats \
 --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 \
 --collect.perf_schema.eventswaits \
 --collect.perf_schema.indexiowaits \
 --collect.perf_schema.tableiowaits \
 --collect.slave_status \
 --web.listen-address=127.0.0.1:9104
 
 
 WantedBy=multi-user.target

Применим настройки и убедимся, что служба работоспособна:

root@dedicated:~#  systemctl daemon-reload
root@dedicated:~#  systemctl start mysqld_exporter.service
root@dedicated:~#  systemctl enable mysqld_exporter.service
root@dedicated:~#  systemctl status mysqld_exporter.service

Добавим информацию о службе в конфигурационный файл Prometheus

root@dedicated:~# mcedit /etc/prometheus/prometheus.yml 

  - job_name: 'mysqld_exporter'
    static_configs:
     - targets: 

Проверьте работоспособность. Перезагрузите prometheus и выполните запрос данных:

root@dedicated:~#  curl https://localhost:9104/metrics

Создадим тестовую базу mariadb c двумя пользователями, userdb для тестирования и mysqld_exporter для подключения к Grafana:

MariaDB > CREATE DATABASE testdb character set utf8 collate utf8_bin;
MariaDB > GRANT ALL PRIVILEGES ON testdb.* TO userdb@localhost IDENTIFIED by 'StrongPassword';
MariaDB >GRANT ALL PRIVILEGES ON testdb.* TO mysqld_exporter@localhost IDENTIFIED by 'StrongPassword';
MariaDB > GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
MariaDB > FLUSH PRIVILEGES;
MariaDB > QUIT;

Затем во вкладке «Configuration» — «Data Sources» устанавливаем плагин MySQL и настроим подключение к нашей созданной базе данных:

и получаем дашборд следующего вида:

Графиков на самом деле намного больше, но не будем акцентировать внимание на скриншотах, при необходимости вы можете поменять их расположение и удалить ненужные. Каждый дашборд вы можете настроить как угодно для собственного удобства

Давайте лучше выполним нагрузочное тестирование уже знакомой нам утилитой sysbench. Для начала подготовим нашу базу данных, создадим таблички (у меня это 10000), укажем параметры подключения:

root@dedicated:~# sysbench --db-driver=mysql --mysql-user=userdb
--mysql-password='StrongPassword' --mysql-db=testdb --mysql_storage_engine=mariadb
--table_size=10000 --tables=4
--threads=4 /usr/share/sysbench/oltp_read_write.lua prepare

…и запустим непосредственно тест:

root@dedicated:~# sysbench --db-driver=mysql --mysql-user=userdb
--mysql-password='StrongPassword' --mysql-db=testdb --mysql_storage_engine=innodb
--table_size=10000 --tables=4 --threads=1
--time=60 /usr/share/sysbench/oltp_read_write.lua run

 Выполнение у нас выставлено 60 секунд. Пока выполняется нагрузочное тестирование, посмотрим как ведут себя графики:

Как видим, Grafana отреагировала на аномалию.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: