Trong tất cả các công cụ giám sát hiện đại hiện có thì có lẽ TIG stack (Telegraf, InfluxDB và Grafana) là một trong những công cụ được sử dụng phổ biến nhất.
Ở bài viết này sẽ hướng dẫn các bạn cách cài đặt TIG stack để giám sát hệ thống của bạn.
1. Giới thiệu
Telegraf – Influxdb – Grafana (TIG) là một stack dùng để giám sát hệ thống, công cụ rất phổ biến.
Telegraf và Influxdb đều là sản phẩm mã nguồn mở của InfluxData. Mặc dù InfluxData cung cấp một stack hoàn chỉnh để giám sát với Chronograf để visualize và Kapacitor để cảnh báo (TICK stack) nhưng chúng ta có thể sử dụng Grafana để thay thế cho cả Chronograf lẫn Kapacitor.
Telegraf là một agent để thu thập và báo cáo các số liệu và dữ liệu. Nó có thể tích hợp để thu thập nhiều loại nguồn dữ liệu khác nhau của các số liệu, events, và logs trực tiếp từ các container và hệ thống mà nó chạy trên đó.
InfluxDB là một Time Series Database (là database được tối ưu hóa để xử lý dữ liệu chuỗi thời gian, các dãy số được lập chỉ mục theo thời gian). Nó cung cấp một ngôn ngữ giống SQL để tương tác với dữ liệu.
Grafana là một công cụ mã nguồn mở cho phép chúng ta truy vấn, hiển thị, cảnh báo các số liệu thu thập được. Nó có các tính năng nổi bật như hiển thị số liệu theo nhiều dạng biểu đồ khác nhau; cảnh báo qua nhiều kênh như email, telegram, slack, …; Hỗ trợ nhiều loại database như InfluxDB, ElasticSearch, Graphite, …; Cung cấp nhiều plugin, nhiều dashboard template.
Nói ngắn gọn, TIG stack hoạt động như sau:
- Telegraf là 1 Agent dùng để thu thập số liệu hệ thống cũng như dịch vụ trên hệ thống mà nó chạy.
- Các số liệu được thu thập và đưa vào InfluxDB.
- Từ InfluxDB, dữ liệu sẽ được đẩy đến Grafana và được hiển thị theo các dạng đồ thị trực quan.
2. Cài đặt
Ở đây tôi cài trên hệ điều hành Ubuntu server 18.04 với IP 10.10.34.164.
2.1. Cài đặt InfluxDB
Thêm Influxdata key:
wget -qO- https://repos.influxdata.com/influxdb.key | apt-key add -
Thêm repositorty Influxdata và update lại các thay đổi:
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | tee /etc/apt/sources.list.d/influxdb.list
apt update -y
Cài đặt gói influxdb:
apt install influxdb -y
Khởi động dịch vụ và cấu hình khởi động cùng hệ thống:
systemctl start influxdb
systemctl enable influxdb
Kiểm tra trạng thái dịch vụ:
systemctl status influxdb
Kiểm tra version hiện tại của Influx:
influx -version
InfluxDB mặc định sẽ sử dụng 2 port: 8088 và 8086. Vì thế cần kiểm tra lại port đang mở
netstat -plntu
Nếu không thấy 2 port này thì thực hiện mở port
ufw allow 8086
ufw allow 8088
Cấu hình InfluxDB:
Chỉnh sửa file cấu hình /etc/influxdb/influxdb.conf
vi /etc/influxdb/influxdb.conf
Sửa các phần sau trong thẻ [http]
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# Determines whether the Flux query endpoint is enabled.
flux-enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether HTTP request logging is enabled.
log-enabled = true
Để sử dụng InfluxDB, ta nhập lệnh:
influx
Cách dùng influxDB khá giống với cách dùng mysqlDB.
Ở đây tôi sẽ tạo database và user cho Telegraf luôn:
> create database telegraf
> create user telegraf with password 'P@ssw0rd' with all privileges
Kiểm tra lại database và user vừa tạo:
> show databases
> show users
Thoát bằng lệnh:
> exit
2.2. Cài Telegraf Agent
Tùy theo hệ điều hành bạn muố giám sát mà cách cài đặt Telegraf agent sẽ khác nhau. Xem các câu lệnh cài đặt tai trang web:
Ở đây tôi sẽ cài telegraf agent trên máy này (Ubuntu 18.04) để bạn dễ hình dung. Cài trên các máy khác thao tác tương tự.
Cài đặt:
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.14.2-1_amd64.deb
sudo dpkg -i telegraf_1.14.2-1_amd64.deb
hoặc bạn có thể dùng lệnh:
apt install telegraf -y
Khởi động dịch vụ và cấu hình khởi động cùng hệ thống:
systemctl start telegraf
systemctl enable telegraf
Kiểm tra trạng thái dịch vụ
systemctl status telegraf
Kiểm tra version
telegraf --version
Cấu hình telegraf agent
Sửa file /etc/telegraf/telegraf.conf
Sửa các dòng:
hostname = "tig"
urls = ["http://10.10.34.164:8086"]
database = "telegraf"
username = "telegraf"
password = "P@ssw0rd"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.net]]
[[inputs.netstat]]
Khởi động lại dịch vụ:
systemctl restart telegraf
2.3. Cài đặt Grafana
Update và cài đặt các gói cần thiết
apt-get install -y apt-transport-https
apt-get install -y software-properties-common wget
apt-get update
apt-get upgrade
reboot
Add key vào các gói cài đặt:
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Update repo và cài đặt Grafana
apt-get update
apt-get install -y grafana
Khởi động dịch vụ và kiểm tra trạng thái
systemctl start grafana-server
systemctl enable grafana-server
systemctl status grafana-server
Kiểm tra phiên bản
grafana-server -v
Mặc định grafana sẽ chạy trên port 3000. Kiểm tra port đang mở
netstat -plntu
Mở port 3000 trong trường hợp port bị chặn
ufw allow 3000
3. Một số thao tác sử dụng
Đến đây chúng ta đã cài đặt xog TIG stack. Chúng ta truy cập vào <địa chỉ IP>:3000
.
Đăng nhập bằng tài khoản admin / admin. Sau đó, bạn sẽ được yêu cầu đổi mật khẩu ngay.
Nhập mật khẩu mới và chọn Save.
Giao diện chính của Grafana trên server của bạn tương tự như sau:
Hạn chế người dùng ẩn danh truy cập trang này
Bạn có thể hạn chế người dùng ẩn danh truy cập hệ thống của bạn. Các bước làm như sau:
Vào file cấu hình Grafana: /etc/grafana/grafana.ini
Sửa các dòng:
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access enabled = false # specify organization name that should be used for unauthenticated users org_name = Main Org. # specify role for unauthenticated users org_role = Viewer
Khởi động lại dịch vụ:
systemctl restart grafana-server
Tắt tính năng đăng ký tài khoản
Mặc định thì bạn sẽ không thấy nút đăng kí tài khoản. Tuy nhiên, có thể truy cập đường dẫn dưới để đăng kí: <địa_chỉ_ip>:3000/signup
Để chặn việc người ngoài đăng kí tài khoản để truy cập hệ thống, bạn có thể tắt tính năng đăng kí bằng cách sửa file cấu hình.
Mở file cấu hình:/etc/grafana/grafana.ini
Tìm và sửa dòng allow_sign_up = true
-> allow_sign_up = false
[users]
# disable user signup / registration
allow_sign_up = false
Khởi động lại dịch vụ
systemctl restart grafana-server
Thử đăng kí, ta sẽ thấy thông báo không thể đăng kí
Thêm InfluxDB làm nguồn dữ liệu (datasource) cho Grafana
Trên giao diện, ta chọn Configuration -> Data Sources -> Add data source
Tìm đến phần InfluxDB -> Chọn Select
Điền thông tin database
- 1 : Tên InfluxDB
- 2 : Đường dẫn truy cập InfluxDB. Tại đây, ta cài cùng trên 1 server nên là localhost
- 3 : Xác thực
- 4 : Tài khoản xác thực. Nhập tài khoản
admin
của InfluxDB và mật khẩu - 5 : Database sẽ lấy. Ta dùng
telegraf
. User và password củatelefraf
Sau khi điền xong, ta chọn Save & Test
Sau khi thành công, ta sẽ thấy thông báo như sau:
Lưu ý: Nếu gặp lỗi 502 Bad Gateway. Hãy xem lại trường URL. Để ý cả phương thức http
và https
Import Grafana dashboard
Tìm các dashboard mà bạn muốn dùng ở trang: https://grafana.com/grafana/dashboards?orderBy=name&direction=asc
Ví dụ tôi sẽ thêm dashboard Telegraf metrics như hình dưới. Copy ID của dashboard này. Ở đây là 61
Tại trang 10.10.34.164:3000. Di chuột vào dấu công và click Import. Dán ID bạn đã copy ở trên vào ô Grafana.com Dashboard
Sau khi nhập ID là 61. sẽ xuât hiện giao diện như hình dưới
Đặt tên (1) và chọn thư mục (2) tùy ý bạn. Chọn data source là InfluxDB (3). Sau đó click Import (4).
Sau khi Import bạn sẽ thấy dashboard đã được thêm
Dashboard này thể hiện rất đầy đủ. Bạn có thể thay đổi tên host, data source, interval. Xem hiển trạng thái, thông số các host bằng cách click vào các mục như summary, system, vv … Ví dụ xem thông tin system:
Lưu ý: Sau khi thay đổi bất cứ điều gì trên dashboard bạn cần lưu lại trước khi thoát.
Hoặc bạn cũng có thể tự tạo cho mình một dashboard riêng tùy theo nhu cầu sử dụng của bạn.
Kết luận
Như vậy, mình đã hướng dẫn bạn cách cài đặt TIG stack cũng như các thao tác cơ bản để bạn giám sát hệ thống của mình.
Chúc cách bạn thành công!