Aller au contenu

Installation de paquets Canopsis sur Red Hat Enterprise Linux 8

Information

Si vous souhaitez réaliser une mise à jour, la procédure est décrite dans le guide de mise à jour.

Cette procédure décrit l'installation de Canopsis en mono-instance à l'aide de paquets RHEL 8. Les binaires sont compilés pour l'architecture x86-64.

L'ensemble des commandes suivantes doivent être réalisées avec l'utilisateur root.

Prérequis

Assurez-vous d'avoir suivi les prérequis réseau et de sécurité, notamment concernant la désactivation de SELinux.

Pour vérifier l'état de SELinux :

sestatus

L'installation nécessite l'ajout de dépôts RPM tiers, ainsi qu'un accès HTTP et HTTPS pour le téléchargement de diverses dépendances. Plus de détails dans la matrice des flux réseau.

Information

Notez que que les versions de MongoDB, RabbitMQ, Redis et TimescaleDB dont l'installation est décrite ici sont les seules validées pour fonctionner avec Canopsis.

Plus de détails sur les prérequis des versions.

Dépendances

Mise à jour système

Assurez-vous que le système est à jour (L'installation sur RHEL 8 suppose que le système est relié à des dépôts à jour de la distribution, et en particulier pas figé dans une ancienne version mineure 8.x.) :

dnf update

Configuration système

Vous pouvez vérifier les limites de ressources systèmes avec la commande suivante :

ulimit -a

Pour appliquer la configuration recommandée par le projet MongoDB, créer le fichier /etc/security/limits.d/mongo.conf :

#<domain>      <type>  <item>         <value>
mongo           soft    fsize           unlimited
mongo           soft    cpu             unlimited
mongo           soft    as              unlimited
mongo           soft    memlock         unlimited
mongo           hard    nofile          64000
mongo           hald    nproc           64000

Désactivez la gestion des Transparent Huge Pages (THP) selon la préconisation MongoDB

echo "[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
[Install]
WantedBy=basic.target
" > /etc/systemd/system/disable-transparent-huge-pages.service
systemctl daemon-reload
systemctl enable --now disable-transparent-huge-pages

Ajout des dépôts tiers

Ajout du dépôt pour PostgreSQL :

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Ajout du dépôt pour MongoDB :

echo '[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
' > /etc/yum.repos.d/mongodb-org-4.4.repo

Ajout du dépôt pour RabbitMQ :

echo '##
## Zero dependency Erlang
##

[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud’s repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

##
## RabbitMQ server
##

[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud’s repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
' > /etc/yum.repos.d/rabbitmq.repo

Ajout du dépôt pour TimescaleDB :

echo '[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/8/$basearch
repo_gpgcheck=1
# TimescaleDB doesn’t sign all its packages
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
' > /etc/yum.repos.d/timescale_timescaledb.repo

Configuration des dépôts

Exécuter les commandes suivantes et vérifier dans les sorties que les dépôts ajoutés sont bien contactés (accepter les cléfs des différents dépôts lorsque demandé) :

dnf makecache
dnf -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang' --enablerepo='rabbitmq_server'

Désactiver le module PostgreSQL (requis pour l'installation de TimescaleDB sur RHEL 8) :

dnf module disable postgresql

Activer le module Nginx 1.20.* :

dnf module disable php
dnf module enable nginx:1.20

Activer le module Redis 6.0.* :

dnf module enable redis:6

Installation

dnf install logrotate socat mongodb-org nginx redis timescaledb-2-postgresql-13-2.7.2 timescaledb-2-loader-postgresql-13-2.7.2
dnf install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server-3.10.11

Pour éviter un upgrade automatique des dépendances de Canopsis, vous pouvez épingler leurs paquets en ajoutant la directive suivante dans le fichier /etc/yum.conf :

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools,nginx,nginx-filesystem,erlang,rabbitmq-server,redis,timescaledb-2-postgresql-13,timescaledb-2-loader-postgresql-13

Ouverture des ports

Pratiquer les ouvertures de ports nécessaires à l'accès au service.

Les commandes données couvrent le cas standard où le pare-feu système firewalld est utilisé, et servent surtout à rappeler les ports ou services à ouvrir. (cf. matrice des flux réseau)

firewall-cmd --add-port=5672/tcp --add-port=15672/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --add-service=redis --permanent
firewall-cmd --reload

Configuration de MongoDB

Rendre l'authentification obligatoire dans le fichier /etc/mongod.conf

security:
  authorization: enabled

Activer et démarrer le service :

systemctl enable --now mongod.service

Se connecter à MongoDB pour créer les utilisateurs root et canopsis :

mongo
> use admin
> db.createUser({user: "root", pwd: "UNMOTDEPASSEFORT", roles: [ { role: "root", db: "admin" }]})
> exit
systemctl restart mongod
mongo -u root -p UNMOTDEPASSEFORT
> use canopsis
> db.createUser({user: "cpsmongo", pwd: "canopsis", roles: [ { role: "dbOwner", db: "canopsis" }, { role: "clusterMonitor", db: "admin"}]})

Configuration de TimescaleDB

Initialiser l'instance PostgreSQL puis initialiser TimescaleDB (cf. documentation de l'outil de règlage de TimescaleDB) :

postgresql-13-setup initdb
timescaledb-tune -yes --pg-config=/usr/pgsql-13/bin/pg_config
echo "timescaledb.telemetry_level=off" >> /var/lib/pgsql/13/data/postgresql.conf

Activer et démarrer le service :

systemctl enable --now postgresql-13.service

Se connecter à l'instance PostgreSQL avec l'identité du superuser postgres :

sudo -u postgres psql

Créer la base de données canopsis et l'utilisateur associé dans l'instance PostgreSQL :

postgres=# CREATE database canopsis;
postgres=# \c canopsis
canopsis=# CREATE EXTENSION IF NOT EXISTS timescaledb;
canopsis=# SET password_encryption = 'scram-sha-256';
canopsis=# CREATE USER cpspostgres WITH PASSWORD 'canopsis';
canopsis=# exit

Configuration de RabbitMQ

Activer et démarrer le service :

systemctl enable --now rabbitmq-server.service

Activer le plugin qui apporte l'interface de management RabbitMQ, puis redémarrer le service :

rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server.service

Créer les objets RabbitMQ (vhost, utilisateur avec les bons droits) utiles à l'application Canopsis :

rabbitmqctl add_vhost canopsis
rabbitmqctl add_user cpsrabbit canopsis
rabbitmqctl set_user_tags cpsrabbit administrator
rabbitmqctl set_permissions --vhost canopsis cpsrabbit '.*' '.*' '.*'

Démarrage de Redis

Activer et démarrer le service :

systemctl enable --now redis

Installation de Canopsis Community ou Pro

Canopsis est disponible dans une édition « Community », open-source et gratuitement accessible à tous, et une édition « Pro », souscription commerciale ajoutant des fonctionnalités supplémentaires. Voyez le site officiel de Canopsis pour en savoir plus.

Notez que l'édition Pro de Canopsis était auparavant connue sous le nom de « CAT » et que certains éléments peuvent encore la désigner sous ce nom.

Cliquez sur l'un des onglets « Community » ou « Pro » suivants, en fonction de l'édition choisie.

Ajout du dépôt de paquets Canopsis pour RHEL 8 :

echo "[canopsis]
name = canopsis
baseurl=https://nexus.canopsis.net/repository/canopsis/el8/community/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/canopsis.repo

Installation de l'édition open-source de Canopsis :

dnf makecache
dnf install canopsis

Attention

L'édition Pro nécessite une souscription commerciale.

Ajout des dépôts de paquets Canopsis pour RHEL 8 :

echo "[canopsis]
name = canopsis
baseurl=https://nexus.canopsis.net/repository/canopsis/el8/community/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/canopsis.repo

echo "[canopsis-pro]
name = canopsis-pro
baseurl=https://nexus.canopsis.net/repository/canopsis-pro/el8/pro/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/canopsis-pro.repo

Installation de Canopsis Pro :

dnf makecache
dnf install canopsis-pro

Initialisation de Canopsis

Le fichier de configuration est /opt/canopsis/etc/go-engines-vars.conf, qui est déjà dans l'état attendu :

CPS_MONGO_URL="mongodb://cpsmongo:canopsis@localhost:27017/canopsis"
CPS_AMQP_URL="amqp://cpsrabbit:canopsis@localhost:5672/canopsis"
CPS_POSTGRES_URL="postgresql://cpspostgres:canopsis@localhost:5432/canopsis"
CPS_REDIS_URL="redis://localhost:6379/0"
CPS_API_URL="http://localhost:8082"
CPS_OLD_API_URL="http://localhost:8081"
CPS_POSTGRES_TECH_URL="postgresql://cpspostgres:canopsis@localhost:5432/canopsis_tech_metrics"

Cliquez sur l'un des onglets « Community » ou « Pro » suivants, en fonction de l'édition choisie.

Provisionner Canopsis :

set -o allexport; source /opt/canopsis/etc/go-engines-vars.conf; /opt/canopsis/bin/canopsis-reconfigure -migrate-postgres=true -edition community

Activer et démarrer les services :

systemctl enable --now canopsis-engine-go@engine-action canopsis-engine-go@engine-axe canopsis-engine-go@engine-che.service canopsis-engine-go@engine-fifo.service canopsis-engine-go@engine-pbehavior.service canopsis-engine-go@engine-service.service canopsis-service@canopsis-api.service

Provisionner Canopsis :

set -o allexport; source /opt/canopsis/etc/go-engines-vars.conf; /opt/canopsis/bin/canopsis-reconfigure -migrate-postgres=true -edition pro

Activer et démarrer les services :

systemctl enable --now canopsis-engine-go@engine-action canopsis-engine-go@engine-axe canopsis-engine-go@engine-che.service canopsis-engine-go@engine-correlation.service canopsis-engine-go@engine-dynamic-infos.service canopsis-engine-go@engine-fifo.service canopsis-engine-go@engine-pbehavior.service canopsis-engine-go@engine-service.service canopsis-service@canopsis-api.service canopsis-engine-go@engine-remediation canopsis-engine-go@engine-webhook

Tester un envoi d'alarme :

curl -X POST -u root:root -H "Content-Type: application/json" -d '{
  "event_type": "check",
  "connector": "connector_test_creation_alarmes",
  "connector_name": "test",
  "component": "component_test_creation_alarmes",
  "resource": "resource_test_creation_alarmes",
  "source_type": "resource",
  "author": "QA_canopsis",
  "state": 2,
  "debug": true,
  "output": "Test création alarmes Canopsis"
}' 'http://localhost:8082/api/v4/event'

Lancement de la Web UI de Canopsis

Installer le paquet :

dnf install canopsis-webui

Activer et démarrer Nginx :

systemctl enable --now nginx.service

Une fois cette commande terminée, vous pouvez alors réaliser votre première connexion à l'interface Canopsis.

Si vous souhaitez réaliser une mise à jour, la procédure est décrite dans le Guide de mise à jour.


Dernière mise à jour: 2022-11-17
Retour en haut de la page