AllInfo
Main: Info Blog Temp Mail


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


3.22.241.60 / 2024-10-23_07-32-58 UTC.