星期日, 5月 29, 2022

Zabbix Proxy with container 與透過 zabbix proxy 自動註冊 小記

Zabbix Proxy with container  與透過 zabbix proxy 自動註冊 小記


Zabbix: zabbix-proxy-sqlite3 with container

OS: openSUSE Leap 15.3 in Azure



今天來寫 Zabbix Proxy with container 安裝以及 zabbix agent 如何透過 zabbix proxy 來進行自動註冊


先來說明為何需要 Zabbix Proxy 來提供服務, 目前規劃的想法如下

  • Zabbix Client 沒有對外公共 IP, 無法傳送資料給 Server,  所以在內網將相關資訊匯報給 Zabbix Proxy, 再由 Zabbix Proxy 傳送資訊

  • Zabbix Proxy 如果在網路不穩定的狀況下, Client 的相關資料是存放在 DB 內, 等到網路恢復穩定的時候, 可以將相關資料傳回 Zabbix Server

  • 目前並不是所有的 Template 都有 Active, 可以透過 Zabbix Proxy 對內網的 Zabbix passive client 收集資料後送出


這次的測試 Zabbix Proxy 我是建立在 Azure

在 Azure 建立 openSUSE Leap 15.3 VM

登入 openSUSE Leap 15.3

我們 Zabbix Proxy 的安裝是使用 container 的方式


啟動 docker 服務, 設定開機啟動

# systemctl  start  docker

# systemctl  enable  docker


啟動 zabbix proxy

# docker  run  --name  zabbix-proxy-sqlite3  \

           -e  ZBX_HOSTNAME="Azure-sakana-proxy" \

           -e  ZBX_SERVER_HOST="YOUR_ZABBIX_SERVER_IP" \

           -e  ZBX_TIMEOUT="30" \

           -e  ZBX_CONFIGFREQUENCY="60" \

           -e  ZBX_DATASENDERFREQUENCY=3 \

           -p  10051:10051 \

           -d  zabbix/zabbix-proxy-sqlite3:alpine-6.0-latest


  • ZBX_SERVER_HOST 請換成自己的 Zabbix Server IP or FQDN


然後我有新增自動註冊機制以及安裝 zabbix agent



新增 Proxy in Zabbix


登入 Zabbix 管理介面

點選 Administration -- > Proxies



點選右上角 Create proxy


輸入名稱


  • 名稱要跟上面的 HOSTNAME 符合


點選 Add  加入 Proxy

可以到 Administration -- > Proxies

看看新增加的 Last seen (age) 有沒有秒數





接下來處理 Client 透過 Proxy 加入的自動註冊


點選 Configuration -- > Actions -- > Autoregistration actions 

點選右上角的 Create action 



輸入 名稱



點選 Add 


Type: 選取 Proxy

Operator: Contains

Proxy: 輸入或是選取剛剛建的 Proxy 

點選 Add



  • 這邊就是設定自動註冊的條件, 就是 Zabbix Agent 來進行註冊的時候, 如果他來自你選定的 Proxy, 就符合自動註冊的條件


接下來設定自動註冊要套用的行為

點選 Operations



點選 Add 完設定


最後我們要來驗證, Zabbix agent 透過 Zabbix Proxy 來進行資訊的回報


一樣在 Azure  上面建立 openSUSE Leap 15.3 VM

登入 openSUSE Leap 15.3


安裝 zabbix agent2 

# rpm  -Uvh  --nosignature  https://repo.zabbix.com/zabbix/6.0/sles/15/x86_64/zabbix-release-6.0-1.sles15.noarch.rpm


# zypper  --gpg-auto-import-keys  refresh  'Zabbix Official Repository'


# zypper  install  zabbix-agent2


修改相關設定


觀察設定檔

# egrep -v  '^#|^$'  /etc/zabbix/zabbix_agent2.conf 


PidFile=/var/run/zabbix/zabbix_agent2.pid

LogFile=/var/log/zabbix/zabbix_agent2.log

LogFileSize=0

Server=172.16.0.5

ServerActive=172.16.0.5

#Hostname=zabbix server

HostnameItem=system.hostname

Include=/etc/zabbix/zabbix_agent2.d/*.conf

ControlSocket=/tmp/agent.sock

Include=./zabbix_agent2.d/plugins.d/*.conf


  • 透過 Zabbix Proxy 來進行資訊回報, 最大的差別只有 Server 與 ServerActive 是指向 Zabbix Proxy 的 IP, 而非 Zabbix Server 的 IP


啟動 zabbix agent 2 的服務, 並設定開機啟動

# systemctl  start  zabbix-agent2

# systemctl  status  zabbix-agent2

# systemctl  enable  zabbix-agent2


另外同場加映, 因為有測試  Docker by Zabbix agent 2 這個 template, 額外進行下列動作

# systemctl  start  docker

# systemctl  enable  docker

# usermod  -aG  docker  zabbix



測試是否可以監控 docker

# docker  run  -d  --name=grafana  -p  3000:3000  grafana/grafana-enterprise


實驗結果成功



又往 Zabbix 前進一步


~ enjoy it


References:



星期日, 5月 22, 2022

Zabbix 6.0 Geo Map 設定小記

Zabbix 6.0 Geo Map 設定小記


Zabbix: 6.0 with container



今天快速來小記一下 Zabbix 的 Geo Map 手動設定功能


Zabbix 6.0 的新功能裏面有一個是我覺得很想要的, 就是 Geo Map 功能

  • 因為雲端平台的機器可能會開在不同的 Region, 雖然實務上面提供服務的 Region 會是日本與台灣, 但是還是有些測試的機器會開在美東或是美西地區

  • 使用 Geo Map 的功能可以使用地圖的方式很快速的了解目前機器的分佈以及狀況


Geo Map 可以藉由 Item 的方式來自動取得經度以及緯度, 這個方式之後再來找時間嘗試

今天先來進行手動設定的方式, 大概會有 3 個步驟

  • 手動設定主機經緯度

  • 建立 Geo Map 的 widget

  • 設定要套用的地圖種類


首先來進行主機經緯度的設定


登入 Zabbix 管理介面


點選 Configuration -- > Hosts

點選 要設定經緯度的主機

點選 Inventory

點選 Automatic



輸入 緯度 ( latitude ) 與 經度 ( longitude ) 數值



  • 經緯度的數值可以使用 # curl  http://ipwhois.app/json/YOUR_IP 來取得, 以中華電信 DNS 為例

    • {"ip":"168.95.1.1","success":true,"type":"IPv4","continent":"Asia","continent_code":"AS","country":"Taiwan","country_code":"TW","country_flag":"https:\/\/cdn.ipwhois.io\/flags\/tw.svg","country_capital":"Taipei","country_phone":"+886","country_neighbours":"","region":"Keelung City","city":"Taipei","latitude":25.0329694,"longitude":121.5654177,"asn":"AS3462","org":"Data Communication Business Group,","isp":"Data Communication Business Group","timezone":"Asia\/Taipei","timezone_name":"CST","timezone_dstOffset":0,"timezone_gmtOffset":28800,"timezone_gmt":"+08:00","currency":"New Taiwan Dollar","currency_code":"TWD","currency_symbol":"NT$","currency_rates":29.729,"currency_plural":"New Taiwan dollars"}


點選 Update 更新相關資訊



接下來建立 Geo Map 的 Widget


點選 Monitoring -- > Dashboard

點選 Edit dashboard


滑鼠點選空白處, 會出現 Add widget 視窗


Type: 選取 Geomap

Host groups 或是 Hosts 選取想要列出的主機

點選 Add



現在可以看到主機的圖示但是地圖還是空白的


最後來設定要顯示地圖的種類


點選  Administration -- > General -- > Geographical maps

Tile provider: 選取要使用的地圖種類

點選 Update



地圖的呈現方式就看大家的喜好了


Stamen Toner Lite 我覺得也不錯



另外官方有幾個 Youtube 影片建議大家可以去看一下



之後有機會再來弄自動化的部份


~ enjoy it


References:

星期五, 5月 20, 2022

Zabbix agent 自動註冊 與 openSUSE Leap 15.3 Zabbix agent 2 安裝小記

Zabbix agent 自動註冊 與 openSUSE Leap 15.3 Zabbix agent 2 安裝小記


OS: openSUSE Leap 15.3 in Azure

Zabbix: 6.0 docker image



上次的文章寫了在 GCP 上面架設 Zabbix Server with container + Cloud SQL + LB 方式


今天這一篇文章要來講 2 個部份

  • 在 Zabbix 上面設定自動註冊機制, 讓 Active 方式的 Zabbix Agent 自動註冊主機, 套用 Host Group 以及設定 Template.

  • openSUSE Leap Linux 安裝 zabbix agent 2 來對 Zabbix Server 進行註冊


首先來談談 Zabbix 的自動註冊機制

想法

  • 透過不同的 Metadata 關鍵字將主機註冊到

    • 不同的主機群組 / 套用不同的 Template


初步規劃, 來自不同的雲平台加到到不同的 Host Group

  • 也可以進一步將主機加到不同的專案 Host Group, 看看需求來規劃

  • 依據專案需求來套用要監控的 Template


首先來建立 Host group


登入 Zabbix 管理介面


點選 Configuration -- > Host groups

點選右上角的 Create host group



輸入 名稱

點選 Add


確認 Host group 已經建立



接下來設定自動註冊機制


點選 Configuration -- > Actions -- > Autoregistration actions 

點選右上角的 Create action 



輸入 名稱

點選 Add 


Type: 選取 Host metadata

Operator: Contains

Value: 輸入 AzureHost

點選 Add



  • 這邊就是設定自動註冊的條件, 就是 Zabbix Agent 來進行註冊的時候, 如果他的 Metadata 有包含 AzureHost 這個關鍵字, 就符合自動註冊的條件


確認已經設定完成



接下來設定自動註冊要套用的行為

點選 Operations



點選 Operations 的 Add


點選 Operation 的 Add host

點選 Add


觀察設定, 再次點選 Add


點選 Operation 的 Add to host group

點選 Host groups 的 Select 按鈕, 選取要加入的 Host group

點選 Add



觀察設定, 再次點選 Add



點選 Operation 的 Link to template

點選 Templates 的 Select 按鈕, 選取要套用的 Template

點選 Add


確認相關資訊

點選下方的 Add 完成設定



觀察相關設定


  • 可以套用多個 Host Group 或是 Template, 請依照實際的需求來設定


這樣就完成 Zabbix 的自動註冊機制


接下來我們來進行 openSUSE Zabbix 的安裝


參考官方網頁


登入 openSUSE Leap, 切換身份為 root


安裝 Zabbix 套件 

# rpm  -Uvh  --nosignature  https://repo.zabbix.com/zabbix/6.0/sles/15/x86_64/zabbix-release-6.0-1.sles15.noarch.rpm


  • 這個動作其實是將 Zabbix 的 repos 安裝進來


匯入 GPG Key

# zypper  --gpg-auto-import-keys  refresh  'Zabbix Official Repository'


Automatically importing the following key:


  Repository:       Zabbix Official Repository

  Key Fingerprint:  A184 8F53 52D0 22B9 471D 83D0 082A B56B A14F E591

  Key Name:         Zabbix LLC <packager@zabbix.com>

  Key Algorithm:    RSA 2048

  Key Created:      Fri Jul 15 05:39:09 2016

  Key Expires:      (does not expire)

  Subkey:           DF517F33E709712C 2016-07-15 [does not expire]

  Rpm Name:         gpg-pubkey-a14fe591-578876fd




    Note: A GPG pubkey is clearly identified by it's fingerprint. Do not rely the keys name. If you

    are not sure whether the presented key is authentic, ask the repository provider or check his

    web site. Many provider maintain a web page showing the fingerprints of the GPG keys they are

    using.

Retrieving repository 'Zabbix Official Repository' metadata .......................................................[done]

Building repository 'Zabbix Official Repository' cache ............................................................[done]

Specified repositories have been refreshed.



安裝 zabbix agent 2

# zypper  install  zabbix-agent2


接下來修改相關設定檔

# vi   /etc/zabbix/zabbix_agent2.conf


修改相關設定


ServerActive=YOUR_ZABBIX_IP

#Hostname=Zabbix server

HostnameItem=system.hostname

HostMetadata=AzureHost


  • 將ServerActive 設定為 Zabbix Server IP 或是 之前文章的 L4 LB IP

  • 註解 Hostname, 因為我們要使用 HostnameItem 來自動帶入主機名稱

  • 取消註解 HostnameItem, 他會帶入主機的名稱來登記

  • 取消註解 HostMetada, 帶入剛剛自動註冊設定的 Metadata 內容



觀察設定資訊

# egrep  -v  '^#|^$'  /etc/zabbix/zabbix_agent2.conf 


PidFile=/var/run/zabbix/zabbix_agent2.pid

LogFile=/var/log/zabbix/zabbix_agent2.log

LogFileSize=0

Server=127.0.0.1

ServerActive=YOUR_ZABBIX_IP

HostnameItem=system.hostname

HostMetadata=AzureHost

Include=/etc/zabbix/zabbix_agent2.d/*.conf

ControlSocket=/tmp/agent.sock

Include=./zabbix_agent2.d/plugins.d/*.conf


啟動 Zabbix Agent 2 並設定開機啟動


# systemctl start zabbix-agent2

# systemctl status zabbix-agent2

# systemctl enable zabbix-agent2


可從 log 查詢相關資訊

# tail  /var/log/zabbix/zabbix_agent2.log


接下來可以到 Zabbix 的管理介面觀察是否有被加入




同場加映: 使用 Zabbix Agent with container 方式如何自動註冊


參考之前的文章, 來設定 Zabbix Agent


作法如下


# docker run --name test-20220520-2 \

    -e ZBX_HOSTNAME="test-20220520-2" \

    -e ZBX_ACTIVESERVERS="YOUR_ZABBIX_IP" \

   -e ZBX_METADATA="AzureHost" \

    --privileged \

    --restart unless-stopped \

    -d zabbix/zabbix-agent2:alpine-6.0-latest


  • 這邊跟上篇文章的差異就是, 有使用 ZBX_METADATA 使用 metadata 配合自動註冊來加入


也可以使用 docker logs 指令來觀察相關資訊


# docker  logs  test-20220520-2


又向 Zabbix 前進一步


~ enjoy it


References