濃縮版:雲計算運維KVM監控工具之Sensu開源版

濃縮版:雲計算運維KVM監控工具之Sensu開源版

零、Sensu說明

1.Sensu 是由 Sonian 公司開發的一種監控框架,主要用於擁有大規模節點的雲計算平臺的檢查與監控。目前發行的版本有企業版和開源版兩種,收費的企業版本較之免費的開源版本擁有更多的功能。出於介紹的目的,本文的內容都是基於開源版本的 Sensu。

開源版本的 Sensu 遵循 MIT 許可,旨在爲分佈式的平臺提供靈活易用、快速簡單、便於拓展的監控和維護服務。主要包含以下功能與特性:

  • 檢查系統、服務和程序的運行狀態。
  • 基於分佈式的設計,能夠輕鬆的動態伸縮規模。
  • 支持通過插件的形式自定義檢查的內容,擁有豐富的插件庫。
  • 收集信息,獲取被監控節點上的各項數據指標等。
  • 可視化的操作界面,提供實時的 GUI 用於顯示和操作相關信息。
  • 內置的集成工具,可用於和其它系統集成,如 PagerDuty、Graphite、Email 等。
  • 提供豐富的 API 接口,支持通過 API 調用訪問事件和客戶端信息,觸發檢測等。
  • 加密的安全通信,支持各種複雜的網絡拓撲。

2.Sensu支持許多類Unix平臺,以及Windows。
濃縮版:雲計算運維KVM監控工具之Sensu開源版

濃縮版:雲計算運維KVM監控工具之Sensu開源版

Sensu架構簡圖:
濃縮版:雲計算運維KVM監控工具之Sensu開源版

一、服務器端安裝

環境:Centos7 最小安裝基礎版。

1. Sensu需要安裝Redis。要安裝Redis,請啓用EPEL存儲庫:

[root@web1 ~]# yum install epel-release -y

2.安裝redis服務

[root@web1 ~]# yum install redis -y

修改redis配置,禁用保護模式,設置redis服務密碼

[root@web1 ~]# sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf
[root@web1 ~]# sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
[root@web1 ~]# ed -i 's/^# requirepass foobared/requirepass password123/g' /etc/redis.conf

啓動redis服務報錯

[root@web1 ~]# systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
[root@web1 ~]# systemctl start redis
Warning: redis.service changed on disk. Run 'systemctl daemon-reload' to reload units.

報錯解決:重啓後服務就正常了

[root@web1 ~]# systemctl daemon-reload
[root@web1 ~]# reboot
[root@web1 ~]# systemctl status  redis
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Wed 2019-03-13 19:33:27 CST; 3min 6s ago
Main PID: 875 (redis-server)
   CGroup: /system.slice/redis.service
           └─875 /usr/bin/redis-server 0.0.0.0:6379

Mar 13 19:33:27 web1 systemd[1]: Starting Redis persistent key-value database...
Mar 13 19:33:27 web1 systemd[1]: Started Redis persistent key-value database.

3.Sensu監控組件安裝
添加Sensu的軟件源

[root@web1 ~]# tee /etc/yum.repos.d/sensu.repo << EOF
> [sensu]
> name=sensu
> baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
> gpgcheck=0
> enabled=1
> EOF

安裝Sensu

[root@web1 ~]#  yum install sensu uchiwa -y

設置Sensu基礎配置文件,使用端口4567配置Sensu-api以偵聽localhost

[root@web1 ~]# tee /etc/sensu/conf.d/api.json << EOF
> {"api": { "host": "127.0.0.1", "port": 4567 }}
> EOF

將Sensu配置連接使用redis作爲Transport以及redis偵聽的地址。客戶端需要連接到Transport,每臺客戶端計算機都需要這兩個配置文件

[root@web1 ~]# tee /etc/sensu/conf.d/redis.json << EOF
> {"redis": { "host": "192.168.0.230", "port": 6379, "password": "password123" }}              
> EOF
[root@web1 ~]# tee /etc/sensu/conf.d/transport.json << EOF
> {"transport": { "name": "redis" }}
> EOF

我們配置Uchiwa監聽端口3000上的每個接口(0.0.0.0)。我們還配置Uchiwa使用sensu-api(已配置)

[root@web1 ~]# tee /etc/sensu/uchiwa.json << EOF
> {"sensu": [ { "name": "sensu", "host": "127.0.0.1", "port": 4567 } ], "uchiwa": { "host": "0.0.0.0", "port": 3000 }}
> EOF

安全設置,配置文件夾的所有者

[root@web1 ~]#  chown -R sensu:sensu /etc/sensu

啓動並設置開機自啓動Sensu服務

[root@web1 ~]# systemctl enable sensu-server sensu-api sensu-client
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-server.service to /usr/lib/systemd/system/sensu-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-api.service to /usr/lib/systemd/system/sensu-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-client.service to /usr/lib/systemd/system/sensu-client.service.
[root@web1 ~]# systemctl start sensu-server sensu-api sensu-client
[root@web1 ~]# systemctl enable uchiwa
uchiwa.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig uchiwa on
[root@web1 ~]# /sbin/chkconfig uchiwa on
[root@web1 ~]# systemctl start uchiwa
[root@web1 ~]# chkconfig --list|grep uchiwa

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

uchiwa          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@web1 ~]#

瀏覽器訪問Uchiwa(後期可以自主設置nginx反向代理)
http://192.168.0.230:3000
濃縮版:雲計算運維KVM監控工具之Sensu開源版

二、客戶端

1.設置Sensu的倉庫源

[root@client-1 ~]#  tee /etc/yum.repos.d/sensu.repo << EOF
> [sensu]
> name=sensu
> baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
> gpgcheck=0
> enabled=1
> EOF

2.安裝Sensu,配置client

[root@client-1 ~]#  yum install sensu -y

要配置sensu-client,請創建在服務器計算機中創建的相同redis.json和transport.json,以及client.json配置文件:(在名稱字段中,指定用於標識此客戶端的名稱(通常是主機名)。 環境字段可以幫助過濾,訂閱定義客戶端將執行哪些監視檢查。)

[root@client-1 ~]# vim /etc/sensu/conf.d/client.json 
> {"client": { "name": "leo-client", "environment": "development", "subscriptions": [ "frontend" ] }}    
> EOF

最後,啓用並啓動服務並檢查Uchiwa,因爲新客戶端將自動註冊:

[root@client-1 ~]#  systemctl enable sensu-client
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-client.service to /usr/lib/systemd/system/sensu-client.service.
[root@client-1 ~]# systemctl start sensu-client
[root@client-1 ~]# systemctl status  sensu-client
● sensu-client.service - sensu client
   Loaded: loaded (/usr/lib/systemd/system/sensu-client.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-03-14 01:39:24 CST; 6s ago
Main PID: 1852 (sensu-client)
   CGroup: /system.slice/sensu-client.service
           └─1852 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extension...

Mar 14 01:39:24 client-1 systemd[1]: Started sensu client.
Mar 14 01:39:24 client-1 systemd[1]: Starting sensu client...
[root@client-1 ~]#

3.Sensu檢查
Sensu檢查有兩個組件:插件和定義。
Sensu與Nagios檢查插件規範兼容,因此可以無需修改即可使用對Nagios的任何檢查。 檢查是可執行文件,由Sensu客戶端運行。
檢查定義讓Sensu知道運行插件的方式,位置和時間。

4.我們在客戶端計算機上安裝一個check插件。 請記住,此插件將在客戶端上執行
啓用EPEL並安裝nagios-plugins-http:

[root@client-1 ~]# yum install -y epel-release && yum install -y nagios-plugins-http

5.嘗試檢查客戶端運行的web服務器的狀態,結果是失敗的,因爲並沒有運行web服務。

[root@client-1 ~]# /usr/lib64/nagios/plugins/check_http -I 127.0.0.1
connect to address 127.0.0.1 and port 80: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[root@client-1 ~]# echo $?
2
[root@client-1 ~]#

Nagios檢查插件規範定義了插件執行的四個返回碼:
濃縮版:雲計算運維KVM監控工具之Sensu開源版

三、服務端

1.在服務器計算機上,創建文件/etc/sensu/conf.d/check_http.json:

[root@web1 ~]# vim /etc/sensu/conf.d/check_http.json
{"checks":
        { "check_http":
                { "command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1", "interval": 10, "subscribers": [ "frontend" ] }
        }
}

在命令字段中,使用我們之前測試的命令。 Interval會告訴Sensu這個檢查應該在幾秒鐘內執行的頻率。 最後,訂戶將定義將執行檢查的客戶端。

2.重新啓動sensu-api和sensu-server並確認Uchiwa中有新檢查

[root@web1 ~]# systemctl restart sensu-api sensu-server  uchiwa

3.訪問網頁刷新
濃縮版:雲計算運維KVM監控工具之Sensu開源版

四.界面說明

1.首頁界面
濃縮版:雲計算運維KVM監控工具之Sensu開源版

2.客戶端管理界面
濃縮版:雲計算運維KVM監控工具之Sensu開源版

3.主機狀態檢查

濃縮版:雲計算運維KVM監控工具之Sensu開源版

4.主機數據中心
濃縮版:雲計算運維KVM監控工具之Sensu開源版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章