1.Sensu 是由 Sonian 公司開發的一種監控框架,主要用於擁有大規模節點的雲計算平臺的檢查與監控。目前發行的版本有企業版和開源版兩種,收費的企業版本較之免費的開源版本擁有更多的功能。出於介紹的目的,本文的內容都是基於開源版本的 Sensu。ios
開源版本的 Sensu 遵循 MIT 許可,旨在爲分佈式的平臺提供靈活易用、快速簡單、便於拓展的監控和維護服務。主要包含如下功能與特性:nginx
2.Sensu支持許多類Unix平臺,以及Windows。
web
Sensu架構簡圖:
redis
環境:Centos7 最小安裝基礎版。json
1. Sensu須要安裝Redis。要安裝Redis,請啓用EPEL存儲庫:vim
[root@web1 ~]# yum install epel-release -y
2.安裝redis服務api
[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.
報錯解決:重啓後服務就正常了ruby
[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
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檢查插件規範定義了插件執行的四個返回碼:
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.訪問網頁刷新
1.首頁界面
2.客戶端管理界面
3.主機狀態檢查
4.主機數據中心
更多的博客轉移到我的博客上了,請點擊如下連接:
我的博客