Hiển thị các bài đăng có nhãn zabbix notification. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn zabbix notification. Hiển thị tất cả bài đăng

Thứ Hai, 11 tháng 12, 2017

Theo dõi nhiệt độ và độ ẩm môi trường với Zabbix

Nhiệt độ và hơi ẩm là kẻ thù của mọi loại thiết bị điện tử, trong các phòng server thì 2 yếu tố này luôn cần phải được kiểm soát chặt chẽ để đảm bảo sự hoạt động ổn định của hệ thống. Trong bài viết này tôi xin giới thiệu phương án giám sát nhiệt độ và độ ẩm trong phòng thông qua cảm biến nhiệt độ và độ ẩm DHT22 bằng Zabbix agent chạy trên Raspberry PI.

 

Theo dõi nhiệt độ và độ ẩm môi trường với Zabbix.

Nội dung thực hiện:

1 – Kết nối module DHT22 với PI 3.

2 – Cài Raspbian lên thẻ nhớ và boot vào OS trên PI 3.

3 – Cài Zabbix Agent để trao đổi dữ liệu với server giám sát, Agent sẽ lấy dữ liệu thông qua python script (có sẵn trên github.com).

Phần cứng cần thiết:

Các linh kiện cần sử dụng hoàn toàn có thể mua trên các trang bán linh kiện điện tử ở Việt nam (ex: banlinhkien.vn…) Tổng chi phí khoảng 1,5 tr.

  • Raspberry Pi 3
  • Nguồn cho Raspberry Pi 3
  • Cảm biến DHT22
  • Thẻ nhớ Micro SD 4-8G
  • Đầu đọc thẻ nhớ
  • (Thích thì mua case cho Pi3, có thể bắt vít lên tấm gỗ chạy ok :D)

OS: Raspbian Jessie Lite, Python 2.7 và zabbix agent 2.x

Bước 1: Tải hệ điều hành cho Raspbian Pi:

Tải bản lite tại: https://www.raspberrypi.org/downloads/raspbian/

Bước 2: Ghi hệ điều hành vào thẻ nhớ.

Có thể dùng UtraIso, Win32DiskImager, để ghi vào thẻ nhớ.

Trên linux thì dùng lệnh dd để ghi.

unzip -p 2017-11-29-raspbian-stretch.zip | sudo dd of=/dev/sdX bs=4M conv=fsync

Trong đó sdX là thẻ nhớ được mount trong linux.

Sau ghi ghi xong, tháo thẻ nhớ và cắm vào Raspberry. Cắm nguồn máy tính, dây mạng vào Pi3 và bắt đầu chiến!

Bước 3: Kết nối với Pi 3 qua SSH.

Thời gian khởi động của Pi 3 khoảng 60s tùy tốc độ đọc của thẻ nhớ. Để kết nối với Pi 3 ta cần xác định IP cảu Pi 3 sau khi boot (có thể xem trên modem và so sách MAC, hoặc dùng nmap hoặc 1 phần mềm scan Ip nào đó) và kết nối qua SSH (trên windows dùng PUTTY), m ặc định username/password kết nối là username=pi password=raspberry

 

Bước 4: Kết nối module cảm biến DHT22 với Pi 3

Sau khi kết nối SSH thành công với Pi 3, cần kết nối module cảm biến với nó để hoạt động.

Cảm biến gồm 3 chân theo thứ tự như hình vẽ:

Chân bên trái : + 3,3v => dây màu vàng

Chân giữa: GPIO => dây màu dây màu nâu

Chân bên phải: Mass => dây màu đen

Sử dụng 3 sợi dây có chấu cắm để nối với board Pi3:

 

Cách nối:

Chần + 3,3v => dây vàng => Chân màu vàng bất kỳ trên PI 3.

Chân GPIO => dây nâu => Chân số 2 trên PI 3.

Chân Mass => dây đen =>  Chân màu đen trên PI 3.

Bước 5: Cài phần mềm cần thiết trên PI 3.

Thông qua SSH ta tiến hành update và cài các ứng dụng cần thiết như sau:

sudo apt-get update && sudo apt-get -y install git python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT/
sudo python setup.py install

Các bước trên sẽ cài đặt đầy đủ phần mềm để kết nối PI với module cảm biến và nhận dữ liệu.

Bước 6: Test cảm biến.

Để kiểm tra cảm biến, sử dụng lệnh:

sudo /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 2

Cấu trúc của lệnh và các tham số: thâm số đầu là mã cảm biến (DHT22 => 22) tham số thứ 2 là thứ tự chân cắm GPIO trên board (số 2 như đã đề cập ở trên).

Vậy là cảm biến đã hoạt động tốt. Tiếp theo ta sẽ cấu hình zabbix agent đọc các tham số từ kết quả trên ra biến để truyền tới server. Để đơn giản tôi chỉ sử dụng zabbix_get để kiểm tra sự trả kết quả của agent. Nếu bạn muốn tham khảo cách tạo keyitem trên server và kết nối với Zabbix agent trên Pi3 xin đọc các bài viết trước.

Bước 7: Cấu hình zabbix agent

sudo apt-get -y install zabbix-agent

Sửa file config:

sudo nano /etc/zabbix/zabbix_agentd.conf

Sửa giá trị Server=127.0.0.1 thành IP của zabbix server đồng thời thêm dòng sau vào file:

UserParameter=dht.pull[*],sudo /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 2 | awk -F[=*%] '{print '$'"$1"}'

Save file lại và chạy zabbix agent:

sudo service zabbix-agent restart

Chú ý: Để zabbix có thể chạy lệnh lấy dữ liệu, ta phải cấp quyền execute cho zabbix với tập tin AdafruitDHT.py, có 2 cách:

Cách 1: cho phép zabbix user chạy script với quyền root: bằng cách sửa file sudo.conf:

visudo
zabbix ALL=(ALL) NOPASSWD: /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py

Cách  2: Cấp thẳng quyền execute cho file bằng lệnh

sudo chmod + x/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py

Bước 8: Kiểm tra zabbix thực hiện việc lấy dữ liệu từ cảm biến:

Như đã đề cập ở trên, tôi sẽ dùng zabbix_get để test.

sudo apt-get -y install zabbix-proxy-sqlite3

Kiểm tra với item key dht.pull đã cài đặt trong agent ở bước 7:

zabbix_get -s 127.0.0.1 -k dht.pull[2]zabbix_get -s 127.0.0.1 -k dht.pull[4]

Tham số truyền vào là 2 => nhiệt độ, tham số truyền vào là 4 => độ ẩm.

Vậy là xong, bạn có thể kết nối với server và tiến hành theo dõi thông qua zabbix, có thể lập graph để theo dõi cho đẹp.

Tải template cho zabbix server

TẢI TEMPLATE DHT22

Chúc các bạn thành công!

Thứ Hai, 13 tháng 11, 2017

Thiết lập cảnh báo hệ thống bằng zabbix qua email

Thiết lập cảnh báo hệ thống bằng zabbix qua email.

Trong bài viết này chúng ta cùng tìm hiểu về hệ thống cảnh báo của zabbix, và cấu hình zabbix gửi thông báo đến quản trị hệ thống thông qua email và sms

Yêu cầu chuẩn bị cho bài lab:

Zabbix server: Version 3.4.2 (xem bài viết : Hướng dẫn cài đặt zabbix server và Giám sát máy chủ bằng zabbix server).

Cảnh báo qua email: sử dụng gmail hoặc smtp serer riêng.

Chúng ta cùng bắt đầu với việc đầu tiên: Tạo trigger cho sự kiện thông báo.

Bước 1: Tạo trigger cho sự kiện thông báo.

Để ví dụ, ta sẽ tạo trigger để kiểm tra xem băng thông download/upload của máy chủ có vượt ngưỡng cho phép hay không.

Vào Configurations/Hosts

Tìm đến group chứa host định cài đặt, và bấm vào mục trigger => bấm vào create trigger

Trong mục name: Nhập tên của trigger: Băng thông download vượt 5Mbs

Trong mục serverrity: chọn warning

Trong mục Expression: Click vào Add để hiện cửa sổ Condition.

Zabbix add conditon windows

Tại mục Item bấm vào nút select, tìm đến host đang dùng và chọn items: Incoming network traffic on Intel(R) 82574L Gigabit Network Connection (tên card có thể tùy thuộc vào từng model máy).

Quay trở lại cửa sổ Zabbix condition, Nhập thông số như hình vẽ:

Bấm Insert để thêm điều kiện này vào trigger.

Như vậy biểu thức trigger của ta sẽ có dạng:

{192.168.19.135:net.if.in[Intel(R) 82574L Gigabit Network Connection].last(,5)}>5M

Giải thích:

Zabbix sẽ kiểm tra băng vào qua card ethernet đã chọn trong vòng 5 phút, nếu giá trị trung bình lớn hơn 5M thì trigger trả ra giá trị true, nếu không trả ra giá trị false.

Bấm Add để thêm trigger.

Bước 2: Cấu hình send mail bằng script.

Hệ thống sẽ gửi mail cảnh báo qua gmail sử dụng SSMTP, để biết cách cài đặt xin mời xem bài viết: Hướng dẫn cài đặt và cấu hình SSMTP

Mặc định thư mực chứa alert script nằm tại: /usr/local/share/zabbix/alertscripts/

Tạo file zabbix-sendmail.sh có nội dung:

#!bin/bashecho "$3" | /usr/bin/mail -s "$2" $1

Cấp quyền cho script:

chmod +x /usr/local/share/zabbix/alertscripts/zabbix-sendmail.sh

Để test gửi mail, sử dụng cú pháp:

/usr/local/share/zabbix/alertscripts/zabbix-sendmail.sh email_nhan@gmail.com "Chủ đề mail" "nội dung gửi"

Chú thích:

/usr/local/share/zabbix/alertscripts/zabbixsendmail.sh : script gửi mail.

email_nhan@gmail.com => $1

“Chủ đề mail” : => $2

“nội dung gửi” : => $3

Bước 3: Cấu hình zabbix gửi mail cảnh báo đến gmail.

Đăng nhập vào zabbix và vào theo đường dẫn: Administration => Media types => Create

add media types

Điền t hông tin như hình: => bấm add

Kiểm tra media types đã tạo thành công:

Cấu hình cho script sendmail trên gửi vào hộp thư mong muôn:

Vào Administration => Users => Chọn user => Media => Add

Nhập đỉa chị email cần gửi thông báo và ấn Add => Update.

Bước 4: Cấu hình enable zabbix alerts cho các triggers.

Vào Configuration => Actions => Create Actions

Cấu hình cho các triggers:

Name: nhập tên Action vd: cảnh báo khi băng thông vượt 5Mbs

Conditions: => New Conditions, chọn trigger = bấm chọn seclect để chọn trigger vừa tạo lúc trước.

Bấm add để thêm conditions

Sang tab Operations:

Mục Operations Condition chọn add

Operations: Send message

Send to User Group / Send to Users: thêm cảnh báo gửi cho group hoặc user

Send only to: Gửi cảnh báo đến gmail (vừa tạo)

Bấm Add

Vậy là khi có sự cố thì bạn sẽ nhận được mail của zabbix gửi đến mail của bạn.

Chúc các bạn thành công.