{"id":80621,"date":"2020-05-07T13:42:58","date_gmt":"2020-05-07T11:42:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka"},"modified":"2021-02-15T18:59:29","modified_gmt":"2021-02-15T16:59:29","slug":"sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka","title":{"rendered":"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3 id=\"opisanie\">Descripci\u00f3n<\/h3>\n<p><strong>Sentry<\/strong> \u2014 herramienta de monitoreo de excepciones (exception), errores en sus aplicaciones.<\/p>\n<p><strong>Principales caracter\u00edsticas:<\/strong><\/p>\n<ul>\n<li>se integra f\u00e1cilmente en el proyecto,<\/li>\n<li>captura errores tanto en el navegador del usuario como en su servidor.<\/li>\n<li>Es gratuito,<\/li>\n<li>La lista de errores se actualiza en tiempo real,<\/li>\n<li>Si un error se marc\u00f3 como resuelto y aparece nuevamente, se vuelve a generar y se tendr\u00e1 en cuenta en un hilo separado,<\/li>\n<li>Los errores se agrupan y se muestran en orden de frecuencia de aparici\u00f3n,<\/li>\n<li>Los errores se pueden filtrar por estados, fuente de registro, nivel de registro, nombre del servidor, etc.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p>Comparaci\u00f3n con los registros ELK: <strong>lo m\u00e1s importante es que en ELK cada nuevo registro del mismo tipo es una entrada separada, mientras que en Sentry cada nueva excepci\u00f3n del mismo tipo es solo +1 al conteo de su entrada.<\/strong><\/p>\n<p>Sentry admite la mayor\u00eda de los lenguajes de programaci\u00f3n. M\u00e1s informaci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/sentry.io\/platforms\/\">aqu\u00ed<\/a><\/noindex>.<\/p>\n<h3 id=\"zapusk-sentry-s-pomoschyu-docker-i-docker-compose\">Ejecutar Sentry usando docker y docker-compose<\/h3>\n<p>Puede ejecutar Sentry mediante docker y docker-compose como se describe aqu\u00ed: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/getsentry\/onpremise\">https:\/\/github.com\/getsentry\/onpremise<\/a><\/noindex>. Pero el script ejecuta en este mismo servidor en modo \u00fanico (sin tolerancia a fallos) servicios adicionales (Para la versi\u00f3n Sentry 10.0.0):<\/p>\n<ul>\n<li>data<\/li>\n<li>postgres<\/li>\n<li>redis<\/li>\n<li>zookeeper<\/li>\n<li>kafka<\/li>\n<li>clickhouse<\/li>\n<li>symbolicator<\/li>\n<\/ul>\n<p>Si necesita tolerancia a fallos, deber\u00e1 usar ya sea un producto en la nube planificado o instalar Sentry sin este script.<\/p>\n<p>En esta publicaci\u00f3n se describe el proceso de construcci\u00f3n de Sentry y sus dependencias en rpm. Si necesita instalar Sentry donde no hay internet, puede crear un repositorio yum a partir de los rpm obtenidos.<\/p>\n<h3 id=\"vazhnoe-utochenie-po-sborke-i-ustanovke-paketov\">Aclaraci\u00f3n importante sobre la construcci\u00f3n e instalaci\u00f3n de paquetes<\/h3>\n<p>Algunos paquetes dependen entre s\u00ed. Por lo tanto, el proceso de construcci\u00f3n e instalaci\u00f3n se divide en varias etapas.<\/p>\n<h4 id=\"todo\">TODO:<\/h4>\n<p>En esta publicaci\u00f3n se trata de la construcci\u00f3n e instalaci\u00f3n de Sentry versi\u00f3n 9.1.2. Despu\u00e9s de que los desarrolladores lancen un par de versiones menores, se puede construir la versi\u00f3n Sentry 10.X.Y. Muchos de los \u00faltimos commits en master son fixes (correcciones).<\/p>\n<h3 id=\"trebovaniya-k-serveru-dlya-sborki-rpm\">Requisitos del servidor para construir rpm<\/h3>\n<p>Cuanto m\u00e1s CPU haya, m\u00e1s r\u00e1pida ser\u00e1 la construcci\u00f3n de los paquetes semaphore y symbolic.<\/p>\n<h3 id=\"vyklyuchaem-selinux\">Desactivamos Selinux<\/h3>\n<p>La comunidad solo estar\u00e1 a favor si alguien escribe pol\u00edticas de selinux para Sentry.<\/p>\n<pre><code class=\"plaintext\">sudo sed -i s\\\/^SELINUX=.*$\\\/SELINUX=disabled\\\/ \\\/etc\\\/selinux\\\/config\nsudo reboot<\/code><\/pre>\n<h3 id=\"podklyuchaem-repozitoriy-epel-release\">Conectamos el repositorio epel-release<\/h3>\n<pre><code class=\"plaintext\">sudo yum install -y epel-release git<\/code><\/pre>\n<h3 id=\"sobiraem-v-rpm-pip-zavisimosti-i-ustanavlivaem-ih-fayl-1general_dependenciessh\">Recopilamos en rpm las dependencias de pip e instalamos. Archivo 1general_dependencies.sh<\/h3>\n<pre><code class=\"plaintext\">echo \"Instalar dependencias\"\nsudo yum install -y cargo gcc gcc-c++ libffi-devel libjpeg-devel libxml2-devel \nlibxslt libxslt-devel make mc openssl-devel python-devel memcached \npython-lxml python-nose python2-pip python34 rpm-build rpmdevtools \nruby-devel rubygems zlib-devel redis xmlsec1-openssl xmlsec1 \nlibtool-ltdl-devel xmlsec1-devel xmlsec1-openssl-devel openldap-devel\n\necho \"Construir dependencias comunes de pip para rpm usando fpm\"\ngem install --no-document fpm\necho \"Para chardet==3.0.2 se necesita setuptools&gt;=12\"\necho \"Para cryptography==2.8 se necesita setuptools&gt;=18.5\"\nfpm -s python -t rpm setuptools==18.5\nsudo yum install -y python-setuptools-18.5-1.noarch.rpm\nfpm -s python -t rpm --name python2-pip pip==20.0.2\nsudo yum install -y python2-pip-20.0.2-1.noarch.rpm<\/code><\/pre>\n<h3 id=\"ustanavlivaem-i-zapuskaem-postgresql-96-dlya-sborki-python-psycopg2-binary-fayl-2psycopg2-binarysh\">Instalamos y ejecutamos PostgreSQL 9.6 para compilar python-psycopg2-binary. Archivo 2psycopg2-binary.sh<\/h3>\n<p>Puede cambiar la versi\u00f3n de PostgreSQL en el script.<\/p>\n<pre><code class=\"plaintext\">sudo yum install -y postgresql-devel\nfpm -s python -t rpm psycopg2-binary==2.7.7\nsudo yum install -y python-psycopg2-binary-2.7.7-1.x86_64.rpm\nsudo yum remove -y postgresql-devel postgresql postgresql-libs<\/code><\/pre>\n<h3 id=\"sobiraem-i-ustanavlivaem-python-dateutil-rpm-fayl-3dateutilsh\">Compilamos e instalamos rpm de python-dateutil. Archivo 3dateutil.sh<\/h3>\n<pre><code class=\"plaintext\">#!\/bin\/bash\n\necho \"Build and install python-dateutil rpm\"\nmkdir -p ~\/rpmbuild\/{BUILD,RPMS,SOURCES,SRPMS,SPECS}\nspectool -g -R spec\/python-dateutil.spec\nwget https:\/\/raw.githubusercontent.com\/patsevanton\/sentry-rpm\/master\/spec\/python-dateutil-system-zoneinfo.patch -P ~\/rpmbuild\/SOURCES\nwget https:\/\/raw.githubusercontent.com\/patsevanton\/sentry-rpm\/master\/spec\/python-dateutil-timelex-string.patch -P ~\/rpmbuild\/SOURCES\nrpmbuild --bb spec\/python-dateutil.spec\nsudo yum install -y ~\/rpmbuild\/RPMS\/noarch\/python-dateutil-2.4.2-1.el7.noarch.rpm<\/code><\/pre>\n<h3 id=\"sobiraem-i-ustanavlivaem-python-urllib3-rpm-fayl-4urllib3sh\">Compilamos e instalamos rpm de python-urllib3. Archivo 4urllib3.sh<\/h3>\n<p><b class=\"spoiler_title\">T\u00edtulo del spoiler<\/b><\/p>\n<pre><code class=\"plaintext\">echo \"Construir dependencias de pip para rpm usando fpm para urllib3\"\nfpm -s python -t rpm pycparser==2.19\nsudo yum install -y python-pycparser-2.19-1.noarch.rpm\nfpm -s python -t rpm cffi==1.14.0\nsudo yum install -y python-cffi-1.14.0-1.x86_64.rpm\nfpm -s python -t rpm cryptography==2.8\nsudo yum install -y python-cryptography-2.8-1.x86_64.rpm\nfpm -s python -t rpm idna==2.7\nsudo yum install -y python-idna-2.7-1.noarch.rpm\nsudo chmod +r \/usr\/lib\/python2.7\/site-packages\/idna-2.7-py2.7.egg-info\/PKG-INFO\nfpm -s python -t rpm pyOpenSSL==19.1.0\nsudo yum install -y python-pyopenssl-19.1.0-1.noarch.rpm\nfpm -s python -t rpm pbr==5.4.4\nsudo yum install -y python-pbr-5.4.4-1.noarch.rpm\nfpm -s python -t rpm mock==2.0.0\nsudo yum install -y python-mock-2.0.0-1.noarch.rpm\nfpm -s python -t rpm py==1.8.1\nsudo yum install -y python-py-1.8.1-1.noarch.rpm\nfpm -s python -t rpm six==1.10.0\nsudo yum install -y python-six-1.10.0-1.noarch.rpm\nfpm -s python -t rpm pluggy==0.6.0\nsudo yum install -y python-pluggy-0.6.0-1.noarch.rpm\nfpm -s python -t rpm attrs==19.3.0\nsudo yum install -y python-attrs-19.3.0-1.noarch.rpm\nfpm -s python -t rpm more-itertools==5.0.0\nsudo yum install -y python-more-itertools-5.0.0-1.noarch.rpm\nfpm -s python -t rpm pytest==3.5.1\nsudo yum install -y python-pytest-3.5.1-1.noarch.rpm\n\necho \"Construir rpm de urllib\"\nspectool -g -R spec\/urllib3-1.24.2.spec\nsudo yum-builddep -y spec\/urllib3-1.24.2.spec\nrpmbuild --bb spec\/urllib3-1.24.2.spec\nsudo yum install -y ~\/rpmbuild\/RPMS\/noarch\/python-urllib3-1.24.2-1.el7.noarch.rpm<\/code><\/pre>\n<h3 id=\"sobiraem-v-rpm-ostalnye-pip-zavisimosti-i-ustanavlivaem-ih-fayl-5other_dependenciessh\">Compilamos en rpm las dem\u00e1s dependencias de pip y las instalamos. Archivo 5other_dependencies.sh<\/h3>\n<p><b class=\"spoiler_title\">T\u00edtulo del spoiler<\/b><\/p>\n<pre><code class=\"plaintext\">echo \"Construir rpm con fpm\"\nfpm -s python -t rpm jmespath==0.9.5\nsudo yum install -y python-jmespath-0.9.5-1.noarch.rpm\nfpm -s python -t rpm amqp==1.4.9\nsudo yum install -y python-amqp-1.4.9-1.noarch.rpm\nfpm -s python -t rpm anyjson==0.3.3\nsudo yum install -y python-anyjson-0.3.3-1.noarch.rpm\nfpm -s python -t rpm billiard==3.3.0.23\nsudo yum install -y python-billiard-3.3.0.23-1.x86_64.rpm\nfpm -s python -t rpm docutils==0.16\nsudo yum install -y python-docutils-0.16-1.noarch.rpm\nfpm -s python -t rpm Pillow==4.2.1\nsudo yum install -y python-pillow-4.2.1-1.x86_64.rpm\nfpm -s python -t rpm botocore==1.5.70\nsudo yum install -y python-botocore-1.5.70-1.noarch.rpm\nfpm -s python -t rpm boto3==1.4.5\nsudo yum install -y python-boto3-1.4.5-1.noarch.rpm\nfpm -s python -t rpm chardet==3.0.2\nsudo yum install -y python-chardet-3.0.2-1.noarch.rpm\nfpm -s python -t rpm croniter==0.3.31\nsudo yum install -y python-croniter-0.3.31-1.noarch.rpm\nfpm -s python -t rpm cssselect==1.1.0\nsudo yum install -y python-cssselect-1.1.0-1.noarch.rpm\nfpm -s python -t rpm cssutils==0.9.10\nsudo yum install -y python-cssutils-0.9.10-1.noarch.rpm\nfpm -s python -t rpm django-crispy-forms==1.4.0\nsudo yum install -y python-django-crispy-forms-1.4.0-1.noarch.rpm\nfpm -s python -t rpm django-jsonfield==0.9.13\nsudo yum install -y python-django-jsonfield-0.9.13-1.noarch.rpm\nfpm -s python -t rpm django-picklefield==0.3.2\nsudo yum install -y python-django-picklefield-0.3.2-1.noarch.rpm\nfpm -s python -t rpm django-sudo==2.1.0\nsudo yum install -y python-django-sudo-2.1.0-1.noarch.rpm\nfpm -s python -t rpm django-templatetag-sugar==1.0\nsudo yum install -y python-django-templatetag-sugar-1.0-1.noarch.rpm\nfpm -s python -t rpm djangorestframework==2.4.8\nsudo yum install -y python-djangorestframework-2.4.8-1.noarch.rpm\nfpm -s python -t rpm email-reply-parser==0.2.0\nsudo yum install -y python-email_reply_parser-0.2.0-1.noarch.rpm\nfpm -s python -t rpm enum34==1.1.9\nsudo yum install -y python-enum34-1.1.9-1.noarch.rpm\nfpm -s python -t rpm functools32==3.2.3.post2\nsudo yum install -y python-functools32-3.2.3_2-1.noarch.rpm\nfpm -s python -t rpm futures==3.3.0\nsudo yum install -y python-futures-3.3.0-1.noarch.rpm\nfpm -s python -t rpm hiredis==0.1.6\nsudo yum install -y python-hiredis-0.1.6-1.x86_64.rpm\nfpm -s python -t rpm honcho==1.0.1\nsudo yum install -y python-honcho-1.0.1-1.noarch.rpm\nfpm -s python -t rpm httplib2==0.17.0\nsudo yum install -y python-httplib2-0.17.0-1.noarch.rpm\nfpm -s python -t rpm jsonschema==2.6.0\nsudo yum install -y python-jsonschema-2.6.0-1.noarch.rpm\nfpm -s python -t rpm kombu==3.0.35\nsudo yum install -y python-kombu-3.0.35-1.noarch.rpm\nfpm -s python -t rpm celery==3.1.18\nsudo yum install -y python-celery-3.1.18-1.noarch.rpm\nfpm -s python -t rpm loremipsum==1.0.5\nsudo yum install -y python-loremipsum-1.0.5-1.noarch.rpm\nfpm -s python -t rpm lxml==4.5.0\nsudo yum install -y python-lxml-4.5.0-1.x86_64.rpm\nfpm -s python -t rpm milksnake==0.1.5\nsudo yum install -y python-milksnake-0.1.5-1.noarch.rpm\nfpm -s python -t rpm mistune==0.8.4\nsudo yum install -y python-mistune-0.8.4-1.noarch.rpm\nfpm -s python -t rpm mmh3==2.3.1\nsudo yum install -y python-mmh3-2.3.1-1.x86_64.rpm\nfpm -s python -t rpm exam==0.10.6\nsudo yum install -y python-exam-0.10.6-1.noarch.rpm\nfpm -s python -t rpm msgpack==0.6.2\nsudo yum install -y python-msgpack-0.6.2-1.x86_64.rpm\nfpm -s python -t rpm oauth2==1.9.0.post1\nsudo yum install -y python-oauth2-1.9.0.post1-1.noarch.rpm\nfpm -s python -t rpm oauthlib==3.1.0\nsudo yum install -y python-oauthlib-3.1.0-1.noarch.rpm\nfpm -s python -t rpm parsimonious==0.8.0\nsudo yum install -y python-parsimonious-0.8.0-1.noarch.rpm\nfpm -s python -t rpm requests==2.20.1\nsudo yum install -y python-requests-2.20.1-1.noarch.rpm\nfpm -s python -t rpm petname==2.0\nsudo yum install -y python-petname-2.0-1.noarch.rpm\nfpm -s python -t rpm python-utils==2.3.0\nsudo yum install -y python-utils-2.3.0-1.noarch.rpm\nfpm -s python -t rpm progressbar2==3.10.1\nsudo yum install -y python-progressbar2-3.10.1-1.noarch.rpm\nfpm -s python -t rpm pytest-django==2.9.1\nsudo yum install -y python-pytest-django-2.9.1-1.noarch.rpm\nfpm -s python -t rpm pytest-html==1.9.0\nsudo yum install -y python-pytest-html-1.9.0-1.noarch.rpm\nfpm -s python -t rpm python-memcached==1.59\nsudo yum install -y python-memcached-1.59-1.noarch.rpm\nfpm -s python -t rpm python-openid==2.2.5\nsudo yum install -y python-openid-2.2.5-1.noarch.rpm\nfpm -s python -t rpm python-u2flib-server==4.0.1\nsudo yum install -y python-u2flib-server-4.0.1-1.noarch.rpm\nfpm -s python -t rpm qrcode==5.3\nsudo yum install -y python-qrcode-5.3-1.noarch.rpm\nfpm -s python -t rpm querystring-parser==1.2.4\nsudo yum install -y python-querystring_parser-1.2.4-1.noarch.rpm\nfpm -s python -t rpm redis==2.10.5\nsudo yum install -y python-redis-2.10.5-1.noarch.rpm\nfpm -s python -t rpm rb==1.7\nsudo yum install -y python-rb-1.7-1.noarch.rpm\nfpm -s python -t rpm redis-py-cluster==1.3.4\nsudo yum install -y python-redis-py-cluster-1.3.4-1.noarch.rpm\nfpm -s python -t rpm requests-oauthlib==0.3.3\nsudo yum install -y python-requests-oauthlib-0.3.3-1.noarch.rpm\nfpm -s python -t rpm percy==2.0.2\nsudo yum install -y python-percy-2.0.2-1.noarch.rpm\nfpm -s python -t rpm selenium==3.141.0\nsudo yum install -y python-selenium-3.141.0-1.noarch.rpm\nfpm -s python -t rpm semaphore==0.4.65\nsudo yum install -y python-semaphore-0.4.65-1.x86_64.rpm\nfpm -s python -t rpm sentry-sdk==0.14.1\nsudo yum install -y python-sentry-sdk-0.14.1-1.noarch.rpm\nfpm -s python -t rpm setproctitle==1.1.10\nsudo yum install -y python-setproctitle-1.1.10-1.x86_64.rpm\nfpm -s python -t rpm simplejson==3.8.2\nsudo yum install -y python-simplejson-3.8.2-1.x86_64.rpm\nfpm -s python -t rpm sqlparse==0.1.19\nsudo yum install -y python-sqlparse-0.1.19-1.noarch.rpm\nfpm -s python -t rpm statsd==3.1\nsudo yum install -y python-statsd-3.1-1.noarch.rpm\nfpm -s python -t rpm strict-rfc3339==0.7\nsudo yum install -y python-strict-rfc3339-0.7-1.noarch.rpm\nfpm -s python -t rpm structlog==16.1.0\nsudo yum install -y python-structlog-16.1.0-1.noarch.rpm\nfpm -s python -t rpm symbolic==6.1.4\nsudo yum install -y python-symbolic-6.1.4-1.x86_64.rpm\nfpm -s python -t rpm toronado==0.0.11\nsudo yum install -y python-toronado-0.0.11-1.noarch.rpm\nfpm -s python -t rpm ua-parser==0.7.3\nsudo yum install -y python-ua-parser-0.7.3-1.noarch.rpm\nfpm -s python -t rpm uwsgi==2.0.18\nsudo yum install -y python-uwsgi-2.0.18-1.noarch.rpm\nfpm -s python -t rpm -n PyYAML pyyaml==3.11\nsudo yum install -y PyYAML-3.11-1.x86_64.rpm\nfpm -s python -t rpm django-auth-ldap==1.2.17\nsudo yum install -y python-django-auth-ldap-1.2.17-1.noarch.rpm<\/code><\/pre>\n<h3 id=\"sobiraem-v-rpm-sentry-i-ustanavlivaem-ego-fayl-6sentrysh\">Configuramos rpm sentry e instalamos. Archivo 6sentry.sh<\/h3>\n<pre><code class=\"plaintext\">echo \"Instalar nodejs y yarn\"\ncurl -sL https:\/\/rpm.nodesource.com\/setup_10.x | sudo bash -\nsudo yum install -y nodejs\nsudo sed -e '\/nodesource-source\/+6d' -i \/etc\/yum.repos.d\/nodesource-el7.repo\ncurl -sL https:\/\/dl.yarnpkg.com\/rpm\/yarn.repo | sudo tee \/etc\/yum.repos.d\/yarn.repo\nsudo yum install -y yarn\n\ncp spec\/config.yml spec\/sentry.conf.py ~\/rpmbuild\/SOURCES\ncp spec\/sentry-cron.service spec\/sentry-web.service spec\/sentry-worker.service ~\/rpmbuild\/SOURCES\nspectool -g spec\/sentry-9.1.2.spec\nsudo yum-builddep -y spec\/sentry-9.1.2.spec\nrpmbuild -bb spec\/sentry-9.1.2.spec\nsudo yum install -y ~\/rpmbuild\/RPMS\/noarch\/python-sentry-9.1.2-1.el7.noarch.rpm<\/code><\/pre>\n<h2 id=\"ustanovka-sentry-rpm-s-zavisimostyami-na-drugom-servere\">Instalaci\u00f3n de sentry rpm con dependencias en otro servidor<\/h2>\n<h3 id=\"vyklyuchaem-selinux-1\">Desactivamos Selinux<\/h3>\n<pre><code class=\"plaintext\">sudo sed -i s\/^SELINUX=.*$\/SELINUX=disabled\/ \/etc\/selinux\/config\n#### sudo reboot<\/code><\/pre>\n<h3 id=\"podklyuchaem-repozitoriy-epel-release-1\">Conectamos el repositorio epel-release<\/h3>\n<pre><code class=\"plaintext\">sudo yum install -y epel-release git libjpeg-turbo redis\nsudo systemctl start redis<\/code><\/pre>\n<h4 id=\"ustanavlivaem-i-zapuskaem-postgresql-96-fayl-7postgresqlsh\">Instalamos y iniciamos PostgreSQL 9.6. Archivo 7postgresql.sh<\/h4>\n<pre><code class=\"plaintext\">sudo yum install -y https:\/\/download.postgresql.org\/pub\/repos\/yum\/reporpms\/EL-7-x86_64\/pgdg-redhat-repo-latest.noarch.rpm\nsudo yum install -y postgresql96 postgresql96-server postgresql96-contrib\nsudo \/usr\/pgsql-9.6\/bin\/postgresql96-setup initdb\nsudo systemctl start postgresql-9.6\nsudo -i -u postgres psql -c \"create user sentry with password 'password';\"\nsudo -i -u postgres psql -c \"create database sentry with owner sentry;\"\nsudo -i -u postgres psql -c \"alter role sentry superuser;\"\n\n# TODO: Verificar sin derechos de superusuario para el rol sentry\n#sudo -i -u postgres psql -c \"alter role sentry nosuperuser;\"\n#sudo -i -u postgres psql -c \"CREATE SCHEMA main AUTHORIZATION sentry;\"<\/code><\/pre>\n<h4 id=\"zapuskaem-migraciyu-sozdanie-shemy-bd-i-zapuskaem-servisy-fayl-8start_sentrysh\">Ejecutamos la migraci\u00f3n (creaci\u00f3n del esquema de la base de datos) y hacemos funcionar los servicios. Archivo 8start_sentry.sh<\/h4>\n<pre><code class=\"plaintext\">sudo systemctl start redis\nsudo -i -u sentry \/usr\/bin\/sentry --config \/etc\/sentry\/ upgrade\nsudo systemctl start sentry-worker\nsudo systemctl start sentry-cron\nsudo systemctl start sentry-web<\/code><\/pre>\n<h4 id=\"sozdaem-vnutrennego-administratora-sentry\">Creamos un administrador interno de Sentry<\/h4>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/forum.sentry.io\/t\/noninteractive-first-time-setup-of-user-via-upgrade\/164\">https:\/\/forum.sentry.io\/t\/noninteractive-first-time-setup-of-user-via-upgrade\/164<\/a><\/noindex><\/p>\n<pre><code class=\"plaintext\">sudo -i -u sentry \/usr\/bin\/sentry --config \/etc\/sentry\/ createuser <\/code><\/pre>\n<h3 id=\"sborka-sentry-v-rpm-ustanovka-nastroyka-dlya-lenivyh\">Compilaci\u00f3n de sentry en rpm, instalaci\u00f3n, configuraci\u00f3n para principiantes<\/h3>\n<h4 id=\"vyklyuchaem-selinux-2\">Desactivamos Selinux<\/h4>\n<pre><code class=\"plaintext\">sudo sed -i s\\\/^SELINUX=.*$\\\/SELINUX=disabled\\\/ \\\/etc\\\/selinux\\\/config\nsudo reboot<\/code><\/pre>\n<h4 id=\"zapuskaem-skripty-dlya-sborki-i-ustanovki-sentry\">Ejecutamos los scripts para compilar e instalar sentry<\/h4>\n<pre><code class=\"plaintext\">sudo yum install -y epel-release git\ngit clone https:\/\/github.com\/patsevanton\/sentry-rpm.git\ncd sentry-rpm\n.\/1general_dependencies.sh\n.\/2psycopg2-binary.sh\n.\/3dateutil.sh\n.\/4urllib3.sh\n.\/5other_dependencies.sh\n.\/6sentry.sh\nCopiamos rpm desde rpmbuild\/RPMS y desde la ra\u00edz de sentry-rpm al servidor de destino. Creamos un repositorio yum. Instalamos todos los paquetes rpm compilados.\n.\/7postgresql.sh\n.\/8start_sentry.sh<\/code><\/pre>\n<h4 id=\"sozdaem-vnutrennego-administratora-sentry-1\">Creamos un administrador interno de Sentry<\/h4>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/forum.sentry.io\/t\/noninteractive-first-time-setup-of-user-via-upgrade\/164\">https:\/\/forum.sentry.io\/t\/noninteractive-first-time-setup-of-user-via-upgrade\/164<\/a><\/noindex><\/p>\n<pre><code class=\"plaintext\">sudo -i -u sentry \/usr\/bin\/sentry --config \/etc\/sentry\/ createuser <\/code><\/pre>\n<h3 id=\"testirovanie-otpravki-exception\">Pruebas de env\u00edo de excepciones<\/h3>\n<p>Vamos a hacer pruebas en un proyecto de Java. Descargamos Java y Maven.<\/p>\n<pre><code class=\"plaintext\">sudo yum install -y java-1.8.0-openjdk-devel git\nsudo wget http:\/\/repos.fedorapeople.org\/repos\/dchen\/apache-maven\/epel-apache-maven.repo -O \/etc\/yum.repos.d\/epel-apache-maven.repo\nsudo yum -y install apache-maven\ngit clone https:\/\/github.com\/getsentry\/examples.git\ncd examples\/java\/basic\nmvn compile exec:java<\/code><\/pre>\n<p>Ahora necesitamos ejecutar Java pas\u00e1ndole el SENTRY_DSN<\/p>\n<pre><code class=\"plaintext\">SENTRY_DSN=https:\/\/public:private@host:port\/1 mvn exec:java<\/code><\/pre>\n<p>Ahora necesitamos encontrar el SENTRY_DSN generado por defecto.<\/p>\n<p>Entramos en Sentry. Vamos al proyecto por defecto <code>interno.<\/code><\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/e96517368c38665099f38b5c8daca554.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>o<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/4c32d1648e7a44b52a74f340ba5ebea1.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Vamos a la configuraci\u00f3n del proyecto.<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/66e823df5257057a4be9daa7b40ec75b.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Vamos a Client Keys (DSN).<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/4b954af756eb08acab5e05586357ac1c.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Copiamos el DSN. Este es el SENTRY_DSN.<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/e02d120cfba7d36fa3062542f83213e0.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Ejecutamos Java con este par\u00e1metro.<\/p>\n<pre><code class=\"plaintext\">SENTRY_DSN=http:\/\/633e7361061d4dcaaca53877c4c0e80a@172.26.9.34:9000\/1 mvn exec:java<\/code><\/pre>\n<p>Vemos esta imagen.<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/983320edf8893aaac8fd5f1058d9b998.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p>Si vamos a <code>UnsupportedOperationException<\/code>, veremos informaci\u00f3n extendida.<\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/8403b7b9ac58edd870f6e974ba2df522.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<p><img decoding=\"async\" alt=\"Construcci\u00f3n de sentry y sus dependencias en rpm. Instalaci\u00f3n de sentry desde rpm, configuraci\u00f3n b\u00e1sica\" src=\"\/wp-content\/uploads\/2020\/05\/82311a529e42117e2b615e15369bddb9.jpg\" style=\"display:block;margin: 0 auto;\"><\/p>\n<h4 id=\"sozdal-telegram-chat-po-sentry\">He creado un chat de Telegram sobre Sentry.<\/h4>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/sentry_ru\">https:\/\/t.me\/sentry_ru<\/a><\/noindex><\/p>\n<h4 id=\"v-sleduyuschih-seriyah\">En los pr\u00f3ximos episodios:<\/h4>\n<ul>\n<li>Probar LDAP. Ya tengo el script preparado. <code>9sentry-ldap-auth.sh<\/code><\/li>\n<li>Probar la versi\u00f3n 10.0.X de Sentry despu\u00e9s de que se lancen un par de versiones menores.<\/li>\n<\/ul>\n<h4 id=\"repozitoriy-so-skriptami\">Repositorio con los scripts:<\/h4>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/patsevanton\/sentry-rpm\">https:\/\/github.com\/patsevanton\/sentry-rpm<\/a><\/noindex><\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500632\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Sentry \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (exception), \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438: \u043b\u0435\u0433\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u043b\u043e\u0432\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u0435\u043d, \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u0440\u0435\u0448\u0435\u043d\u043d\u0430\u044f \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u043d\u043e\u0432\u0430, \u0442\u043e \u043e\u043d\u0430 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435, \u041e\u0448\u0438\u0431\u043a\u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80622,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80621","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Sentry \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (exception), \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0431\u043e\u0440\u043a\u0430 sentry \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 rpm. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 sentry \u0438\u0437 rpm, \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Sentry \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (exception), \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-07T11:42:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-02-15T16:59:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Compilaci\u00f3n de Sentry y sus dependencias en rpm. Instalaci\u00f3n de Sentry desde rpm, configuraci\u00f3n b\u00e1sica | ProHoster","description":"Descripci\u00f3n de Sentry: herramienta para monitorear excepciones y errores en sus aplicaciones.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0431\u043e\u0440\u043a\u0430 sentry \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 rpm. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 sentry \u0438\u0437 rpm, \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 | ProHoster","og:description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Sentry \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (exception), \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sborka-sentry-i-ego-zavisimostej-v-rpm-ustanovka-sentry-iz-rpm-bazovaya-nastrojka","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-07T11:42:58+00:00","article:modified_time":"2021-02-15T16:59:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80621","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:14:36","updated":"2022-09-30 12:24:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/80621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=80621"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/80621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/80622"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=80621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=80621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=80621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}