SlideShare a Scribd company logo
1 of 38
Download to read offline
Hatohol
Technical Brief
for hbstudy
2013/08/30
Project Hatohol
https://github.com/project-hatohol/hatohol
Kazuhiro Yamato
Teruo Oshida
Copyright © 2013 Project Hatohol, All Rights Reserved.
Chapter.2
Hatohol Server
architecture
1 / 13
Hatohol Server
2 / 13
Hatohol Server
An image of Hatohol Server
ZABBIX
Server
Naigos
Naigos
Merged
Data
ZABBIX
Server
3 / 13
Input and Output Intarface of Hatohol Server
Hatohol Server
ZABBIX
Server
Naigos
Merged
Data
ZABBIX API
(json-rpc)
REST + json
(HTTP)
MySQL DB
by NDOUtils
MySQL
Protocol
Other clients can
be connected.
e.g. Android, iOS, and
native Apps.
4 / 13
Internal data flow (rough sketch)
Hatohol Server
ArmZabbixAPI
ArmNagios
NDOUtils
FaceRest
UnifiedData
Store
DBClient
Zabbix
cache
cache
5 / 13
In terms of Database
Hatohol
Server
Zabbix
Server
Nagios
NDOUtils
cache cache
config.
log MySQL
MySQL,
PosgreSQL,
...
MySQL,
PosgreSQL
SQLite3
- Easy use, light, and fast for
the use from one app.
- No need to make backup.
- Important (we cannot lost)
- Possible: HA configuration
6 / 13
In terms of Threads
ArmZabbixAPI
ArmNagios
NDOUtils
FaceRest
UnifiedData
Store
DBClient
Zabbix
main()
GLIB event loop
7 / 13
Data from ZABBIX
zabbix_server
apache
PHP
DB
ArmZabbixAPI
ZABBIX Server
Hatohol Server
libsoup
json-glib
Traffic is small.
(only updated matters)
Hatohol server can handle
many ZABBIX servers8 / 13
Data from ZABBIX
● Call ZABBIX API during periodic intervals
(Polling)
○ Triggers
Current status: over/under threshold ?
○ Events
History of trigger status change
○ Items (all items of all hosts)
■ on-demand taking ver. has been
developed
(turned off by default)
9 / 13
Data from Nagios (NDOUtils)
ndo2db
nagios
MySQL
ndomod
ArmNDOUtils
Hatohol Server
mysqlclient
doesn’t have
save feature
Another
process
Broker
module
10 / 13
Data from Nagios (NDOUtils)
● SQL statement during periodic intervals
(Polling)
○ Triggers (servicestatus)
○ Events (statehistory)
○ Items (servicestatus)
■ on-demand taking ver. has Not been
developed
11 / 13
FaceRest
● Example
○ http://localhost:33194/triggers.json
FaceRest
libsoup
json-glib
{ "apiVersion" : 1, "result" : true, "numberOfTriggers" : 11,
"triggers" : [ { "status" : 0, "severity" : 3, "lastChangeTime" :
1372979757, "serverId" : 2, "hostId" : 1, "brief" : "OK - load
average: 0.03, 0.08, 0.12" }, { "status" : 0, "severity" : 3,
"lastChangeTime" : 1372979797, "serverId" : 2, "hostId" :
1, "brief" : "USERS OK - 0 users currently logged in" }, {
"status" : 0, "severity" : 3, "lastChangeTime" : 1372979877,
"serverId" : 2, "hostId" : 1, "brief" : "HTTP OK: HTTP/1.1
200 OK - 289 bytes in 0.001 second response time" }, {
"status" : 0, "severity" : 3, "lastChangeTime" : 1372979877,
"serverId" : 2, "hostId" : 1, "brief" : "PING OK - Packet loss
= 0%, RTA = 0.04 ms" }, { "status" : 0, "severity" : 3,
"lastChangeTime" : 1372979907, "serverId" : 2, "hostId" :
1, "brief" : "DISK OK - free space: / 46194 MB (96%
inode=98%):" }, ….
12 / 13
Development language
● C++
○ I like it and low-level programming.
○ Fast
○ Flexibility
■ Can manage memory, threads, etc.
■ Fine control
● user system call
● libraries (GLIB, libsoup…)
● system-specific feature
13 / 13
Chapter.3
Hatohol Client
description
1 / 15
menu
OUTLINE
PRIMARY COMPONENTS
FILES around a PAGE
DATASTREAM around BROWSER
PRIMARY ELEMENTS in USERCODE
TEST at SERVER SIDE
2 / 15
Hatohol Client
3 / 15
PRIMARY COMPONENTS
- Django
- web application framework
- for Python
- WSGI compliant
- bootstrap v2
- twitter’s css framework (toolkit)
- jQuery
https://www.djangoproject.com/
http://getbootstrap.com/2.3.2/
http://jquery.com/
4 / 15
5 / 15
FILES around a PAGE
- Django view template base
- Django view template individual html
- library js
- usercode js (written in individual html)
ex. for dashboard page;
$PRJ_HOME/viewer/base_ajax.html
$PRJ_HOME/viewer/dashboard_ajax.html
$PRJ_HOME/static/js/library.js
6 / 15
BLOCKS DEFINED in TEMPLATE BASE (base_ajax.html)
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
<link href="{{ STATIC_URL }}css/bootstrap.css" rel="stylesheet" media="screen"></link>
<link href="{{ STATIC_URL }}css/zabbix.css" rel="stylesheet" media="screen"></link>
<title>
{% block title %}
{% endblock %}
</title>
</head>
<body style="padding-top: 60px">
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<a class="brand">&nbsp;<i>Hatohol</i>&nbsp;</a>
<ul class="nav">
{% block navbar %}
{% endblock %}
</ul>
<div class="pull-right btn-group" id ="sts">
<button class="btn dropdown-toggle btn-info" data-toggle="dropdown">
<span>PREPARE</span>
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>準備中</li>
</ul>
</div>
</div>
</div>
{% block main %}
{% endblock %}
<script src="{{ STATIC_URL }}js/jquery.js"></script>
<script src="{{ STATIC_URL }}js/bootstrap.js"></script>
<script src="{{ STATIC_URL }}js/library.js"></script>
{% block option %}
{% endblock %}
{% block logic %}
{% endblock %}
<div style="text-align: center;">Copyright &copy; 2013 Project Hatohol</div>
</body>
1.title
2.navbar
3.main
4.option
5.logic
7 / 15
Hatohol
Client
①
②
HTTP
REST API on HTTP
・html, css
・js
・image
・json
・browse page:①
・exec js usercode
・$getJSON():②
・draw data
DATA STREAM around BROWSER
Django R.Proxy
(impl w/ Django)
Server
8 / 15
Hatohol
Client
apache R.Proxy
①
②
HTTP
REST API on HTTP
・json
・browse page:①
・exec js usercode
・$getJSON():②
・draw data
DATA STREAM around BROWSER / minimize
Server
be static
pre-compiled
・html, css
・js
・image
9 / 15
PRIMARY ELEMENTS in USERCODE
html objects:
- table
variables:
- raw data (JSON, just returned by Server)
- parsed data
functions:
- parseData()
- drawData()
parseData()
drawData()
raw
data
parsed
data
<table>
:
</table>
$(“#table”).empty()
$(“#table”).append(...);
10 / 15
SAMPLE of RAW DATA (events_ajax.html)
{
apiVersion : 1,
result : true,
numberOfEvents : 2229,
events :
[
{ serverId: 1, hostId: 10084, triggerId: 13520, time: 1368496195,
type: 0, status: 0, severity: 2, brief: "Free disk space is less than 20%" },
{ serverId: 1, hostId: 10084, triggerId: 13498, time: 1368496761,
type: 1, status: 0, severity: 2, brief: "Disk I/O is overloaded" },
{ serverId: 2, hostId: 10061, triggerId: 13681, time: 1359087529,
type: 2, status: 0, severity: 3, brief: "FTP server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13682, time: 1359087530,
type: 2, status: 1, severity: 3, brief: "WEB (HTTP) server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13683, time: 1359087531,
type: 2, status: 1, severity: 3, brief: "IMAP server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13684, time: 1359087532,
type: 2, status: 1, severity: 3, brief: "News (NNTP) server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13685, time: 1359087533,
type: 2, status: 1, severity: 3, brief: "POP3 server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13686, time: 1359087534,
type: 2, status: 0, severity: 3, brief: "Email (SMTP) server is down" },
{ serverId: 2, hostId: 10061, triggerId: 13700, time: 1359087530,
type: 2, status: 0, severity: 4, brief: "Lack of free swap space" },
],
}
11 / 15
12 / 15
{
diffs:
{
1: # serverId
{
13001: # triggerId
{
1359087525: 5, # time and delta of time
1359087530: 10,
1359087540: 99999,
},
13002:
{
1359080912: 99999,
},
},
2:
{
13001:
{
1359087600: 100,
1359087700: 100,
1359087800: 99999,
},
}
},
}
SAMPLE of PARSED DATA (events_ajax.html)
13 / 15
TEST POINT in USERCODE
- input, output of parseData()
- input, output of drawData()
parseData()
drawData()
parsed
data
<table>
:
</table>
raw
data
14 / 15
TEST at SERVER SIDE
EXPERIMENTAL : ON THE commonjs BRANCH
- runnable both Server Side and Client Side
(on Browser)
- run with teajs (oldly called v8cgi)
- CommonJS compliant
- Modules/1.x
- Unit Testing/1.0
- no loader is used
- alt. Django view template directive ‘include’
http://code.google.com/p/teajs/
http://www.commonjs.org/
15 / 15
Chapter.4
Future
Plan
1 / 9
Milestone https://github.com/project-hatohol/hatohol/issues/milestones
2013/09
v.0.1
2013/12
v.0.2
2014/03
v.0.3
- Action framework
- HA configuration (experimental)
- Useful action templates & exampes
- Graph
- Sophisticated UI in WebClient for making actions
Major
features
2 / 9
Action
When ZABBIX/Nagios detect any trouble (condition)
Hatohol => any action
Different kinds of actions: by the combination of
● Server ID (Zabbix server or Nagios ID)
● Host ID
● host group ID
● Trigger ID
● Trigger status (OK or Problem)
● Trigger severity
3 / 9
Hatohol’s Action
● provides two kinds of actions
○ Command (executed by an event)
■ binary, shell script, LL script.
○ Resident (stay as a process)
■ executes a function in the module
by an event.
■ module (developed by)
● C/C++ (shared library)
● Python
4 / 9
Motivation of resident
● To handle complicated condtions
● For example,
○ Send e-mail when a trouble detects
○ Disable sending e-mail for 10min.
■ The times of events should be recorded
○ After 10min. send the number of events
○ The next event should be emailed
○ Send the number of events by e-mail every 60min
It’d better be handled by a program.
But the state is also should be saved.
=> It is difficult for a command
5 / 9
Picture of the resident action mechanism
Hatohol
Server
hatohol-resident-yard
usermodule.so
int num_events;
event_handler()
{
…
}
Connected
with pipe
- Different processes
- No damage
if user module crashes
-Relaunchable
Save a state as variables
Called user written
handler by an event
6 / 9
HA configuration (Under study…)
Zabbix
Server
Zabbix
Server
Nagios
(NDOUtils)
Hatohol
Server
Hatohol
Server HA config.
MySQL
Server
config.
log
Note: Just one idea...
Traffic x2
But not so heavy
7 / 9
Graph (Now no concrete ideas…)
● Basically similar to ZABBIX’s graph ?
○ users can specify duration
○ Shows maximum, minimum, average
● Are there other useful features ?
8 / 9
Hatohol is open source software.
● Please tell us any requirements
● Of course, bug report and bug fix are very
welcome
● Project site (Github)
○ https://github.com/project-hatohol/hatohol
9 / 9

More Related Content

What's hot

Webinar slides: How to Secure MongoDB with ClusterControl
Webinar slides: How to Secure MongoDB with ClusterControlWebinar slides: How to Secure MongoDB with ClusterControl
Webinar slides: How to Secure MongoDB with ClusterControlSeveralnines
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012Roland Bouman
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeWim Godden
 
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев, Михаил Тюр...
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев,  Михаил Тюр...Мастер-класс "Логическая репликация и Avito" / Константин Евтеев,  Михаил Тюр...
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев, Михаил Тюр...Ontico
 
MongoDB Performance Tuning and Monitoring
MongoDB Performance Tuning and MonitoringMongoDB Performance Tuning and Monitoring
MongoDB Performance Tuning and MonitoringMongoDB
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Diagnostics and Debugging
Diagnostics and DebuggingDiagnostics and Debugging
Diagnostics and DebuggingMongoDB
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and PacemakerMarian Marinov
 
Diagnostics & Debugging webinar
Diagnostics & Debugging webinarDiagnostics & Debugging webinar
Diagnostics & Debugging webinarMongoDB
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachFrancis Palma
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Ganglia Monitoring Tool
Ganglia Monitoring ToolGanglia Monitoring Tool
Ganglia Monitoring Toolsudhirpg
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendixColdFusionConference
 
web performance explained to network and infrastructure experts
web performance explained to network and infrastructure expertsweb performance explained to network and infrastructure experts
web performance explained to network and infrastructure expertsBernard Paques
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
BlockChain implementation by python
BlockChain implementation by pythonBlockChain implementation by python
BlockChain implementation by pythonwonyong hwang
 

What's hot (20)

Webinar slides: How to Secure MongoDB with ClusterControl
Webinar slides: How to Secure MongoDB with ClusterControlWebinar slides: How to Secure MongoDB with ClusterControl
Webinar slides: How to Secure MongoDB with ClusterControl
 
Webconfig
WebconfigWebconfig
Webconfig
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев, Михаил Тюр...
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев,  Михаил Тюр...Мастер-класс "Логическая репликация и Avito" / Константин Евтеев,  Михаил Тюр...
Мастер-класс "Логическая репликация и Avito" / Константин Евтеев, Михаил Тюр...
 
MongoDB Performance Tuning and Monitoring
MongoDB Performance Tuning and MonitoringMongoDB Performance Tuning and Monitoring
MongoDB Performance Tuning and Monitoring
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Top Node.js Metrics to Watch
Top Node.js Metrics to WatchTop Node.js Metrics to Watch
Top Node.js Metrics to Watch
 
Diagnostics and Debugging
Diagnostics and DebuggingDiagnostics and Debugging
Diagnostics and Debugging
 
My sql administration
My sql administrationMy sql administration
My sql administration
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and Pacemaker
 
MySQL Proxy tutorial
MySQL Proxy tutorialMySQL Proxy tutorial
MySQL Proxy tutorial
 
Diagnostics & Debugging webinar
Diagnostics & Debugging webinarDiagnostics & Debugging webinar
Diagnostics & Debugging webinar
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Ganglia Monitoring Tool
Ganglia Monitoring ToolGanglia Monitoring Tool
Ganglia Monitoring Tool
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendix
 
web performance explained to network and infrastructure experts
web performance explained to network and infrastructure expertsweb performance explained to network and infrastructure experts
web performance explained to network and infrastructure experts
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
BlockChain implementation by python
BlockChain implementation by pythonBlockChain implementation by python
BlockChain implementation by python
 

Viewers also liked

Hatohol introduction-20130830-hbstudy
Hatohol introduction-20130830-hbstudyHatohol introduction-20130830-hbstudy
Hatohol introduction-20130830-hbstudykoedoyoshida
 
インフラエンジニアのためのプレゼン技術
インフラエンジニアのためのプレゼン技術インフラエンジニアのためのプレゼン技術
インフラエンジニアのためのプレゼン技術koedoyoshida
 
Monitでfirefoxを監視してみた
Monitでfirefoxを監視してみたMonitでfirefoxを監視してみた
Monitでfirefoxを監視してみたkoedoyoshida
 
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Uehara Junji
 
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
 OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー... OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...VirtualTech Japan Inc.
 
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのかRedmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか祐磨 堀
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ祐磨 堀
 

Viewers also liked (8)

Hatohol introduction-20130830-hbstudy
Hatohol introduction-20130830-hbstudyHatohol introduction-20130830-hbstudy
Hatohol introduction-20130830-hbstudy
 
Osc tokyo 2014_0228
Osc tokyo 2014_0228Osc tokyo 2014_0228
Osc tokyo 2014_0228
 
インフラエンジニアのためのプレゼン技術
インフラエンジニアのためのプレゼン技術インフラエンジニアのためのプレゼン技術
インフラエンジニアのためのプレゼン技術
 
Monitでfirefoxを監視してみた
Monitでfirefoxを監視してみたMonitでfirefoxを監視してみた
Monitでfirefoxを監視してみた
 
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418
 
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
 OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー... OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
 
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのかRedmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
 
Dockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバDockerで楽しむ自宅サーバ
Dockerで楽しむ自宅サーバ
 

Similar to Hatohol technical-brief-20130830-hbstudy

10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators  10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators iammutex
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeAman Kohli
 
Monitoring with Syslog and EventMachine (RailswayConf 2012)
Monitoring  with  Syslog and EventMachine (RailswayConf 2012)Monitoring  with  Syslog and EventMachine (RailswayConf 2012)
Monitoring with Syslog and EventMachine (RailswayConf 2012)Wooga
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineWooga
 
Mt logging with_bam
Mt logging with_bamMt logging with_bam
Mt logging with_bamAmani Soysa
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr VronskiyFwdays
 
Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2PgTraining
 
Streaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via StreamingStreaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via StreamingAll Things Open
 
Become a GC Hero
Become a GC HeroBecome a GC Hero
Become a GC HeroTier1app
 
Scalable Socket Server by Aryo
Scalable Socket Server by AryoScalable Socket Server by Aryo
Scalable Socket Server by AryoAgate Studio
 
Open Social Data (Jaca), Alejandro Rivero
Open Social Data (Jaca), Alejandro RiveroOpen Social Data (Jaca), Alejandro Rivero
Open Social Data (Jaca), Alejandro RiveroAragón Open Data
 
Saltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application DeploymentSaltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application Deploymentinovex GmbH
 
Security Monitoring for big Infrastructures without a Million Dollar budget
Security Monitoring for big Infrastructures without a Million Dollar budgetSecurity Monitoring for big Infrastructures without a Million Dollar budget
Security Monitoring for big Infrastructures without a Million Dollar budgetJuan Berner
 
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebAll Things Open
 
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...Hernan Costante
 
MySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comMySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comJean-François Gagné
 
Monitoreo de MySQL y PostgreSQL con SQL
Monitoreo de MySQL y PostgreSQL con SQLMonitoreo de MySQL y PostgreSQL con SQL
Monitoreo de MySQL y PostgreSQL con SQLEmanuel Calvo
 
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...addame
 

Similar to Hatohol technical-brief-20130830-hbstudy (20)

10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators  10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
 
Monitoring with Syslog and EventMachine (RailswayConf 2012)
Monitoring  with  Syslog and EventMachine (RailswayConf 2012)Monitoring  with  Syslog and EventMachine (RailswayConf 2012)
Monitoring with Syslog and EventMachine (RailswayConf 2012)
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachine
 
Mt logging with_bam
Mt logging with_bamMt logging with_bam
Mt logging with_bam
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy
 
Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2
 
Streaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via StreamingStreaming Way to Webscale: How We Scale Bitly via Streaming
Streaming Way to Webscale: How We Scale Bitly via Streaming
 
Become a GC Hero
Become a GC HeroBecome a GC Hero
Become a GC Hero
 
Scalable Socket Server by Aryo
Scalable Socket Server by AryoScalable Socket Server by Aryo
Scalable Socket Server by Aryo
 
Haproxy - zastosowania
Haproxy - zastosowaniaHaproxy - zastosowania
Haproxy - zastosowania
 
Open Social Data (Jaca), Alejandro Rivero
Open Social Data (Jaca), Alejandro RiveroOpen Social Data (Jaca), Alejandro Rivero
Open Social Data (Jaca), Alejandro Rivero
 
Saltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application DeploymentSaltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application Deployment
 
Security Monitoring for big Infrastructures without a Million Dollar budget
Security Monitoring for big Infrastructures without a Million Dollar budgetSecurity Monitoring for big Infrastructures without a Million Dollar budget
Security Monitoring for big Infrastructures without a Million Dollar budget
 
The Art of Grey-Box Attack
The Art of Grey-Box AttackThe Art of Grey-Box Attack
The Art of Grey-Box Attack
 
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
 
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...
Eko10 - Security Monitoring for Big Infrastructures without a Million Dollar ...
 
MySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.comMySQL Parallel Replication by Booking.com
MySQL Parallel Replication by Booking.com
 
Monitoreo de MySQL y PostgreSQL con SQL
Monitoreo de MySQL y PostgreSQL con SQLMonitoreo de MySQL y PostgreSQL con SQL
Monitoreo de MySQL y PostgreSQL con SQL
 
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...
Montreal On Rails 5 : Rails deployment using : Nginx, Mongrel, Mongrel_cluste...
 

More from koedoyoshida

Webcam reset-automation
Webcam reset-automationWebcam reset-automation
Webcam reset-automationkoedoyoshida
 
Inside PyCon JP 2016
Inside PyCon JP 2016Inside PyCon JP 2016
Inside PyCon JP 2016koedoyoshida
 
艦これタイマーシリーズご紹介
艦これタイマーシリーズご紹介艦これタイマーシリーズご紹介
艦これタイマーシリーズご紹介koedoyoshida
 
Pycon JP 2014の裏側
Pycon JP 2014の裏側Pycon JP 2014の裏側
Pycon JP 2014の裏側koedoyoshida
 
Indentとの戦い-艦これOSS便利ツールの紹介-
Indentとの戦い-艦これOSS便利ツールの紹介-Indentとの戦い-艦これOSS便利ツールの紹介-
Indentとの戦い-艦これOSS便利ツールの紹介-koedoyoshida
 
艦これタイマー for firefox addonの拡張
艦これタイマー for firefox addonの拡張艦これタイマー for firefox addonの拡張
艦これタイマー for firefox addonの拡張koedoyoshida
 
USB over RDP over SSH
USB over RDP over SSHUSB over RDP over SSH
USB over RDP over SSHkoedoyoshida
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみたkoedoyoshida
 

More from koedoyoshida (9)

Webcam reset-automation
Webcam reset-automationWebcam reset-automation
Webcam reset-automation
 
Inside PyCon JP 2016
Inside PyCon JP 2016Inside PyCon JP 2016
Inside PyCon JP 2016
 
Dockerの準備
Dockerの準備Dockerの準備
Dockerの準備
 
艦これタイマーシリーズご紹介
艦これタイマーシリーズご紹介艦これタイマーシリーズご紹介
艦これタイマーシリーズご紹介
 
Pycon JP 2014の裏側
Pycon JP 2014の裏側Pycon JP 2014の裏側
Pycon JP 2014の裏側
 
Indentとの戦い-艦これOSS便利ツールの紹介-
Indentとの戦い-艦これOSS便利ツールの紹介-Indentとの戦い-艦これOSS便利ツールの紹介-
Indentとの戦い-艦これOSS便利ツールの紹介-
 
艦これタイマー for firefox addonの拡張
艦これタイマー for firefox addonの拡張艦これタイマー for firefox addonの拡張
艦これタイマー for firefox addonの拡張
 
USB over RDP over SSH
USB over RDP over SSHUSB over RDP over SSH
USB over RDP over SSH
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみた
 

Recently uploaded

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Recently uploaded (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Hatohol technical-brief-20130830-hbstudy

  • 1. Hatohol Technical Brief for hbstudy 2013/08/30 Project Hatohol https://github.com/project-hatohol/hatohol Kazuhiro Yamato Teruo Oshida Copyright © 2013 Project Hatohol, All Rights Reserved.
  • 4. Hatohol Server An image of Hatohol Server ZABBIX Server Naigos Naigos Merged Data ZABBIX Server 3 / 13
  • 5. Input and Output Intarface of Hatohol Server Hatohol Server ZABBIX Server Naigos Merged Data ZABBIX API (json-rpc) REST + json (HTTP) MySQL DB by NDOUtils MySQL Protocol Other clients can be connected. e.g. Android, iOS, and native Apps. 4 / 13
  • 6. Internal data flow (rough sketch) Hatohol Server ArmZabbixAPI ArmNagios NDOUtils FaceRest UnifiedData Store DBClient Zabbix cache cache 5 / 13
  • 7. In terms of Database Hatohol Server Zabbix Server Nagios NDOUtils cache cache config. log MySQL MySQL, PosgreSQL, ... MySQL, PosgreSQL SQLite3 - Easy use, light, and fast for the use from one app. - No need to make backup. - Important (we cannot lost) - Possible: HA configuration 6 / 13
  • 8. In terms of Threads ArmZabbixAPI ArmNagios NDOUtils FaceRest UnifiedData Store DBClient Zabbix main() GLIB event loop 7 / 13
  • 9. Data from ZABBIX zabbix_server apache PHP DB ArmZabbixAPI ZABBIX Server Hatohol Server libsoup json-glib Traffic is small. (only updated matters) Hatohol server can handle many ZABBIX servers8 / 13
  • 10. Data from ZABBIX ● Call ZABBIX API during periodic intervals (Polling) ○ Triggers Current status: over/under threshold ? ○ Events History of trigger status change ○ Items (all items of all hosts) ■ on-demand taking ver. has been developed (turned off by default) 9 / 13
  • 11. Data from Nagios (NDOUtils) ndo2db nagios MySQL ndomod ArmNDOUtils Hatohol Server mysqlclient doesn’t have save feature Another process Broker module 10 / 13
  • 12. Data from Nagios (NDOUtils) ● SQL statement during periodic intervals (Polling) ○ Triggers (servicestatus) ○ Events (statehistory) ○ Items (servicestatus) ■ on-demand taking ver. has Not been developed 11 / 13
  • 13. FaceRest ● Example ○ http://localhost:33194/triggers.json FaceRest libsoup json-glib { "apiVersion" : 1, "result" : true, "numberOfTriggers" : 11, "triggers" : [ { "status" : 0, "severity" : 3, "lastChangeTime" : 1372979757, "serverId" : 2, "hostId" : 1, "brief" : "OK - load average: 0.03, 0.08, 0.12" }, { "status" : 0, "severity" : 3, "lastChangeTime" : 1372979797, "serverId" : 2, "hostId" : 1, "brief" : "USERS OK - 0 users currently logged in" }, { "status" : 0, "severity" : 3, "lastChangeTime" : 1372979877, "serverId" : 2, "hostId" : 1, "brief" : "HTTP OK: HTTP/1.1 200 OK - 289 bytes in 0.001 second response time" }, { "status" : 0, "severity" : 3, "lastChangeTime" : 1372979877, "serverId" : 2, "hostId" : 1, "brief" : "PING OK - Packet loss = 0%, RTA = 0.04 ms" }, { "status" : 0, "severity" : 3, "lastChangeTime" : 1372979907, "serverId" : 2, "hostId" : 1, "brief" : "DISK OK - free space: / 46194 MB (96% inode=98%):" }, …. 12 / 13
  • 14. Development language ● C++ ○ I like it and low-level programming. ○ Fast ○ Flexibility ■ Can manage memory, threads, etc. ■ Fine control ● user system call ● libraries (GLIB, libsoup…) ● system-specific feature 13 / 13
  • 16. menu OUTLINE PRIMARY COMPONENTS FILES around a PAGE DATASTREAM around BROWSER PRIMARY ELEMENTS in USERCODE TEST at SERVER SIDE 2 / 15
  • 18. PRIMARY COMPONENTS - Django - web application framework - for Python - WSGI compliant - bootstrap v2 - twitter’s css framework (toolkit) - jQuery https://www.djangoproject.com/ http://getbootstrap.com/2.3.2/ http://jquery.com/ 4 / 15
  • 20. FILES around a PAGE - Django view template base - Django view template individual html - library js - usercode js (written in individual html) ex. for dashboard page; $PRJ_HOME/viewer/base_ajax.html $PRJ_HOME/viewer/dashboard_ajax.html $PRJ_HOME/static/js/library.js 6 / 15
  • 21. BLOCKS DEFINED in TEMPLATE BASE (base_ajax.html) <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"></meta> <link href="{{ STATIC_URL }}css/bootstrap.css" rel="stylesheet" media="screen"></link> <link href="{{ STATIC_URL }}css/zabbix.css" rel="stylesheet" media="screen"></link> <title> {% block title %} {% endblock %} </title> </head> <body style="padding-top: 60px"> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <a class="brand">&nbsp;<i>Hatohol</i>&nbsp;</a> <ul class="nav"> {% block navbar %} {% endblock %} </ul> <div class="pull-right btn-group" id ="sts"> <button class="btn dropdown-toggle btn-info" data-toggle="dropdown"> <span>PREPARE</span> <span class="caret"></span> </button> <ul class="dropdown-menu"> <li>準備中</li> </ul> </div> </div> </div> {% block main %} {% endblock %} <script src="{{ STATIC_URL }}js/jquery.js"></script> <script src="{{ STATIC_URL }}js/bootstrap.js"></script> <script src="{{ STATIC_URL }}js/library.js"></script> {% block option %} {% endblock %} {% block logic %} {% endblock %} <div style="text-align: center;">Copyright &copy; 2013 Project Hatohol</div> </body> 1.title 2.navbar 3.main 4.option 5.logic 7 / 15
  • 22. Hatohol Client ① ② HTTP REST API on HTTP ・html, css ・js ・image ・json ・browse page:① ・exec js usercode ・$getJSON():② ・draw data DATA STREAM around BROWSER Django R.Proxy (impl w/ Django) Server 8 / 15
  • 23. Hatohol Client apache R.Proxy ① ② HTTP REST API on HTTP ・json ・browse page:① ・exec js usercode ・$getJSON():② ・draw data DATA STREAM around BROWSER / minimize Server be static pre-compiled ・html, css ・js ・image 9 / 15
  • 24. PRIMARY ELEMENTS in USERCODE html objects: - table variables: - raw data (JSON, just returned by Server) - parsed data functions: - parseData() - drawData() parseData() drawData() raw data parsed data <table> : </table> $(“#table”).empty() $(“#table”).append(...); 10 / 15
  • 25. SAMPLE of RAW DATA (events_ajax.html) { apiVersion : 1, result : true, numberOfEvents : 2229, events : [ { serverId: 1, hostId: 10084, triggerId: 13520, time: 1368496195, type: 0, status: 0, severity: 2, brief: "Free disk space is less than 20%" }, { serverId: 1, hostId: 10084, triggerId: 13498, time: 1368496761, type: 1, status: 0, severity: 2, brief: "Disk I/O is overloaded" }, { serverId: 2, hostId: 10061, triggerId: 13681, time: 1359087529, type: 2, status: 0, severity: 3, brief: "FTP server is down" }, { serverId: 2, hostId: 10061, triggerId: 13682, time: 1359087530, type: 2, status: 1, severity: 3, brief: "WEB (HTTP) server is down" }, { serverId: 2, hostId: 10061, triggerId: 13683, time: 1359087531, type: 2, status: 1, severity: 3, brief: "IMAP server is down" }, { serverId: 2, hostId: 10061, triggerId: 13684, time: 1359087532, type: 2, status: 1, severity: 3, brief: "News (NNTP) server is down" }, { serverId: 2, hostId: 10061, triggerId: 13685, time: 1359087533, type: 2, status: 1, severity: 3, brief: "POP3 server is down" }, { serverId: 2, hostId: 10061, triggerId: 13686, time: 1359087534, type: 2, status: 0, severity: 3, brief: "Email (SMTP) server is down" }, { serverId: 2, hostId: 10061, triggerId: 13700, time: 1359087530, type: 2, status: 0, severity: 4, brief: "Lack of free swap space" }, ], } 11 / 15
  • 27. { diffs: { 1: # serverId { 13001: # triggerId { 1359087525: 5, # time and delta of time 1359087530: 10, 1359087540: 99999, }, 13002: { 1359080912: 99999, }, }, 2: { 13001: { 1359087600: 100, 1359087700: 100, 1359087800: 99999, }, } }, } SAMPLE of PARSED DATA (events_ajax.html) 13 / 15
  • 28. TEST POINT in USERCODE - input, output of parseData() - input, output of drawData() parseData() drawData() parsed data <table> : </table> raw data 14 / 15
  • 29. TEST at SERVER SIDE EXPERIMENTAL : ON THE commonjs BRANCH - runnable both Server Side and Client Side (on Browser) - run with teajs (oldly called v8cgi) - CommonJS compliant - Modules/1.x - Unit Testing/1.0 - no loader is used - alt. Django view template directive ‘include’ http://code.google.com/p/teajs/ http://www.commonjs.org/ 15 / 15
  • 31. Milestone https://github.com/project-hatohol/hatohol/issues/milestones 2013/09 v.0.1 2013/12 v.0.2 2014/03 v.0.3 - Action framework - HA configuration (experimental) - Useful action templates & exampes - Graph - Sophisticated UI in WebClient for making actions Major features 2 / 9
  • 32. Action When ZABBIX/Nagios detect any trouble (condition) Hatohol => any action Different kinds of actions: by the combination of ● Server ID (Zabbix server or Nagios ID) ● Host ID ● host group ID ● Trigger ID ● Trigger status (OK or Problem) ● Trigger severity 3 / 9
  • 33. Hatohol’s Action ● provides two kinds of actions ○ Command (executed by an event) ■ binary, shell script, LL script. ○ Resident (stay as a process) ■ executes a function in the module by an event. ■ module (developed by) ● C/C++ (shared library) ● Python 4 / 9
  • 34. Motivation of resident ● To handle complicated condtions ● For example, ○ Send e-mail when a trouble detects ○ Disable sending e-mail for 10min. ■ The times of events should be recorded ○ After 10min. send the number of events ○ The next event should be emailed ○ Send the number of events by e-mail every 60min It’d better be handled by a program. But the state is also should be saved. => It is difficult for a command 5 / 9
  • 35. Picture of the resident action mechanism Hatohol Server hatohol-resident-yard usermodule.so int num_events; event_handler() { … } Connected with pipe - Different processes - No damage if user module crashes -Relaunchable Save a state as variables Called user written handler by an event 6 / 9
  • 36. HA configuration (Under study…) Zabbix Server Zabbix Server Nagios (NDOUtils) Hatohol Server Hatohol Server HA config. MySQL Server config. log Note: Just one idea... Traffic x2 But not so heavy 7 / 9
  • 37. Graph (Now no concrete ideas…) ● Basically similar to ZABBIX’s graph ? ○ users can specify duration ○ Shows maximum, minimum, average ● Are there other useful features ? 8 / 9
  • 38. Hatohol is open source software. ● Please tell us any requirements ● Of course, bug report and bug fix are very welcome ● Project site (Github) ○ https://github.com/project-hatohol/hatohol 9 / 9