{"id":551,"date":"2026-09-06T01:17:42","date_gmt":"2026-09-06T04:17:42","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-do-nagios\/"},"modified":"2026-09-10T23:07:09","modified_gmt":"2026-09-11T02:07:09","slug":"a-historia-do-nagios","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-nagios\/","title":{"rendered":"The history of Nagios: the saint that became the pager"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro pressionando alerta vermelho no painel Nagios\" src=\"\/wp-content\/uploads\/2026\/09\/nagios-v4.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<p>On March 14, 1999, Ethan Galstad released NetSaint 0.0.1. He thought about a dozen people would care. The thing pinged hosts, ran plugins, sent email and pager alerts when a service went down \u2014 and again when it came back. In 2002 the name became Nagios: \u201cNagios Ain\u2019t Gonna Insist On Sainthood,\u201d hagios = saint, because NetSaint ran into a trademark issue. Twenty-seven years later, Nagios Core 4.5.14 (August 5, 2026) is still GPLv2, still C, still the way an entire generation of Linux admins learned to watch over machines. The handwritten N on the cover is the same crooked design as always.<\/p>\n<p><!-- more --><\/p>\n<h2>1996: a ping in DOS and a pager<\/h2>\n<p>Galstad, in the USA, wrote a small MS-DOS program to ping Novell NetWare servers and trigger numeric pagers. The check and the notification already came from a third-party tool \u2014 the seed of the plugin model. In 1998 he considered hosted monitoring and rewrote it for Linux. In March 1999 he opened the source. The plugins left the tarball shortly afterward and became a separate project: today it is still <code data-no-translation=\"\">nagios-plugins<\/code> \/ Monitoring Plugins. Without that separation \u2014 a simple binary that only schedules, and an army of <code data-no-translation=\"\">check_*<\/code> \u2014 Nagios would not have become a standard.<\/p>\n<h2>2002: the saint that did not insist<\/h2>\n<p>A similar trademark, a lawyer, an agreement. Galstad changed the name anyway. Nagios is pronounced \u201cnah-gee-oss.\u201d The architecture stayed: a C daemon, text files as the source of truth (<code data-no-translation=\"\">nagios.cfg<\/code>, hosts.cfg, services.cfg), Perl\/C CGI on Apache, OK \/ WARNING \/ CRITICAL \/ UNKNOWN states, hard\/soft states, flap detection, per-contact notifications. NRPE to check Linux from the inside. NSCA for passive checks (the host pushes them). Anyone who has manually configured 400 hosts remembers the point: Nagios does not draw graphs. Nagios <em>shouts<\/em>.<\/p>\n<p>In June 2005 it was SourceForge's Project of the Month. In 2006 eWeek put it on its list of enterprise \u201cmust have\u201d tools. There was no company yet. There was Ethan and the mailing list.<\/p>\n<h2>2.0, 3.0, 4.0: NEB, scale, Core<\/h2>\n<p>Nagios 2.0 (February 2006): a new interface and the Event Broker (NEB) \u2014 an API allowing modules to inspect internal structures. NDOUtils came out of that (state in MySQL), followed by what XI and Centreon built on. Nagios 3.0 (March 2008): adaptive monitoring and capacity for large installations. Nagios 4 (2014) rewrote the scheduler: less CPU for the same number of checks.<\/p>\n<p>Around 2007 Galstad founded Nagios Enterprises. Core remained GPLv2. The paid product \u2014 Nagios XI, followed by Log Server, Network Analyzer, Fusion \u2014 stacks interfaces, wizards, reports, and support on top of the same engine. Open core before the trend had a name. In 2024 the company turned 25. XI, Log Server, Analyzer, and Fusion are already on the 2026R1 line. World Conference 2026 is in St. Paul, Minnesota, September 14\u201317, at headquarters.<\/p>\n<h2>The split: Icinga, Naemon, Checkmk<\/h2>\n<p>In 2009 part of the community \u2014 tired of the pace and the dividing line between what was free and what went into XI \u2014 forked it. That created <strong>Icinga<\/strong>. Then came Naemon (2014), a fork of Core 4. Mathias Kettner's Check_MK (now Checkmk) started as a set of plugins and became a product. Centreon, Shinken, Opsview. The plugin API was so simple that the entire ecosystem fits in a <code data-no-translation=\"\">check_disk -w 20% -c 10%<\/code>. The cost: file-based configuration that does not scale without tooling. The solution is <a href=\"\/en\/2026\/09\/a-historia-do-nagiosql\/\">NagiosQL<\/a>.<\/p>\n<h2>What Nagios taught us<\/h2>\n<ul>\n<li>Hosts and services are objects. Dependencies (parents) prevent an alert storm when a switch goes down.<\/li>\n<li>A check is an external process. Any language. Timeout. Exit code 0\/1\/2\/3.<\/li>\n<li>Notifications have time windows, escalation, downtime, and acknowledgement.<\/li>\n<li>The CGI status map \u2014 the little green and red boxes \u2014 is the look of an era. Grafana did not exist.<\/li>\n<\/ul>\n<p>The <a href=\"\/en\/2026\/09\/a-historia-do-zabbix\/\">Zabbix<\/a> took the other route: items in a database, an agent that collects, triggers that evaluate, native graphs. Prometheus, on this blog, is the third way: <a href=\"\/en\/2026\/09\/monitorando-servidores-linux-com-prometheus\/\">pull, metrics, Node Exporter<\/a>.<\/p>\n<h2>2026: Core 4.5.14, XI 2026R1<\/h2>\n<p>Core 4.5.14 came out on August 5, 2026. GitHub <code data-no-translation=\"\">NagiosEnterprises\/nagioscore<\/code>. NRPE 4.x is still the classic way to talk to Linux. Distros package 4.4\/4.5. XI 2026R1.4 gained Nutanix and switch wizards. It is not the engine of the cloud \u2014 Zabbix and Prometheus took that territory \u2014 but in the NOC of a company that already has a thousand <code data-no-translation=\"\">.cfg<\/code>, the N is not going anywhere.<\/p>\n<h2>Nagios in practice, in five minutes<\/h2>\n<p>History aside, the engine still installs and runs with two commands. On Debian or Ubuntu:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo apt update\nsudo apt install nagios4 monitoring-plugins nagios-nrpe-plugin\n<\/code><\/pre>\n<p>The configuration is what the whole series taught us to hate and love: <strong>text files are the source of truth<\/strong>. Everything lives in <code data-no-translation=\"\">\/etc\/nagios4\/<\/code>, and every monitored thing is an object. A new host fits in eight lines:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-text\" data-no-translation=\"\">define host {\n    use             generic-host\n    host_name       servidor-web\n    address         192.168.0.20\n    max_check_attempts  3\n}\n\ndefine service {\n    use                 generic-service\n    host_name           servidor-web\n    service_description Espaco em disco\n    check_command       check_disk!20%!10%!\/\n}\n<\/code><\/pre>\n<p>That <code data-no-translation=\"\">check_disk!20%!10%!\/<\/code> is the soul of the project: Nagios does not know what a disk is. It just calls an external program, passes arguments separated by <code data-no-translation=\"\">!<\/code> and checks the <strong>exit code<\/strong> \u2014 0 is OK, 1 is WARNING, 2 is CRITICAL, 3 is UNKNOWN. Anything that respects that contract becomes a check, in any language:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># rodando um plugin na m\u00e3o, como o daemon faria\n\/usr\/lib\/nagios\/plugins\/check_disk -w 20% -c 10% -p \/\necho $?      # 0 = OK, 1 = WARNING, 2 = CRITICAL, 3 = UNKNOWN\n\n# um \"plugin\" seu funciona igual: escreva o arquivo abaixo em\n# \/usr\/lib\/nagios\/plugins\/check_meu e marque como executavel\n#\n#   #!\/bin\/bash\n#   if pgrep -x meu-daemon &gt;\/dev\/null; then\n#       echo \"OK - rodando\"; exit 0\n#   fi\n#   echo \"CRITICAL - parado\"; exit 2\n\nsudo chmod +x \/usr\/lib\/nagios\/plugins\/check_meu\n\/usr\/lib\/nagios\/plugins\/check_meu; echo $?\n<\/code><\/pre>\n<p>Before reloading, validate \u2014 Nagios refuses to start with a broken configuration, and the validator points to the file and line:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo nagios4 -v \/etc\/nagios4\/nagios.cfg\nsudo systemctl reload nagios4\n<\/code><\/pre>\n<p>To check from inside a remote server \u2014 load, memory, processes, things ping cannot see \u2014 install <strong>NRPE<\/strong> on the target and call it from outside with <code data-no-translation=\"\">check_nrpe<\/code>. That is the active model. When the target is behind NAT or a firewall and needs to initiate communication itself, reverse the flow with <strong>NSCA<\/strong>: the host pushes the result to the server. Two mechanisms, the same exit-code idea.<\/p>\n<h2>Timeline<\/h2>\n<ul>\n<li><strong>1996<\/strong> \u2014 Ethan Galstad writes an MS-DOS program that pings NetWare servers and triggers numeric pagers.<\/li>\n<li><strong>1998<\/strong> \u2014 the idea becomes hosted monitoring and is rewritten for Linux.<\/li>\n<li><strong>14\/03\/1999<\/strong> \u2014 NetSaint 0.0.1 is released as open source.<\/li>\n<li><strong>2002<\/strong> \u2014 a trademark conflict forces a name change: Nagios is born, \u201cNagios Ain\u2019t Gonna Insist On Sainthood.\u201d.<\/li>\n<li><strong>Jun\/2005<\/strong> \u2014 Project of the Month on SourceForge.<\/li>\n<li><strong>Feb\/2006<\/strong> \u2014 Nagios 2.0 introduces the Event Broker (NEB), the API that would pave the way for NDOUtils, XI, and Centreon.<\/li>\n<li><strong>2007<\/strong> \u2014 Galstad founds Nagios Enterprises; Core remains GPLv2 and XI emerges as a paid product.<\/li>\n<li><strong>Mar\/2008<\/strong> \u2014 Nagios 3.0: adaptive monitoring and capacity for large installations.<\/li>\n<li><strong>2009<\/strong> \u2014 part of the community forks the project and creates <strong>Icinga<\/strong>.<\/li>\n<li><strong>2014<\/strong> \u2014 Nagios 4 rewrites the scheduler; around the same time Naemon appears, a fork of Core 4.<\/li>\n<li><strong>2024<\/strong> \u2014 Nagios Enterprises turns 25.<\/li>\n<li><strong>05\/08\/2026<\/strong> \u2014 Nagios Core 4.5.14 is released, still in C and still GPLv2.<\/li>\n<\/ul>\n<h2>Wrap-up<\/h2>\n<p>A ping in DOS, a saint that lost its trademark, and a daemon that only schedules plugins. The next generation forked it. The company made XI. Core, GPLv2, still responds <code data-no-translation=\"\">nagios -v \/etc\/nagios\/nagios.cfg<\/code>. 4.5.14, St. Paul, pager at the beginning, webhook at the end. The underlined N is still crooked on purpose.<\/p>\n<p>The GUI that writes the cfg: <a href=\"\/en\/2026\/09\/a-historia-do-nagiosql\/\">NagiosQL<\/a>. The Latvian rival: <a href=\"\/en\/2026\/09\/a-historia-do-zabbix\/\">Zabbix<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>On March 14, 1999, Ethan Galstad released NetSaint 0.0.1. He thought about a dozen people would care. It pinged hosts, ran plugins, sent email and pager alerts when a service went down \u2014 and again when it recovered. In 2002, the name became Nagios: \u201cNagios Ain\u2019t Gonna Insist On Sainthood,\u201d hagios = saint, \u2026 <a title=\"The history of Nagios: the saint that became the pager\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-nagios\/\" aria-label=\"Read more about A hist\u00f3ria do Nagios: o santo que virou o pager\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,2,111,120],"tags":[250,126,248,249],"class_list":["post-551","post","type-post","status-publish","format-standard","hentry","category-infra","category-linux","category-opensource","category-servidores","tag-icinga","tag-monitoramento","tag-nagios","tag-nrpe"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":1517,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/551\/revisions\/1517"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}