MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "compare": {
        "fromid": 1,
        "fromrevid": 1,
        "fromns": 0,
        "fromtitle": "Main Page",
        "toid": 2,
        "torevid": 2,
        "tons": 0,
        "totitle": "Cust1",
        "*": "<tr><td colspan=\"2\" class=\"diff-lineno\" id=\"mw-diff-left-l1\">Line 1:</td>\n<td colspan=\"2\" class=\"diff-lineno\">Line 1:</td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div>&lt;<del class=\"diffchange diffchange-inline\">strong</del>&gt;<del class=\"diffchange diffchange-inline\">MediaWiki has been installed.</del>&lt;/<del class=\"diffchange diffchange-inline\">strong</del>&gt;</div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">Customer 1 runs a small web platform on two hosts: the web host </ins>&lt;<ins class=\"diffchange diffchange-inline\">code</ins>&gt;<ins class=\"diffchange diffchange-inline\">cust1&lt;/code&gt; and the database host &lt;code&gt;db1</ins>&lt;/<ins class=\"diffchange diffchange-inline\">code</ins>&gt;<ins class=\"diffchange diffchange-inline\">.</ins></div></td></tr>\n<tr><td class=\"diff-marker\"></td><td class=\"diff-context diff-side-deleted\"><br></td><td class=\"diff-marker\"></td><td class=\"diff-context diff-side-added\"><br></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div><del class=\"diffchange diffchange-inline\">Consult the [https:</del>//<del class=\"diffchange diffchange-inline\">www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org</del>/<del class=\"diffchange diffchange-inline\">wiki</del>/<del class=\"diffchange diffchange-inline\">Special:MyLanguage</del>/<del class=\"diffchange diffchange-inline\">Help:Contents User's Guide</del>] <del class=\"diffchange diffchange-inline\">for information on using the wiki software.</del></div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">== Hosts ==</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">{| class=\"wikitable\"</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">! Host !! Role !! Agent access</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|-</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">| cust1.gobyl.cc || Website and application || ssh as root, key in OpenBao at &lt;code&gt;secret/customers</ins>/<ins class=\"diffchange diffchange-inline\">cust1&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt;</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|-</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">| db1</ins>.<ins class=\"diffchange diffchange-inline\">gobyl</ins>.<ins class=\"diffchange diffchange-inline\">cc || PostgreSQL database || '''Read-only''': ssh as &lt;code&gt;dbops&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt; (no sudo), key at &lt;code&gt;secret</ins>/<ins class=\"diffchange diffchange-inline\">customers/cust1-db&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt;. See [[Db1]</ins>]</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|}</ins></div></td></tr>\n<tr><td class=\"diff-marker\"></td><td class=\"diff-context diff-side-deleted\"><br></td><td class=\"diff-marker\"></td><td class=\"diff-context diff-side-added\"><br></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div>== <del class=\"diffchange diffchange-inline\">Getting started </del>==</div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>== <ins class=\"diffchange diffchange-inline\">Services on cust1 =</ins>=</div></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div><del class=\"diffchange diffchange-inline\">* [https:</del>//www.<del class=\"diffchange diffchange-inline\">mediawiki.org</del>/<del class=\"diffchange diffchange-inline\">wiki</del>/<del class=\"diffchange diffchange-inline\">Special:MyLanguage</del>/<del class=\"diffchange diffchange-inline\">Manual:Configuration_settings Configuration settings list]</del></div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">{| class</ins>=<ins class=\"diffchange diffchange-inline\">\"wikitable\"</ins></div></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div><del class=\"diffchange diffchange-inline\">* [https</del>://<del class=\"diffchange diffchange-inline\">www</del>.<del class=\"diffchange diffchange-inline\">mediawiki.org</del>/<del class=\"diffchange diffchange-inline\">wiki</del>/<del class=\"diffchange diffchange-inline\">Special:MyLanguage</del>/<del class=\"diffchange diffchange-inline\">Manual:FAQ MediaWiki FAQ]</del></div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">! Service !! How it runs !! Port !! Notes</ins></div></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div>* <del class=\"diffchange diffchange-inline\">[https</del>:/<del class=\"diffchange diffchange-inline\">/lists.wikimedia</del>.<del class=\"diffchange diffchange-inline\">org</del>/<del class=\"diffchange diffchange-inline\">postorius</del>/<del class=\"diffchange diffchange-inline\">lists</del>/<del class=\"diffchange diffchange-inline\">mediawiki-announce</del>.<del class=\"diffchange diffchange-inline\">lists</del>.<del class=\"diffchange diffchange-inline\">wikimedia</del>.<del class=\"diffchange diffchange-inline\">org/ MediaWiki release mailing list]</del></div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|-</ins></div></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div>* <del class=\"diffchange diffchange-inline\">[https</del>://<del class=\"diffchange diffchange-inline\">www</del>.<del class=\"diffchange diffchange-inline\">mediawiki.org</del>/<del class=\"diffchange diffchange-inline\">wiki</del>/<del class=\"diffchange diffchange-inline\">Special:MyLanguage</del>/<del class=\"diffchange diffchange-inline\">Localisation#Translation_resources Localise MediaWiki for your language]</del></div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">| Website || nginx, static files in </ins>/<ins class=\"diffchange diffchange-inline\">var</ins>/www<ins class=\"diffchange diffchange-inline\">/html || 80 || Public trading dashboard with a live platform-telemetry graph</ins>. <ins class=\"diffchange diffchange-inline\">Market data and the telemetry traces are generated in the browser, so the page renders with the application down and the graph is not a measurement of the host</ins></div></td></tr>\n<tr><td class=\"diff-marker\" data-marker=\"\u2212\"></td><td class=\"diff-deletedline diff-side-deleted\"><div>* <del class=\"diffchange diffchange-inline\">[https</del>:<del class=\"diffchange diffchange-inline\">//www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how </del>to <del class=\"diffchange diffchange-inline\">combat spam </del>on <del class=\"diffchange diffchange-inline\">your wiki</del>]</div></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|-</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">| Application || systemd unit &lt;code&gt;nodeapp&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt;, code in </ins>/<ins class=\"diffchange diffchange-inline\">opt</ins>/<ins class=\"diffchange diffchange-inline\">app || 3000 || Account service</ins>: <ins class=\"diffchange diffchange-inline\">serves customer positions from PostgreSQL '''on db1''' as JSON at </ins>/<ins class=\"diffchange diffchange-inline\">api</ins>/<ins class=\"diffchange diffchange-inline\">positions, which the website fetches</ins>. <ins class=\"diffchange diffchange-inline\">Reads config from /opt</ins>/<ins class=\"diffchange diffchange-inline\">app</ins>/<ins class=\"diffchange diffchange-inline\">config.json</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">|}</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">== Operational notes ==</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">* Restart services with &lt;code&gt;systemctl restart nginx|nodeapp&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt;.</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>* <ins class=\"diffchange diffchange-inline\">Application logs</ins>: <ins class=\"diffchange diffchange-inline\">&lt;code&gt;journalctl -u nodeapp&lt;</ins>/<ins class=\"diffchange diffchange-inline\">code&gt;</ins>. <ins class=\"diffchange diffchange-inline\">It exits nonzero if </ins>/<ins class=\"diffchange diffchange-inline\">opt</ins>/<ins class=\"diffchange diffchange-inline\">app</ins>/<ins class=\"diffchange diffchange-inline\">config</ins>.<ins class=\"diffchange diffchange-inline\">json is missing or the database is unreachable</ins>.</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">* The database is PostgreSQL on [[Db1]], port 5432, reachable only from inside the network. If the app reports database errors, check db1 too - but remember this agent may only diagnose there, not change anything</ins>.</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>* <ins class=\"diffchange diffchange-inline\">Disk pressure history</ins>: <ins class=\"diffchange diffchange-inline\">log growth under </ins>/<ins class=\"diffchange diffchange-inline\">var</ins>/<ins class=\"diffchange diffchange-inline\">log has filled the disk before</ins>. <ins class=\"diffchange diffchange-inline\">Safe to delete old files in /var</ins>/<ins class=\"diffchange diffchange-inline\">log</ins>/<ins class=\"diffchange diffchange-inline\">app-debug</ins>/<ins class=\"diffchange diffchange-inline\">.</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>* <ins class=\"diffchange diffchange-inline\">Monitoring</ins>: <ins class=\"diffchange diffchange-inline\">Icinga checks website, nodeapp and disk on cust1, and postgres and disk on db1, from the ops core host</ins>.</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">== Escalation ==</ins></div></td></tr>\n<tr><td colspan=\"2\" class=\"diff-side-deleted\"></td><td class=\"diff-marker\" data-marker=\"+\"></td><td class=\"diff-addedline diff-side-added\"><div><ins class=\"diffchange diffchange-inline\">Before changing anything, check the [[Maintenance calendar]] and open tickets for planned work</ins>. <ins class=\"diffchange diffchange-inline\">If the fix is not obvious or requires data-destructive steps, stop and hand over </ins>to <ins class=\"diffchange diffchange-inline\">the on-call engineer in the Incidents channel. Changes </ins>on <ins class=\"diffchange diffchange-inline\">db1 always require an engineer (or an emergency access grant) - see [[Db1</ins>]<ins class=\"diffchange diffchange-inline\">].</ins></div></td></tr>\n"
    }
}