356km

Мечты нужно осуществлять! Полгода назад узнал, что человек к 35 годам ни разу не был на Черном Море. Сразу созрел план. Пару месяцев ушло на шлифовку и вот результат:2 дня 356 км (~180км в день). Железная задница! И море счастья! Да! Нет ничего невозможного!

Рубрика: Без рубрики | Оставить комментарий

TCP Response Time

Если у нас где-то начинает лагать и прилетает в http_reponse time +1s — это могут быть TCP_Retransmission (стд. задержка ядра на восстановление tcp-соединения).

Можно высчитывать используя Wireshark.

http://www.freekb.net/Article?id=956

Можно воспользоваться утилитой+tcpdump:

https://gist.github.com/sinegar/3852119

Рубрика: Linux | Оставить комментарий

node_exporter + PSI

Если прилетает куча ошибок:

node_exporter: level=error ts=2021-08-06T12:58:15.177Z caller=collector.go:161 msg="collector failed" name=pressure duration_seconds=7.8465e-05 err="failed to retrieve pressure stats: psi_stats: unavailable for \"cpu\": read /proc/pressure/cpu: operation not supported"

Можно просто отключить коллектор pressure:

# cat /usr/lib/systemd/system/node_exporter.service|grep press
  --no-collector.pressure \

Можно включить PSI по ссылке:

Рубрика: Linux | Оставить комментарий

Logstash+Elastic auth

По-умолчанию стандартный пользователь logstash_system не имеет прав для записи в Elastic. При настройки *-output.conf приходят такие ошибки:

[2021-07-15T13:13:18,903][ERROR][logstash.outputs.elasticsearch][main][8cc48d743f6fd6c3f653f050babd6a05cb8d790e309190e9be834d7c8f696f49] Encountered a retryable error (will retry with exponential backoff) {:code=>403, :url=>»http://localhost:9200/_bulk», :content_length=>2698}

Для того чтобы избежать таких ошибок нужно:

0)Включить аунтификацию в Elasticsearch:

cat /etc/elasticsearch/elasticsearch.yml |grep xpaxpack.security.enabled: true

1)Добавить роль:

2)Создать пользователя logstash_internal и добавить ему роль logstash_writer

3)Настроить output.conf

cat /etc/logstash/conf.d/30-elasticsearch-output.conf
output {
elasticsearch {
hosts => [«localhost:9200»]
user => logstash_internal
password => $YOU_PASS$
manage_template => false
index => «%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}»
}
}

На основе:

https://tipoit.kz/elkstack/all/2021/02/18/elk-logstash-configuration.html

Рубрика: Без рубрики | Оставить комментарий

Prom+Remote Check.

Если нужно проверить какой-то экспортер локально у себя, а из доступа есть только ssh на host.
Можно сделать ssh Forward на хост:
ssh -L 18090:127.0.0.1:18090 root@promethues.prom.ru
И на локальном хосте запустив Docker c Prometheus можно достучаться до хоста с помощью hosntame(host.docker.internal):
— job_name: ‘node_test’
static_configs:
— targets:
— ‘host.docker.internal:18090’

Рубрика: Без рубрики | Оставить комментарий

LSI Megaraid Prom+Graf

На данный момент существует два пути мониторинга LSI-контроллеров.
MegaraidCLI
storcli
Первое хоронят за вторым будущее.
Почитать можно вот тут:
https://blog.soultrace.net/prometheus-node_exporter-with-perccli-textfile-collector/
https://docs.broadcom.com/doc/12352476

В Promheteus можно занести двумя способами:
Не официальный путь:
https://github.com/bojleros/megacli2prom
Официальный путь:
https://github.com/prometheus-community/node-exporter-textfile-collector-scripts/blob/master/storcli.py
Для второго есть JSON-чик под Grafana:
https://github.com/danninov/grafana-megaraid

Рубрика: Без рубрики | Оставить комментарий

Make RPM

Если у вас есть tar. Который нужно запаковать в rpm делать нужно примерно так:

# mkdir /root/rpmbuild
# cd /root/rpmbuild
# rpmdev-setuptree
# cd SOURCES/
# git clone -b BRANCHNAME https://YOUGITNAME.ru/REPO.git app
Cloning into 'app'...
remote: Counting objects: 3388, done.
remote: Compressing objects: 100% (2091/2091), done.
remote: Total 3388 (delta 1612), reused 1111 (delta 477)
Receiving objects: 100% (3388/3388), 552.47 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1612/1612), done.
# rm -fr app/.git
# tar -zcf 123.tar.gz app
# cd ../SPECS
# wget https://YUOREPO>ru/123.spec ./
# rpmbuild --define '_topdir /root/rpmbuild/' -ba 123.spec

И собственно spec-файл:

# Имя пакета
Name: 123

# Небольшое описание для пакета
Summary: 123 Test for APP

# Версия вашего пакета
Version: 1.0

# Номер релиза пакета
Release: 1

# Любые лицензии которые вы хотите использовать
License: GNU GPL

# Какая группа 
Group: Applications

# Имя Фамилия человека
Packager: Name Surname

# Архитектура пакета (noarch/x86_64/i386/etc)
Buildarch: noarch

# Здесь можно ничего не трогать
Buildroot: %{_tmppath}/%{name}

# Пакер какой использован
#  tar / tar.gz / tar.bz2
Source0: %{name}.tar.gz

# Если rpm пошел узнавать про зависимости раскоментируй:
#AutoReqProv: no

# Если есть зависимости раскоментируй: 
#Requires: bash

# Подробное описание 
%description
123 for APP main application

# Это можно не трогать
%define debug_package %{nil}


%prep
%setup -q -c
cd app
#Тут можно сделать что-то до билда

%build
cd app
#Тут можно делать что-то во время билда

%install
rsync -a . %{buildroot}/

%clean
rm -rf %{buildroot}

%pre

%post

%preun

%postun

#%trigger

#%triggerin

#%triggerun

%changelog
* Tue Jun 01 2021 Name Surname <None>
- Test version.

%files
%attr(0755, root, root) %dir "/app"
%attr(0644, root, root) "/app/README.md"

#И дальше также все файлы по аналогии файлы лежат в SOURCES

Рубрика: Linux, Без рубрики | Оставить комментарий

Open Allure-Maven Localy

Чтобы открыть отчет Allure в Chrome нужно разрешить исполнение локальных Ajax. Делается специальным ключиком:

«/Applications/Google Chrome.app/Contents/MacOS/Google Chrome» —allow-file-access-from-files

На базе:
https://stackoverflow.com/questions/23997449/allure-report-nothing-shown-in-chrome/24002146#24002146

Рубрика: JAVA, Programming, Без рубрики | Оставить комментарий

MBP External Display

Дешевые мониторы после patch-edid.rb — сбрасывают разрешение, и вы не можете выбрать большее разрешение для своего MAC.

Вот fix для внешнего дисплея.

#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
# 
# Update 2013-06-24: added -w0 option to prevent truncated lines

#
# Update 2016-01-17: Removing YCrCb support from extension block instead of the hole block
#                    Setting the ProductName to Dell U2515H (HiDPI+)
#                    Added scale-resolutions
#                    Command line argument for edid.hex (use DarwinDumper to get own)
# see http://www.insanelymac.com/forum/topic/310345-qhd-monitor-1920x1080-hidpi/#entry2207446


# Usage: Open Terminal and enter "ruby patch-edid.rb" or "ruby patch-edid.rb /path/to/edid.hex"
# This should give you an override file for your display.

require 'base64'

data=`ioreg -l -w0 -d0 -r -c AppleDisplay`
productname="Dell U2515H (HiDPI+)"

# command line arguments
if ARGV.length > 0
    puts "Reading hex file from arguments."
    edid_hex=File.read(ARGV[0])
else
    edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
end

vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i

puts "Found display: VendorId #{vendorid}, ProductId #{productid}, EDID:\n#{edid_hex}"

bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten

puts "Number of extension blocks: #{bytes[126]}"
puts "Removing YCrCb support from extension block"
bytes[131] &= ~(1 << 5);
bytes[131] &= ~(1 << 4);

bytes[255] = (0x100-(bytes[128..254].reduce(:+) % 256)) % 256 ## Checksum. Sum of all 128 bytes should equal 0 (mod 256).
puts 
puts "Recalculated checksum: 0x%x" % bytes[255]
puts "New EDID:\n#{bytes.map{|b|"%02X"%b}.join}"

Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
f.write '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">'
f.write "
<dict>
  <key>DisplayProductName</key>
  <string>#{productname}</string>
  <key>IODisplayEDID</key>
  <data>#{Base64.encode64(bytes.pack('C*'))}</data>
  <key>DisplayVendorID</key>
  <integer>#{vendorid}</integer>
  <key>DisplayProductID</key>
  <integer>#{productid}</integer>
  <key>scale-resolutions</key>
  <array>
    <data>AAAPAAAACHAAAAAB</data> <!-- 3840x2160 to get 1920x1080 HiDPI -->
    <data>AAAMgAAABwgAAAAB</data> <!-- 3200x1800 to get 1600x900 HiDPI -->
    <data>AAALQAAABlQAAAAB</data> <!-- 2880x1620 to get 1440x810 HiDPI -->
  </array>
</dict>
</plist>"
f.close

На базе:

https://www.insanelymac.com/forum/topic/310345-qhd-monitor-1920×1080-hidpi/

https://codeclou.github.io/Display-Override-PropertyList-File-Parser-and-Generator-with-HiDPI-Support-For-Scaled-Resolutions/

https://gist.github.com/adaugherity/7435890

https://www.macrumors.com/how-to/disable-font-smoothing-in-macos-big-sur/

Рубрика: Без рубрики | Оставить комментарий

JAR in Maven

Понадобилось немного запомнить:
https://devcolibri.com/как-создать-jar-файла-в-maven/

https://mkyong.com/maven/how-to-create-a-jar-file-with-maven/

<manifest> <mainClass>com.mkyong.core.utils.App</mainClass> </manifest>

Рубрика: JAVA, Linux, Programming | Оставить комментарий