вторник, 25 августа 2020 г.

nginx убрать слэш в конце при редиректе при proxy pass на бэкэнд/nginx remove the trailing slash

location /
}
error_page 503 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/error;
internal;
}
rewrite ^/(.*)/$ /$1 permanent;
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}

понедельник, 10 августа 2020 г.

sqlplus: command not found

После установки базы Oracle версии 12.2.0, не мог зайти в базу с помощью SQL Plus.

Проблема решил вот такой командой: 

export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1 

пятница, 6 марта 2020 г.

Curator автоудаление индексов в ElasticSearch/autodelete elasticsearch indices with curator

Появилась необходимость удалять индексы с логами в ElasticSearch автоматически. В моем примере удаляются логи старше 4 дней.

Для этой задачи решил использовать curator: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/yum-repository.html

Версия софта на момент написания статьи.

curator: 5.8.1
Elasticsearch: 7.5.0


1. Создаем два файла в /etc/elasticsearch/ curator-clients.yml и curator-actions.yml

Содержание curator-clients.yml.

client:
  hosts:
    - 192.168.1.110
  port: 9200
  http_auth: elastic:mypassword
logging:
  loglevel: INFO
  logfile: /var/log/curator

  logformat: default


Содержание curator-actions.yml

actions:
  1:
    action: delete_indices
    description: >-
      Delete indices older than 4 days (based on index name), for logstash-
    options:
      ignore_empty_list: True
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: logstash-
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days

      unit_count: 4

2. Запускаем curator: curator --config /etc/elasticsearch/curator-clients.yml /etc/elasticsearch/curator-actions.yml


3. Проверяем лог удаления индексов в /var/log/curator.

020-03-06 10:36:06,704 INFO      Successfully created Elasticsearch client object with provided settings
2020-03-06 10:36:06,707 INFO      Trying Action ID: 1, "delete_indices": Delete indices older than 4 days (based on index name), for logstash- prefixed indices. Ignore the error if the filter does not result in an actionable list of indices (ignore_empty_list) and exit cleanly.
2020-03-06 10:36:07,120 INFO      Deleting 2 selected indices: ['logstash-2020.02.24', 'logstash-2020.03.01']
2020-03-06 10:36:07,120 INFO      ---deleting index logstash-2020.02.24
2020-03-06 10:36:07,120 INFO      ---deleting index logstash-2020.03.01
2020-03-06 10:36:07,807 INFO      Action ID: 1, "delete_indices" completed.
2020-03-06 10:36:07,807 INFO      Job completed.



понедельник, 3 февраля 2020 г.

GitLab CI - git fetch-pack: expected shallow

не работал CI в GitLab. Оказывается необходим git версии 2.16.6 и выше.

* Решение.

sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install git2u-all

предварительно удалив старую версию.





суббота, 28 декабря 2019 г.

смена версии python на ansible


Смена версии Python на Ansible 2.9. В /etc/ansible/hosts меняем в inventory интерпретатор на python3



[local]
## alpha.example.org
## beta.example.org
192.168.0.11
## 192.168.1.110


[local:vars]
ansible_python_interpreter=/usr/bin/python3

среда, 23 октября 2019 г.

nginx location regexp/регулярка

Регулярка для закрытия/открытия доступа к определенным папкам.
В этом примере закрываем доступ в папку sms и voice.

location ~* (/path/to/folder/sms|/path/to/folder/voice)($|\/) {
...
deny all;
}

понедельник, 21 октября 2019 г.

Снимаем свои метрики в node_exporter

Понадобилось снимать свои метрики в Prometheus и Node Exporter. Больше информации тут: https://www.robustperception.io/using-the-textfile-collector-from-a-shell-script


1) Создаем service в  /etc/systemd/system/node_exporter.service и запускаем service с ключом --collector.textfile.directory=/var/lib/node_exporter/textfile_collector

[Unit]
Description=node_exporter

[Service]
User=root
Group=root
Type=Simple
ExecStart=/etc/node_exporter/node_exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector
WorkingDirectory=/etc/node_exporter
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target


2)  Сам баш скрипт.


#!/bin/bash
# Adjust as needed.
#https://www.robustperception.io/using-the-textfile-collector-from-a-shell-script
TEXTFILE_COLLECTOR_DIR=/var/lib/node_exporter/textfile_collector/
# Note the start time of the script.
# Your code goes here.
sleep 10
# Write out metrics to a temporary file.
END="$(cat /var/log/cron | wc -l)"
cat << EOF > "$TEXTFILE_COLLECTOR_DIR/test.prom.$$"
test $END
EOF
# Rename the temporary file atomically.
# This avoids the node exporter seeing half a file.
mv "$TEXTFILE_COLLECTOR_DIR/test.prom.$$" \
"$TEXTFILE_COLLECTOR_DIR/test.prom"