Files
cosma-qc/docs/_build/html/usage.html

285 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Utilisation &mdash; cosma-qc 1.0 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=9edc463e" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=f2a433a1"></script>
<script src="_static/doctools.js?v=fd6eb6e6"></script>
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="Données — Stockage et budget disque" href="data.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
cosma-qc
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contenu</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="pipeline.html">Pipeline cosma-qc</a></li>
<li class="toctree-l1"><a class="reference internal" href="infrastructure.html">Infrastructure</a></li>
<li class="toctree-l1"><a class="reference internal" href="data.html">Données — Stockage et budget disque</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Utilisation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#ingerer-une-nouvelle-acquisition">Ingérer une nouvelle acquisition</a></li>
<li class="toctree-l2"><a class="reference internal" href="#surveiller-les-jobs">Surveiller les jobs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#dashboard-web">Dashboard web</a></li>
<li class="toctree-l3"><a class="reference internal" href="#logs-dispatcher">Logs dispatcher</a></li>
<li class="toctree-l3"><a class="reference internal" href="#base-de-donnees">Base de données</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#visualiser-un-nuage-de-points-ply">Visualiser un nuage de points PLY</a></li>
<li class="toctree-l2"><a class="reference internal" href="#telecharger-un-glb">Télécharger un GLB</a></li>
<li class="toctree-l2"><a class="reference internal" href="#relancer-un-job-echoue">Relancer un job échoué</a></li>
<li class="toctree-l2"><a class="reference internal" href="#redemarrer-le-pipeline-complet">Redémarrer le pipeline complet</a></li>
<li class="toctree-l2"><a class="reference internal" href="#verifications-rapides-post-mission">Vérifications rapides post-mission</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">cosma-qc</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Utilisation</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/usage.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="utilisation">
<h1>Utilisation<a class="headerlink" href="#utilisation" title="Link to this heading"></a></h1>
<section id="ingerer-une-nouvelle-acquisition">
<h2>Ingérer une nouvelle acquisition<a class="headerlink" href="#ingerer-une-nouvelle-acquisition" title="Link to this heading"></a></h2>
<ol class="arabic simple">
<li><p>Connecter le SSD GoPro à z620 (ou sassurer que les MP4 sont dans <code class="docutils literal notranslate"><span class="pre">/mnt/portablessd</span></code>).</p></li>
<li><p>Lancer lingest depuis core :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ssh<span class="w"> </span>floppyrj45@192.168.0.82
<span class="nb">cd</span><span class="w"> </span>/home/floppyrj45/docker/cosma-qc
python3<span class="w"> </span>scripts/ingest.py<span class="w"> </span>--path<span class="w"> </span>/mnt/portablessd/AUV009/
</pre></div>
</div>
<ol class="arabic simple" start="3">
<li><p>Vérifier les jobs créés :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python3<span class="w"> </span>-c<span class="w"> </span><span class="s2">&quot;</span>
<span class="s2">import sqlite3</span>
<span class="s2">conn = sqlite3.connect(&#39;cosma-qc.db&#39;)</span>
<span class="s2">for row in conn.execute(&#39;SELECT id, auv, gopro, segment, status FROM jobs ORDER BY id&#39;):</span>
<span class="s2"> print(row)</span>
<span class="s2">conn.close()</span>
<span class="s2">&quot;</span>
</pre></div>
</div>
<ol class="arabic simple" start="4">
<li><p>Le dispatcher prend automatiquement en charge les jobs en statut <code class="docutils literal notranslate"><span class="pre">pending</span></code>.</p></li>
</ol>
</section>
<section id="surveiller-les-jobs">
<h2>Surveiller les jobs<a class="headerlink" href="#surveiller-les-jobs" title="Link to this heading"></a></h2>
<section id="dashboard-web">
<h3>Dashboard web<a class="headerlink" href="#dashboard-web" title="Link to this heading"></a></h3>
<p>Accéder au dashboard : <a class="reference external" href="http://192.168.0.82:3849">http://192.168.0.82:3849</a></p>
<p>Il affiche en temps réel :</p>
<ul class="simple">
<li><p>Statut de chaque job (pending / running / done / failed)</p></li>
<li><p>Worker assigné</p></li>
<li><p>Progression des frames</p></li>
<li><p>Liens vers les PLY et GLB</p></li>
</ul>
</section>
<section id="logs-dispatcher">
<h3>Logs dispatcher<a class="headerlink" href="#logs-dispatcher" title="Link to this heading"></a></h3>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Logs temps réel</span>
sudo<span class="w"> </span>journalctl<span class="w"> </span>-u<span class="w"> </span>cosma-qc-dispatcher<span class="w"> </span>-f
<span class="c1"># Logs des 100 dernières lignes</span>
sudo<span class="w"> </span>journalctl<span class="w"> </span>-u<span class="w"> </span>cosma-qc-dispatcher<span class="w"> </span>-n<span class="w"> </span><span class="m">100</span>
<span class="c1"># Filtrer erreurs</span>
sudo<span class="w"> </span>journalctl<span class="w"> </span>-u<span class="w"> </span>cosma-qc-dispatcher<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-i<span class="w"> </span>error
</pre></div>
</div>
</section>
<section id="base-de-donnees">
<h3>Base de données<a class="headerlink" href="#base-de-donnees" title="Link to this heading"></a></h3>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># État global des jobs</span>
sqlite3<span class="w"> </span>/home/floppyrj45/docker/cosma-qc/cosma-qc.db<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;SELECT id, auv, status, worker, updated_at FROM jobs ORDER BY id;&quot;</span>
<span class="c1"># Jobs en cours</span>
sqlite3<span class="w"> </span>cosma-qc.db<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;SELECT id, auv, worker FROM jobs WHERE status=&#39;running&#39;;&quot;</span>
<span class="c1"># Jobs échoués</span>
sqlite3<span class="w"> </span>cosma-qc.db<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;SELECT id, auv, status FROM jobs WHERE status=&#39;failed&#39;;&quot;</span>
</pre></div>
</div>
</section>
</section>
<section id="visualiser-un-nuage-de-points-ply">
<h2>Visualiser un nuage de points PLY<a class="headerlink" href="#visualiser-un-nuage-de-points-ply" title="Link to this heading"></a></h2>
<p>Sur le worker avec viewer Viser (lancé automatiquement pendant reconstruction) :</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Naviguer vers (remplacer ID par le numéro de job)</span>
http://192.168.0.84:8100<span class="w"> </span><span class="c1"># pour job 0</span>
http://192.168.0.84:8101<span class="w"> </span><span class="c1"># pour job 1</span>
<span class="c1"># etc.</span>
</pre></div>
</div>
<p>Avec CloudCompare depuis un PC (si PLY téléchargé) :</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Copier le PLY vers PC</span>
scp<span class="w"> </span>floppyrj45@192.168.0.84:/cosma-qc-frames/job_ID/reconstruction.ply<span class="w"> </span>./
<span class="c1"># Ouvrir dans CloudCompare</span>
</pre></div>
</div>
</section>
<section id="telecharger-un-glb">
<h2>Télécharger un GLB<a class="headerlink" href="#telecharger-un-glb" title="Link to this heading"></a></h2>
<ol class="arabic simple">
<li><p>Générer le GLB via lAPI :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>http://192.168.0.82:3849/jobs/ID/export_glb
</pre></div>
</div>
<ol class="arabic simple" start="2">
<li><p>Attendre la fin de la génération (peut prendre quelques minutes selon la taille du PLY).</p></li>
<li><p>Lancer le serveur HTTP sur le worker concerné :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ssh<span class="w"> </span>floppyrj45@192.168.0.84<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;nohup python3 -m http.server 8300 --directory /cosma-qc-frames &gt; /tmp/http8300.log 2&gt;&amp;1 &amp;&quot;</span>
</pre></div>
</div>
<ol class="arabic simple" start="4">
<li><p>Télécharger :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span>http://192.168.0.84:8300/job_ID/reconstruction.glb
</pre></div>
</div>
<ol class="arabic simple" start="5">
<li><p>Arrêter le serveur HTTP après téléchargement :</p></li>
</ol>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ssh<span class="w"> </span>floppyrj45@192.168.0.84<span class="w"> </span><span class="s2">&quot;pkill -f &#39;http.server 8300&#39;&quot;</span>
</pre></div>
</div>
</section>
<section id="relancer-un-job-echoue">
<h2>Relancer un job échoué<a class="headerlink" href="#relancer-un-job-echoue" title="Link to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Remettre un job en pending</span>
sqlite3<span class="w"> </span>/home/floppyrj45/docker/cosma-qc/cosma-qc.db<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;UPDATE jobs SET status=&#39;pending&#39;, worker=NULL WHERE id=ID;&quot;</span>
<span class="c1"># Supprimer les marqueurs .done pour forcer ré-extraction complète</span>
ssh<span class="w"> </span>floppyrj45@192.168.0.84<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">&quot;rm -f /cosma-qc-frames/job_ID/.video_*.done&quot;</span>
<span class="c1"># Redémarrer le dispatcher si nécessaire</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>restart<span class="w"> </span>cosma-qc-dispatcher
</pre></div>
</div>
<p>Le dispatcher reprend le job au prochain cycle.</p>
</section>
<section id="redemarrer-le-pipeline-complet">
<h2>Redémarrer le pipeline complet<a class="headerlink" href="#redemarrer-le-pipeline-complet" title="Link to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Arrêter</span>
sudo<span class="w"> </span>systemctl<span class="w"> </span>stop<span class="w"> </span>cosma-qc-dispatcher
docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>/home/floppyrj45/docker/cosma-qc/docker-compose.yml<span class="w"> </span>down
<span class="c1"># Démarrer</span>
docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>/home/floppyrj45/docker/cosma-qc/docker-compose.yml<span class="w"> </span>up<span class="w"> </span>-d
sudo<span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span>cosma-qc-dispatcher
</pre></div>
</div>
</section>
<section id="verifications-rapides-post-mission">
<h2>Vérifications rapides post-mission<a class="headerlink" href="#verifications-rapides-post-mission" title="Link to this heading"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># 1. Tous les jobs done ?</span>
sqlite3<span class="w"> </span>cosma-qc.db<span class="w"> </span><span class="s2">&quot;SELECT COUNT(*) FROM jobs WHERE status != &#39;done&#39;;&quot;</span>
<span class="c1"># Doit retourner 0</span>
<span class="c1"># 2. Tous les PLY présents ?</span>
<span class="k">for</span><span class="w"> </span>id<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">$(</span>sqlite3<span class="w"> </span>cosma-qc.db<span class="w"> </span><span class="s2">&quot;SELECT id FROM jobs WHERE status=&#39;done&#39;&quot;</span><span class="k">)</span><span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="nv">worker</span><span class="o">=</span><span class="k">$(</span>sqlite3<span class="w"> </span>cosma-qc.db<span class="w"> </span><span class="s2">&quot;SELECT worker FROM jobs WHERE id=</span><span class="nv">$id</span><span class="s2">&quot;</span><span class="k">)</span>
<span class="w"> </span>ssh<span class="w"> </span>floppyrj45@<span class="nv">$worker</span><span class="w"> </span><span class="s2">&quot;ls -lh /cosma-qc-frames/job_</span><span class="si">${</span><span class="nv">id</span><span class="si">}</span><span class="s2">/reconstruction.ply&quot;</span>
<span class="k">done</span>
<span class="c1"># 3. Espace disque OK ?</span>
ssh<span class="w"> </span>floppyrj45@192.168.0.84<span class="w"> </span><span class="s2">&quot;df -h /cosma-qc-frames&quot;</span>
ssh<span class="w"> </span>floppyrj45@192.168.0.87<span class="w"> </span><span class="s2">&quot;df -h /cosma-qc-frames&quot;</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="data.html" class="btn btn-neutral float-left" title="Données — Stockage et budget disque" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright .</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>