wrk 2024-03-06 18-45-44
wrk Для авторизации в Elasticsearch существует несколько способов: Базовая аутентификация: Самый простой метод - использование базовой HTTP-аутентификации. При отправке запросов к Elasticsearch нужно добавить заголовок Authorization с учетными данными в формате Base64: text curl -H "Authorization: Basic" https://elasticsearch-host:9200 Аутентификация через API-ключи: Можно создать API-ключ и использовать его для авторизации: text curl -H "Authorization: ApiKey " https://elasticsearch-host:9200 Аутентификация через токены: Elasticsearch поддерживает JWT-токены. Сначала нужно получить токен, а затем использовать его в запросах: text curl -H "Authorization: Bearer " https://elasticsearch-host:9200 Аутентификация через SSL-сертификаты: При настройке SSL/TLS можно использовать клиентские сертификаты для авторизации: text curl --cert client.crt --key client.key https://elasticsearch-host:9200 Авторизация через Kibana: Если используется Kibana, можно авторизоваться через ее интерфейс, а затем выполнять запросы к Elasticsearch. --------------- #!/bin/bash indexname="filebeat" old_days="7" old_date=$(date -d "${old_days} days ago" +%s) for index in $(curl -s -XGET "http://localhost:9200/_cat/indices?index=${indexname}-*" | cut -d" " -f 3); do indexdate=$(echo ${index}| cut -d"-" -f2 | sed 's|.|-|g') indextimestamp=$(date -d ${indexdate} +%s) if (( ${indextimestamp} < ${old_date} )); then curl -XDELETE "http://localhost:9200/${index}" fi done --- - name: Сбор и обработка информации о ресурсах VPS hosts: all gather_facts: no tasks: - name: Создание скрипта для сбора информации copy: content: | #!/bin/bash CPU=$(nproc) RAM=$(free -m | awk '/Mem:/ {print $2}') DISK=$(df -h | awk ' !/^Filesystem|tmpfs|cdrom/ { size = $2; if (size ~ /G$/) { sub(/G$/, "", size); sum += size; } else if (size ~ /T$/) { sub(/T$/, "", size); sum += size * 1024; } else if (size ~ /M$/) { sub(/M$/, "", size); sum += size / 1024; } } END {printf "%.2f", sum} ') echo "$HOSTNAME,$CPU,$RAM,$DISK" dest: /tmp/get_resources.sh mode: '0755' - name: Выполнение скрипта и сохранение результатов shell: /tmp/get_resources.sh > /tmp/vps_resources.csv - name: Копирование результатов на локальную машину fetch: src: /tmp/vps_resources.csv dest: "/tmp/vps_resources/{{ inventory_hostname }}_resources.csv" flat: yes ==================================== #!/bin/bash echo "Ресурсы по каждой VPS:" cat /tmp/vps_resources/*_resources.csv echo -e "nСуммарные ресурсы:" awk -F',' ' {cpu+=$2; ram+=$3; disk+=$4} END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk } ' /tmp/vps_resources/*_resources.csv ========================================= #!/bin/bash echo "Ресурсы по каждой VPS:" cat /tmp/vps_resources/*_resources.csv echo -e "nСуммарные ресурсы:" awk -F',' ' {cpu+=$2; ram+=$3; disk+=$4} END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk } ' /tmp/vps_resources/*_resources.csv ================== --- - name: Сбор и обработка информации о ресурсах VPS hosts: all gather_facts: no tasks: - name: Создание скрипта для сбора информации copy: content: | #!/bin/bash CPU=$(nproc) RAM=$(free -m | awk '/Mem:/ {print $2}') DISK=$(df -BG / | awk 'NR==2 {print $2}' | sed 's/G//') echo "$HOSTNAME,$CPU,$RAM,$DISK" dest: /tmp/get_resources.sh mode: '0755' - name: Выполнение скрипта и сохранение результатов shell: /tmp/get_resources.sh > /tmp/vps_resources.csv - name: Копирование результатов на локальную машину fetch: src: /tmp/vps_resources.csv dest: "/tmp/vps_resources/{{ inventory_hostname }}_resources.csv" flat: yes - name: Суммирование ресурсов hosts: localhost tasks: - name: Чтение и обработка результатов shell: | echo "Ресурсы по каждой VPS:" cat /tmp/vps_resources/*_resources.csv echo -e "nСуммарные ресурсы:" awk -F',' ' {cpu+=$2; ram+=$3; disk+=$4} END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk } ' /tmp/vps_resources/*_resources.csv register: total_resources - name: Вывод результатов debug: msg: "{{ total_resources.stdout_lines }}" ================================ --- - name: Сбор и обработка информации о ресурсах VPS hosts: all gather_facts: no tasks: - name: Создание скрипта для сбора информации copy: content: | #!/bin/bash CPU=$(nproc) RAM=$(free -m | awk '/Mem:/ {print $2}') DISK=$(df -BG / | awk 'NR==2 {print $2}' | sed 's/G//') echo "$HOSTNAME,$CPU,$RAM,$DISK" dest: /tmp/get_resources.sh mode: '0755' - name: Выполнение скрипта и сохранение результатов shell: /tmp/get_resources.sh > /tmp/vps_resources.csv - name: Копирование результатов на локальную машину fetch: src: /tmp/vps_resources.csv dest: /tmp/vps_resources/ flat: yes - name: Суммирование ресурсов hosts: localhost tasks: - name: Чтение и обработка результатов shell: | echo "Ресурсы по каждой VPS:" cat /tmp/vps_resources/*.csv echo -e "nСуммарные ресурсы:" awk -F',' ' {cpu+=$2; ram+=$3; disk+=$4} END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk } ' /tmp/vps_resources/*.csv register: total_resources - name: Вывод результатов debug: msg: "{{ total_resources.stdout_lines }}" ================================== --- - name: Сбор и обработка информации о ресурсах VPS hosts: all gather_facts: no tasks: - name: Создание скрипта для сбора информации copy: content: | #!/bin/bash CPU=$(nproc) RAM=$(free -m | awk '/Mem:/ {print $2}') DISK=$(df -BG / | awk 'NR==2 {print $2}' | sed 's/G//') echo "$HOSTNAME,$CPU,$RAM,$DISK" dest: /tmp/get_resources.sh mode: '0755' - name: Выполнение скрипта и сохранение результатов shell: /tmp/get_resources.sh register: vps_info - name: Сохранение результатов локально local_action: module: copy content: "{{ vps_info.stdout }}n" dest: "/tmp/vps_resources.csv" mode: "0644" delegate_to: localhost - name: Суммирование ресурсов hosts: localhost tasks: - name: Чтение и обработка результатов shell: | echo "Ресурсы по каждой VPS:" cat /tmp/vps_resources.csv echo -e "nСуммарные ресурсы:" awk -F',' ' {cpu+=$2; ram+=$3; disk+=$4} END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk } ' /tmp/vps_resources.csv register: total_resources - name: Вывод результатов debug: msg: "{{ total_resources.stdout_lines }}" ====================================== --- - name: Сбор информации о ресурсах VPS hosts: all gather_facts: yes tasks: - name: Получение информации о CPU, RAM и дисках shell: | echo "CPU:$(nproc)" echo "RAM:$(free -m | awk '/Mem:/ {print $2}')" echo "Disk:$(df -BG / | awk 'NR==2 {print $2}' | sed 's/G//')" register: system_info - name: Сохранение информации в файл local_action: module: copy content: "{{ inventory_hostname }},{{ system_info.stdout }}n" dest: "/tmp/vps_resources.csv" mode: "0644" delegate_to: localhost - name: Суммирование ресурсов hosts: localhost tasks: - name: Подсчет общих ресурсов shell: | awk -F'[,:]' '{ cpu+=$2; ram+=$3; disk+=$4 } END { print "Всего CPU ядер:", cpu; print "Всего RAM (MB):", ram; print "Всего дискового пространства (GB):", disk }' /tmp/vps_resources.csv register: total_resources - name: Вывод результатов debug: msg: "{{ total_resources.stdout_lines }}" ========================================= https://grafana.com/grafana/dashboards/10006-mysql-innodb-cluster/ https://grafana.com/grafana/dashboards/7362-mysql-overview/ ### - hosts: all tasks: - name: Create mymonitor.sh script become: yes template: src: mymonitor.j2 dest: /usr/local/bin/mymonitor.sh mode: '0755' templates/mymonitor.j2: #!/bin/bash # Check free disk space free_space=$(df -h / | awk '//$/ {print $4}' | sed 's/[^0-9]*//g') if [ "$free_space" -lt 1024 ]; then exit 1 fi # Check free memory #free | awk '/Mem:/ {print $4}' | awk '{print int($1/1)}' free_mem=$(free -m | awk '/Mem:/ {print $4}') if [ "$free_mem" -lt 512 ]; then exit 2 fi # Check if port 80 is open # exec 3<>/dev/tcp/example.com/80 && echo "Port 80 is open" || echo "Port 80 is closed" # man - exec 3<>/dev/tcp/example.com/80 открывает файловый дескриптор 3 для TCP-соединения с example.com на порту 80 if ! nc -z localhost 80; then exit 3 fi # Check if Apache is running if ! systemctl is-active --quiet apache2; then exit 4 fi exit 0 2024-04-29_15-06-42 - name: Создание файла монитора hosts: your_target_hosts tasks: - name: Создать файл монитора copy: content: | #!/bin/bash # Проверка свободного дискового пространства df -h | grep '/dev/sda1' | awk '{print $4}' | sed 's/G//' # Проверка свободной памяти free -m | grep Mem | awk '{print $4}' # Проверка открытого порта 80 sudo lsof -i :80 # Проверка запущенного сервиса Apache sudo systemctl is-active apache2 dest: /usr/local/bin/mymonitor mode: '0755' 2024-05-09_12-33-56 Основное различие в возможностях мониторинга репликации MariaDB с помощью Percona Monitoring and Management (PMM) между версиями 10.3 и 10.5 заключается в следующем: MariaDB 10.3 Мониторинг репликации осуществляется с помощью традиционного механизма, основанного на файле бинарного лога и позиции в нем. Для настройки мониторинга репликации пользователю zbx_monitor должны быть предоставлены права REPLICATION. MariaDB 10.5 и новее Появилась поддержка мониторинга репликации на основе глобального идентификатора транзакций (global transaction ID). Это упрощает настройку мониторинга репликации по сравнению с традиционным подходом. Таким образом, ключевое отличие заключается в том, что начиная с MariaDB 10.5, PMM может использовать более современный и удобный механизм мониторинга репликации на основе global transaction ID вместо отслеживания файла бинарного лога и позиции в нем, как в версии 10.3. ====================================================== нагрузка Подключение к MariaDB: text $ mysql -u root -pxxxxxx Создание тестовой базы данных: sql CREATE DATABASE test_load; USE test_load; Создание тестовой таблицы: sql CREATE TABLE test_table ( id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Вставка тестовых данных (повторите этот запрос несколько раз для создания большего объема данных): sql INSERT INTO test_table (data) SELECT CONCAT('Data ', FLOOR(RAND() * 1000000)) FROM information_schema.columns LIMIT 100000; Выполнение запросов для создания нагрузки: sql -- Выборка данных SELECT COUNT(*) FROM test_table; SELECT * FROM test_table ORDER BY RAND() LIMIT 1000; -- Обновление данных UPDATE test_table SET data = CONCAT('Updated ', data) WHERE id % 100 = 0; -- Удаление данных DELETE FROM test_table WHERE id % 1000 = 0; После завершения тестов, удаление базы данных: sql DROP DATABASE test_load; Выход из MySQL: sql EXIT; 2024-07-25_06-46-17