Работа с new relic (newrelic synthetics) и terraform в unix/linux

Установка 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 "[email protected]"
#
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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: