Установка grafana в Unix/Linux
И так, я начну с установки свой графаны:
Хочу отметить следующее, — это то, что grafana слушает 3000-й порт и для удобства, я сейчас сделаю прокси на 80-й порт. Есть много прокси-сервисов, но я предпочитаю nginx. Я приведу статьи по установке nginx:
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_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Где:
grafana.local — это мое доменное имя ( я прописал в /etc/hosts свой IP и сопоставил его с grafana.local)
PS: Нужно прописать в исключения 3000-й и 80-й порты. Если используете iptables, то добавьте правило. Если SELinux, вот чтиво:
Собственно, — это все что нужно было сделать с nginx — это и есть прокси. Переходим к конфигу графаны:
# vim /etc/grafana/grafana.ini
И приводим к виду:
data = /var/lib/grafana logs = /var/log/grafana plugins = /var/lib/grafana/plugins protocol = http http_addr = 127.0.0.1 http_port = 3000 domain = localhost root_url = http://localhost:3000
Вот такой конфиг заработает ( проверялось не одиножды)! Некоторые люди пишут, что можно выполнить следующую команду:
# setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server
Но я не проверял этого. Оставил на всякий случай.
Перезапускаем службы:
# service nginx restart # service grafana-server
Переходим к установке и настройке дургих компонентов.
В чем отличия и связь «Искусственного интеллекта» и «Машинного обучения»?[править]
Машинное обучение – одно из направлений Искусственного Интеллекта. Данное направление состоит из методов, которые позволяют делать выводы на основе данных.
Искусственный интеллект – одно из направлений Машинного Обучения. Данное направление занимается имитированием поведения человека.
Искусственный Интеллект и Машинное Обучение – это направления Глубокого обучения нейронных сетей.
Искусственный Интеллект – это алгоритмы, связанные с обучением цифровых нейронных сетей. Машинное обучение — это алгоритмы работы с табличными данными.
Искусственный Интеллект занимается задачами имитации деятельности мозга человека. Машинное обучение – это процесс, в ходе которого обучается Искусственный Интеллект. +
Работа с CloudFlare и Terraform в Unix/Linux
У меня есть папка terraform, в ней у меня будут лежать провайдеры с которыми я буду работать. Т.к в этом примере я буду использовать AWS, то создам данную папку и перейду в нее. Далее, в этой папке, стоит создать:
$ mkdir examples modules
В папке examples, я буду хранить так званые «плейбуки» для разварачивания различных служб, например — zabbix-server, grafana, web-серверы и так далее. В modules директории, я буду хранить все необходимые модули.
Начнем писать модуль, но для этой задачи, я создам папку:
$ mkdir modules/cloudflare_record
Переходим в нее:
$ cd modules/cloudflare_record
Открываем файл:
$ vim cloudflare_record.tf
В данный файл, вставляем:
#--------------------------------------------------- # Add a record to the domain #--------------------------------------------------- resource "cloudflare_record" "record" { count = "${var.domain !="" && var.name !="" && var.value !="" ? 1 : 0}" domain = "${var.domain}" name = "${var.name}" value = "${var.value}" type = "${var.type}" ttl = "${var.ttl}" priority = "${var.priority}" proxied = "${var.proxied}" }
Открываем файл:
$ vim variables.tf
И прописываем:
#----------------------------------------------------------- # Global or/and default variables #----------------------------------------------------------- variable "name" { description = " The name of the record" default = "cloudflare_name" } variable "domain" { description = "The domain to add the record to" default = "" } variable "value" { description = "The value of the record. Ex: 192.168.13.113" default = "" } variable "type" { description = "The type of the record" default = "A" } variable "ttl" { description = "The TTL of the record" default = 3600 } variable "priority" { description = "The priority of the record" default = "1" } variable "proxied" { description = "Whether the record gets Cloudflare's origin protection." default = "" }
Собственно в этом файле храняться все переменные. Спасибо кэп!
Открываем последний файл:
$ vim outputs.tf
И в него вставить нужно следующие строки:
output "record_ids" { description = "" value = "${cloudflare_record.record.*.id}" } output "record_names" { description = "" value = "${cloudflare_record.record.*.name}" } output "record_values" { description = "" value = "${cloudflare_record.record.*.value}" } output "record_types" { description = "" value = "${cloudflare_record.record.*.type}" } output "record_ttls" { description = "" value = "${cloudflare_record.record.*.ttl}" } output "record_prioritys" { description = "" value = "${cloudflare_record.record.*.priority}" } output "record_hostnames" { description = "" value = "${cloudflare_record.record.*.hostname}" } output "record_proxieds" { description = "" value = "${cloudflare_record.record.*.proxied}" }
Переходим теперь в папку aws/examples и создадим еще одну папку для проверки написанного чуда:
$ mkdir cloudflare_record && cd $_
Внутри созданной папки открываем файл:
$ vim main.tf
И вставим в него следующий код:
# # MAINTAINER Vitaliy Natarov "vitaliy.natarov@yahoo.com" # terraform { required_version = "> 0.9.0" } provider "cloudflare" { email = "" token = "" } module "cloudflare_record" { source = "../../modules/cloudflare_record" name = "cloudflare_record" }
В файле стоит прописать все необходимое, но самое главное:
- email — Мыло при регистрации аккаунта в клаудфлюре.
- token — Сгенерированный токен от клаудфлюра.
Еще полезности:
Все уже написано и готово к использованию. Ну что, начнем тестирование. В папке с вашим плейбуком, выполняем:
$ terraform init
Этим действием я инициализирую проект. Затем, подтягиваю модуль:
$ terraform get
PS: Для обновление изменений в самом модуле, можно выполнять:
$ terraform get -update
Проверим валидацию:
$ terraform validate
Запускем прогон:
$ terraform plan
Мне вывело что все у меня хорошо и можно запускать деплой:
$ terraform apply
Как видно с вывода, — все прошло гладко! Чтобы удалить созданное творение, можно выполнить:
$ terraform destroy
Весь материал аплоаджу в github аккаунт для удобства использования:
$ git clone https://github.com/SebastianUA/terraform.git
Вот и все на этом. Данная статья «Работа с CloudFlare и Terraform в Unix/Linux» завершена.
Работа с AWS Route53 и Terraform в Unix/Linux
Amazon Route 53 – это высокодоступный и масштабируемый облачный веб-сервис системы доменных имен (DNS). Разработчики и владельцы веб-сервисов используют его как очень надежный и эффективный метод перенаправления конечных пользователей к интернет-приложениям, переводя доменные имена (например, www.example.com) в формат цифровых IP-адресов (например, 192.0.2.1), понятных для компьютеров. Amazon Route 53 также полностью совместим с протоколом IPv6.
Сервис Amazon Route 53 направляет запросы пользователей к инфраструктуре AWS, например к инстансам Amazon EC2, балансировщикам нагрузки Elastic Load Balancing или корзинам Amazon S3. Кроме того, он может использоваться для перенаправления пользователей в инфраструктуру за пределами AWS. Amazon Route 53 можно использовать как для организации подключений только к «здоровым» адресам (с использованием проверок DNS), так и для независимого мониторинга состояния приложения и его конечных точек. С помощью сервиса Amazon Route 53 Traffic Flow можно легко управлять глобальным трафиком, используя различные типы маршрутизации (такие как маршрутизация на базе задержки, DNS с учетом географического положения, географическая близость и циклический взвешенный алгоритм), которые можно сочетать с возможностью переброса сервиса DNS, создавая в результате отказоустойчивые архитектуры с низкой задержкой. Используя несложный визуальный редактор Amazon Route 53 Traffic Flow, можно легко управлять маршрутизацией конечных пользователей к конечным точкам ваших приложений как в рамках одного региона AWS, так и при распределении трафика по всему миру. Кроме того, в сервисе Amazon Route 53 можно зарегистрировать доменное имя: при покупке доменов (например, example.com) и управлении ими Amazon Route 53 автоматически настроит для них параметры DNS.
Установка MYSQL/MariaDB в Unix/Linux
Я тоже не буду приводить подробности по установке, а приведу чтиво:
Вот может еще пригодится:
Сейчас, я создаю пользователя, базу и пароль:
# mysql -uroot -p
Создаем базу и пользователя с паролем:
> create database grafana character set utf8 collate utf8_bin; > grant all privileges on grafana.* to 'grafana'@'127.0.0.1' IDENTIFIED BY 'Your_passwd_user_grafana'; > flush privileges;
Заходим в графана веб панель. Открываем:
Data Sources -> Add data source -> MYSQL и вводим свои данные. У меня выглядит вот так:
добавляем data source для grafana
PS: Нам говорят что данный плагин находится в тестовом виде и его не особо стоит пока-что юзать.
Нажимаем на «Add», потом на «Save & Test» и у вас будет уже mysql. Открываем когфиг:
# vim /etc/grafana/grafana.ini
И приводим к виду:
type = mysql host = 127.0.0.1:3306 name = grafana user = grafana password = Your_passwd_user_grafana
Перезапускаем grafana-server:
# service grafana-server restart
После чего, в созданной БД, будут созданы таблицы для работы с графаной.
PS: Это довольно хороший способ хранить хранить, т.к легко можно создать бэкап и ничего не потерять.
Как по мне — очень хорошее решение. Идем далее….
Troubleshooting with new relic installation – php agent
ERROR: unsupported version ‘8.0.3’ of PHP found : php 8 not supported right as on 2021 may.
PHP Warning: Module “newrelic” is already loaded in Unknown on line 0
Big issue delete two typ[es of files in /available mod /7.4 and 8.0 if any and apache2/php mods
20-newrelic.ini
newrelic.ini
ls -l /etc/php/7.4/fpm/conf.d/
/etc/php/7.4/mods-available
sudo rm /etc/php/7.4/fpm/conf.d/20-newrelic.ini
you can remove php extension or module
sudo rm /etc/phpv.4/conf.d/EXTENSION.ini
my case php located /etc/php/7.4/fpm/
/etc/php/7.4/fpm/conf.d/newrelic.ini is there installed last time.
you can see error logs
/var/log/newrelic/phpagent.log
2021-05-06 07:39:00.605 +0000 (18049 18049) warning: A global default license has not been set or has invalid format. Please add a ‘newrelic.license‘ key in the global php.ini or in the newrelic.ini file, or ensure that a valid license is provided on a per-virtual host or per-directory basis.
if you see newrelic.license = “REPLACE_WITH_REAL_KEY” at newrelic.ini php module
sudo rm /etc/php/7.4/fpm/conf.d/newrelic.ini
new relic mysql instlation trobuble shoting
: Provided user has no access to the desired database. See https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/mysql-monitoring-integration#config for more info.
sudo service mysql restart
localhost does not match % in MySQL
Check New relic Infrastructure agent running or not
sudo systemctl status newrelic-infra
root@-s-4vcpu-8gb-blr1-01:~# sudo systemctl status newrelic-infra
● newrelic-infra.service – New Relic Infrastructure Agent
Loaded: loaded (/etc/systemd/system/newrelic-infra.service; enabled; vendor p
Active: active (running) since Wed 2021-04-21 16:54:15 UTC; 2 weeks 0 days ag
Main PID: 3498 (newrelic-infra-)
Tasks: 33 (limit: 4915)
CGroup: /system.slice/newrelic-infra.service
├─3498 /usr/bin/newrelic-infra-service
├─3512 /usr/bin/newrelic-infra
└─3673 /var/db/newrelic-infra/newrelic-integrations/logging/fluent-bi
installing new relic mysql agent in linux
Step 1 run this command
curl -Ls https://raw.githubusercontent.com/newrelic/newrelic-cli/master/scripts/install.sh | bash && sudo NEW_RELIC_API_KEY=NRAK-Q8QNCMEW58VMJ2A5ORFQUWNOH9W NEW_RELIC_ACCOUNT_ID=3034122 /usr/local/bin/newrelic install -n mysql-open-source-integration
It ask you to create database and user
==> Installing mysql-open-source-integration…
To capture data from the MySQL integration, you’ll first need to meet these prerequisites:
– MySQL version requirement (see https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/mysql-monitoring-integration#req)
– User with replication permissions
To create a new user, use these commands as reference (Note: username,
password, and similar user-specific values must be replaced):
> sudo mysql -e “CREATE USER ‘newrelic’@’localhost’ IDENTIFIED BY ‘YOUR_SELECTED_PASSWORD’;”
> sudo mysql -e “GRANT REPLICATION CLIENT ON *.* TO ‘newrelic’@’localhost’ WITH MAX_USER_CONNECTIONS 5;”
> sudo mysql -e “GRANT SELECT ON *.* TO ‘newrelic’@’localhost’ WITH MAX_USER_CONNECTIONS 5;”
? MySQL Username
? MySQL Username newrelic
? MySQL Password ********
? MySQL Hostname (default: localhost) localhost
? MySQL port (default: 3306) 3306
? MySQL Database Name newrelic
: Provided user has no access to the desired database. See https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/mysql-monitoring-integration#config for more info.
New relic nginx installation
curl -Ls https://raw.githubusercontent.com/newrelic/newrelic-cli/master/scripts/install.sh | bash && sudo NEW_RELIC_API_KEY=NRAK-Q8QNCMEW58VMJ2A5ORFQUWNOH9W NEW_RELIC_ACCOUNT_ID=3034122 /usr/local/bin/newrelic install -n nginx-open-source-integration
? NGINX status URL (default: http://127.0.0.1/status) http://127.0.0.1/statusNGINX HTTP status module must be configured for New Relic to collect data. \n – See https://docs.newrelic.com/docs/integrations/host-integrations/host-integrations-list/nginx-monitoring-integration#config for more info.
==> Installing nginx-open-source-integration…failed.
root@-s-4vcpu-8gb-blr1-01:/etc/php/7.4/fpm/conf.d# curl http://127.0.0.1/status
pool: www
process manager: dynamic
start time: 06/May/2021:14:03:02 +0000
start since: 6585
accepted conn: 726
listen queue: 0
max listen queue: 0
listen queue len: 65536
idle processes: 13
active processes: 1
total processes: 14
max active processes: 7
max children reached: 0
slow requests: 0
Configure your license key and application name:
sed -i -e “s/REPLACE_WITH_REAL_KEY/e28947ef70ff6b7baaf50291de3d341c8069NRAL/” \
-e “s/newrelic.appname]=].*/newrelic.appname=\”php-wordpress\”/” \
-e ‘$anewrelic.distributed_tracing_enabled=true’ \
$(php -r “echo(PHP_CONFIG_FILE_SCAN_DIR);”)/newrelic.ini
/etc/phpX.Y-sp/conf.d/newrelic.ini. This is where you can edit and add your New Relic license key, if required.
REPLACE_WITH_REAL_KEY = go to new relic account settings and get the one.
Accounts settings” page at https://rpm.newrelic.com/accounts/(YOUR_ACCOUNT_NO)
INGEST – LICENSE
License Key for Account 3034122