nagios+influxdb+grafana的監控數據可視化流程

nagios介紹node

nagios是一款開源監控的應用,可用於監控本地和遠程主機的日誌、資源、死活等等諸多功能。經過snmp協議和nrpe協議。python

nagios的配置文件是由nconf上進行配置,而後點擊生成至服務器,上面有各類模板,能夠本身配,也能夠用現有的。linux

nagios的搭建過程,自行百度。ios

下面是一個nagios配置文件的樣例git

nagios配置文件目錄結構:github

 

# ll /usr/local/nagios/etc/
total 152
-rw-rw-r-- 1 nagios nagios 12999 Apr 29 08:08 cgi.cfg
drwxr-xr-x 2 apache apache  4096 May 31 08:45 Default_collector   <- 定義監視項的目錄
drwxr-xr-x 2 apache apache  4096 May 31 08:38 global      <- 全局參數的定義,checkcommand的定義
-rw-r--r-- 1 nagios nagios    50 Apr 29 08:12 htpasswd.users
-rw-rw-r-- 1 nagios nagios 46169 May  3 01:37 nagios.cfg  <- nagios的配置文件
-rw-rw-r-- 1 root   root   44816 Apr 29 08:58 nagios.cfg.29-04-18
-rw-r--r-- 1 root   root    2358 May  2 10:48 NagiosConfig.tgz
drwxr-xr-x 2 nagios nagios  4096 May  8 11:59 nrpe
-rw-r--r-- 1 nagios nagios  7217 Apr 29 08:45 nrpe.cfg    <- nrpe的通訊配置
-rwxr-xr-x 1 nagios nagios  7217 Apr 29 08:38 nrpe.cfg.save
drwxrwxr-x 2 nagios nagios  4096 Apr 30 02:19 objects
-rw-rw---- 1 nagios nagios  1312 Apr 29 08:08 resource.cfg

 

vim /usr/local/nagios/etc/Default_collect/services.cfg數據庫

define service {
                service_description                   check_proc_nagios    <- 頁面上顯示出的監控項的名字,在這裏定義
                check_command                         check_remote_procs!nagios!8!1:8   <- 執行的check command,這個配置是監控的主要命令,幾乎靠着個命令才能監控到是否OK,靠着「!」做爲參數分隔符
                host_name                             host名  <- 寫出監控哪一臺服務器,前提是和nagios server是能夠通訊的
                check_period                          24x7  <- 監控的時間
                contact_groups                        +admins  <- 聯繫組,聯繫人,出錯發給誰
                event_handler_enabled                 0
                use                                   generic-service <- 採用的哪一個現有模板(nconf上配置)
}

 

vim /usr/local/nagios/etc/Default_collect/hosts.cfgapache

define host {
                host_name                             **********    <- 定義的host名主要顯示在監控頁面上
alias ***サーバ <- 定義的別名 address ***-b-**-***-**.stage-***-org.fastretailing.cn <- 這一行定義的是主要去通訊的IP地址 _graphiteprefix graphite_host icon_image_alt Linux icon_image base/linux40.gif statusmap_image base/linux40.gd2 check_command check-host-alive check_period 24x7 notification_period 24x7 contact_groups +admins use generic-host,linux-server }

 

  

vim /usr/local/nagios/etc/global/checkcommands.cfgvim

define command {
                command_name                          check_local_disk
                command_line                          $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$  <- 在services.cfg中,check_command參數中,用「!」分割的就是「$ARG$」的參數之間間隔
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
define command {
                command_name                          check_remote_procs
                command_line                          $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_procs -a "-C $ARG1$ -w $ARG2$ -c $ARG3$" <- 這一行監視的配置內容是監視遠程的進程
                               
}


 以上,配置好監控項。服務器

 

influxdb介紹

influxdb,中文名時序數據庫,

時序數據是基於時間的一系列的數據。在有時間的座標中將這些數據點連成線,往過去看能夠作成多緯度報表,揭示其趨勢性、規律性常性;往將來看能夠作大數據分析,機器學習,實現預測和預警。

時序數據庫就是存放時序數據的數據庫,而且須要支持時序數據的快速寫入、持久化、多緯度的聚合查詢等基本功能。

對比傳統數據庫僅僅記錄了數據的當前值,時序數據庫則記錄了全部的歷史數據。同時時序數據的查詢也老是會帶上時間做爲過濾條件。

 

influxdb主要配置

 

vim /etc/influxdb/influxdb.conf
[meta] # Where the metadata/raft database is stored <- 元數據存放位置 dir = "/var/lib/influxdb/meta" [data] # The directory where the TSM storage engine stores TSM files. <- 最終數據 dir = "/var/lib/influxdb/data" # The directory where the TSM storage engine stores WAL files. <- wal數據爲預寫數據 wal-dir = "/var/lib/influxdb/wal"

 

 

nagios將數據存入influxdb的過程

nagios將監視出的數據,經過graphios,來存放到influxdb,爲了方便往後再grafana上進行可視化。

流程

一、nagios的執行命令的輸出結果,寫到一個文件,而後對這個文件進行mv,存放在一個目錄下。

具體配置以下

# vim /usr/local/nagios/etc/global/misccommands.cfg
define command {
                command_name                          graphios_perf_host
                command_line                          /bin/mv  /usr/local/nagios/var/host-perfdata /var/spool/nagios/graphios/host-perfdata.$TIMET$    <- mv 命令的主要執行
}

define command {
                command_name                          graphios_perf_service
                command_line                          /bin/mv  /usr/local/nagios/var/service-perfdata /var/spool/nagios/graphios/service-perfdata.$TIMET$   <- mv 命令的主要執行
}

 

 上面配置文件中,要求的是mv /usr/local/nagios/var/host-perfdata /var/spool/nagios/graphios/host-perfdata.$TIMET$

而後咱們就會面臨這幾個問題:

一、複製源是怎麼生成的?

二、複製源中的文件長什麼樣?

三、又是在哪裏配置的?

上面這幾個問題須要看以下的配置文件。

首先看 nagios 的主配置文件 nagios.cfg,從這個文件能夠看出上面問題中的:三、複製源是哪裏配置的。

# vim /usr/local/nagios/etc/nagios.cfg
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata  <- 這行指定的是複製源的文件,就是nagios監視的命令執行結果輸出到哪一個文件,在這裏指定。
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$\tGRAPHITEPREFIX::$_SERVICEGRAPHITEPREFIX$\tGRAPHITEPOSTFIX::$_SERVICEGRAPHITEPOSTFIX$\tMETRICTYPE::$_SERVICEMETRICTYPE$
上面這行配置,配置的是把輸出結果的文件格式化,爲了方便後面的graphios來存放到influxdb中作準備
service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=graphios_perf_service host_perfdata_file=/usr/local/nagios/var/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tGRAPHITEPREFIX::$_HOSTGRAPHITEPREFIX$\tGRAPHITEPOSTFIX::$_HOSTGRAPHITEPOSTFIX$\tMETRICTYPE::$_HOSTMETRICTYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=graphios_perf_host

 看到這裏,最基本的配置瞭解了,那麼下面的問題就是一、複製源是怎麼生成的?二、複製源中的文件長什麼樣?

複製源生成很簡單,nagios監視頁面上的數據,實際上是基於nagios自身執行的命令,而後返回到頁面,再供給咱們進行觀看是不是OK或者DOWN

 

# /usr/local/nagios/libexec/check_nrpe -H 10.**.58.*** -c check_disk -a "-w 20% -c 10%"
DISK OK - free space: /dev 1873 MB (99.99% inode=100%); /dev/shm 1882 MB (100.00% inode=100%); / 499479 MB (99.15% inode=100%);| /dev=0MB;1498;1685;0;1873 /dev/shm=0MB;1505;1693;0;1882 /=4259MB;403068;453452;0;503836

 以上是輸出結果,這個輸出結果會輸入到/usr/local/nagios/var/service-perfdata裏面,這個配置在上面的nagios.cfg中配置好了的。

但仔細看,會發現上面的nagios.cfg中還有一個設置項:service_perfdata_file_template,就是很長很長的那一段,這一個設置項的內容是格式化上面的那條輸出結果。

下面看個格式化完成了的例子。

# vim /var/spool/nagios/graphios/service-perfdata.1528256154
DATATYPE::SERVICEPERFDATA       TIMET::1528256140       HOSTNAME::************     SERVICEDESC::LOAD       SERVICEPERFDATA::load1=0.000;2.000;4.000;0; load5=0.000;2.000;4.000;0; load15=0.000;2.000;4.000;0;      SERVICECHECKCOMMAND::check_remote_load! HOSTSTATE::UP   HOSTSTATETYPE::HARD     SERVICESTATE::OK        SERVICESTATETYPE::HARD  GRAPHITEPREFIX::grafana GRAPHITEPOSTFIX::load   METRICTYPE::$_SERVICEMETRICTYPE$
DATATYPE::SERVICEPERFDATA       TIMET::1528256145       HOSTNAME::************       SERVICEDESC::Swap-Usage SERVICEPERFDATA::swap=2047MB;1433;1023;0;2047   SERVICECHECKCOMMAND::check_remote_swap! HOSTSTATE::UP   HOSTSTATETYPE::HARD     SERVICESTATE::OK        SERVICESTATETYPE::HARD  GRAPHITEPREFIX::logaggregator   GRAPHITEPOSTFIX::swap   METRICTYPE::$_SERVICEMETRICTYPE$
DATATYPE::SERVICEPERFDATA       TIMET::1528256146       HOSTNAME::************     SERVICEDESC::Swap-Usage SERVICEPERFDATA::swap=2047MB;1433;1023;0;2047   SERVICECHECKCOMMAND::check_remote_swap! HOSTSTATE::UP   HOSTSTATETYPE::HARD     SERVICESTATE::OK        SERVICESTATETYPE::HARD  GRAPHITEPREFIX::jenkins GRAPHITEPOSTFIX::swap   METRICTYPE::$_SERVICEMETRICTYPE$

 

看到上面這個配置文件,就會有個疑問:爲何要把文件改爲這種格式?

緣由其實就是,nagios的數據想要傳送到influxdb上,須要graphios來充當一個搬運工的角色,graphios的代碼是python編寫的,其中有一段代碼設計好了要取這樣格式的數據。

graphios的代碼能夠在https://github.com/shawn-sterling/graphios/blob/master/graphios.py 查看

 

以後的事情就很簡單了,在graphios配置中,開啓以下配置

vim /etc/graphios/graphios.cfg


enable_influxdb09 = True # Extra tags to add to metrics, like data center location etc. # Only valid for 0.9 #influxdb_extra_tags = {"location": "la"} # Comma separated list of server:ports # defaults to 127.0.0.1:8086 (:8087 if using SSL). influxdb_servers = 127.0.0.1:9096 # SSL, defaults to False #influxdb_use_ssl = True # Database-name, defaults to nagios influxdb_db = nagios # Credentials (required) influxdb_user = influxdb influxdb_password = influxdb

 以上配置,配置成功後,

# /etc/init.d/graphios start

# /etc/init.d/nagios start

以上配置,做爲一個筆記,大體流程  nagios -> graphios -> influxdb

最後在grafana上面生成圖表,生成圖表方式自行百度

相關文章
相關標籤/搜索