how-to-monitor-system-metrics-with-the-tick-stack-on-ubuntu-16-04
Ngăn xếp TICK là tập hợp các sản phẩm từ các nhà phát triển database chuỗi thời gian InfluxDB . Nó được tạo thành từ các thành phần sau:- T elegraf thu thập dữ liệu chuỗi thời gian từ nhiều nguồn khác nhau.
- I nfluxDB lưu trữ dữ liệu chuỗi thời gian.
- C hronograf trực quan hóa và vẽ biểu đồ dữ liệu chuỗi thời gian.
- K apacitor cung cấp cảnh báo và phát hiện sự bất thường trong dữ liệu chuỗi thời gian.
Bạn có thể sử dụng từng thành phần này riêng biệt, nhưng nếu sử dụng chúng cùng nhau, bạn sẽ có một hệ thống open-souce tích hợp, có thể mở rộng để xử lý dữ liệu chuỗi thời gian.
Trong hướng dẫn này, bạn sẽ cài đặt và sử dụng nền tảng này như một hệ thống giám sát open-souce . Bạn sẽ tạo ra một chút mức sử dụng CPU và nhận được cảnh báo qua email khi mức sử dụng quá cao.
Yêu cầu
Trước khi bắt đầu, bạn cần những thứ sau:
- Một server Ubuntu 16.04 được cài đặt theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 , bao gồm user không phải root có quyền sudo và firewall .
- Một server SMTP để gửi cảnh báo, cùng với chi tiết kết nối. Nếu chưa có, bạn có thể cài đặt
sendmail
bằngsudo apt-get install sendmail
. - Nếu bạn cần đảm bảo giao diện user Chronograf như đã giải thích ở bước 7, bạn cần một GitHub account đó là một phần của một tổ chức GitHub. Làm theo hướng dẫn này để tạo tổ chức GitHub.
Bước 1 - Thêm repository TICK Stack
Theo mặc định, các thành phần ngăn xếp TICK không khả dụng thông qua trình quản lý gói. Tất cả các thành phần ngăn xếp TICK sử dụng cùng một repository , vì vậy ta sẽ cài đặt một file cấu hình repository để giúp cài đặt liền mạch.
Sử dụng các lệnh sau để thêm repository InfluxData:
- curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
- source /etc/lsb-release
- echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Với repository mới tại chỗ, hãy cập nhật danh sách gói:
- sudo apt-get update
Bây giờ ta có thể cài đặt và cấu hình InfluxDB.
Bước 2 - Cài đặt InfluxDB và cấu hình xác thực
InfluxDB là database open-souce được tối ưu hóa để lưu trữ và truy xuất dữ liệu chuỗi thời gian nhanh chóng, có tính khả dụng cao. InfluxDB rất phù hợp để giám sát hoạt động, số liệu ứng dụng và phân tích thời gian thực.
Chạy lệnh sau để cài đặt InfluxDB:
- sudo apt-get install influxdb
Sau khi cài đặt hoàn tất, hãy bắt đầu dịch vụ InfluxDB:
- sudo systemctl start influxdb
Sau đó, đảm bảo dịch vụ đang chạy bình thường:
- systemctl status influxdb
Bạn sẽ thấy trạng thái sau, xác minh dịch vụ đang chạy:
[secondary_label Output ● influxdb.service - InfluxDB is an open-source, distributed, time series database Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2017-03-13 15:20:53 CST; 11s ago Docs: https://docs.influxdata.com/influxdb/ Main PID: 1619 (influxd) CGroup: /system.slice/influxdb.service └─1619 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
InfluxDB đang chạy, nhưng bạn cần cài đặt xác thực user để hạn chế quyền truy cập vào database . Cho phép tạo ít nhất một admin-user .
Khởi động console InfluxDB:
- influx
Thực hiện lệnh sau để tạo admin-user mới. Ta sẽ tạo một user sammy
với password sammy_admin
, nhưng bạn có thể sử dụng bạn muốn .
- CREATE USER "sammy" WITH PASSWORD 'sammy_admin' WITH ALL PRIVILEGES
Xác minh user được tạo:
- show users
Bạn sẽ thấy kết quả sau, xác minh user của bạn đã được tạo:
Output user admin ---- ----- sammy true
Bây giờ user đã tồn tại, hãy thoát khỏi console InfluxDB:
- exit
Bây giờ, hãy mở file /etc/influxdb/influxdb.conf
trong editor . Đây là file cấu hình cho InfluxDB.
- sudo nano /etc/influxdb/influxdb.conf
Tìm phần [http]
, bỏ ghi chú tùy chọn auth-enabled
và đặt giá trị của nó thành true
:
... [http] # Determines whether HTTP endpoint is enabled. # enabled = true # The bind address used by the HTTP service. # bind-address = ":8086" # Determines whether HTTP authentication is enabled. auth-enabled = true ...
Sau đó, lưu file , thoát khỏi editor và khởi động lại dịch vụ InfluxDB:
- sudo systemctl restart influxdb
InfluxDB hiện đã được cấu hình , vì vậy hãy cài đặt Telegraf, một đại lý thu thập số liệu.
Bước 3 - Cài đặt và cấu hình Telegraf
Telegraf là một đại lý nguồn mở thu thập các chỉ số và dữ liệu trên hệ thống mà nó đang chạy hoặc từ các dịch vụ khác. Sau đó, Telegraf ghi dữ liệu vào InfluxDB hoặc các kết quả khác.
Chạy lệnh sau để cài đặt Telegraf:
- sudo apt-get install telegraf
Dịch vụ Telegraf bắt đầu tự động sau khi cài đặt.
Telegraf sử dụng các plugin để nhập và xuất dữ liệu. Plugin kết quả mặc định dành cho InfluxDB. Vì ta đã cài đặt xác thực user cho IndexDB, ta phải sửa đổi file cấu hình của Telegraf để chỉ định tên user và password mà ta đã cấu hình . Mở file cấu hình Telegraf trong editor :
- sudo nano /etc/telegraf/telegraf.conf
Tìm phần [outputs.influxdb]
và cung cấp tên user và password :
[[outputs.influxdb]] ## The full HTTP or UDP endpoint URL for your InfluxDB instance. ## Multiple urls can be specified as part of the same cluster, ## this means that only ONE of the urls will be written to each interval. # urls = ["udp://localhost:8089"] # UDP endpoint example urls = ["http://localhost:8086"] # required ## The target database for metrics (telegraf will create it if not exists). database = "telegraf" # required ... ## Write timeout (for the InfluxDB client), formatted as a string. ## If not provided, will default to 5s. 0s means no timeout (not recommended). timeout = "5s" username = "sammy" password = "sammy_admin" ## Set the user agent for HTTP POSTs (can be useful for log differentiation) # user_agent = "telegraf" ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes) # udp_payload = 512
Lưu file , thoát khỏi editor và khởi động lại Telegraf:
- sudo systemctl restart telegraf
Sau đó, kiểm tra xem dịch vụ có chạy đúng cách hay không:
- systemctl status telegraf
Bạn sẽ thấy trạng thái sau, cho biết Telegraf đang chạy.
Output● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2017-03-14 15:24:41 CST; 1min 26s ago Docs: https://github.com/influxdata/telegraf Main PID: 1752 (telegraf) CGroup: /system.slice/telegraf.service └─1752 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
Telegraf hiện đang thu thập dữ liệu và viết nó lên InfluxDB. Hãy mở console InfluxDB và xem Telegraf đang lưu trữ những phép đo nào trong database . Kết nối với tên user và password bạn đã cấu hình trước đó:
- influx -username 'sammy' -password 'sammy_admin'
Sau khi đăng nhập, hãy thực hiện lệnh này để xem các database có sẵn:
- show databases
Bạn sẽ thấy database telegraf
được liệt kê trong kết quả :
Output name: databases name ---- _internal telegraf
Lưu ý : Nếu bạn không thấy database telegraf
, hãy kiểm tra cài đặt Telegraf mà bạn đã cấu hình đảm bảo bạn đã chỉ định tên user và password thích hợp.
Hãy xem Telegraf đang lưu trữ những gì trong database đó. Thực hiện lệnh sau để chuyển sang database Telegraf:
- use telegraf
Hiển thị các phép đo khác nhau mà Telegraf đã thu thập bằng cách chạy lệnh này:
- show measurements
Bạn sẽ thấy kết quả sau:
Output name: measurements name ---- cpu disk diskio kernel mem processes swap system
Như bạn thấy, Telegraf đã thu thập và lưu trữ rất nhiều thông tin trong database này.
Có hơn 60 plugin đầu vào cho Telegraf. Nó có thể thu thập các số liệu từ nhiều dịch vụ và database phổ biến, bao gồm:
- Apache
- Cassandra
- Docker
- Elasticsearch
- Graylog
- Bảng IP
- MySQL
- PostgreSQL
- Redis
- SNMP
- và nhiều người khác
Bạn có thể xem hướng dẫn sử dụng cho từng plugin đầu vào bằng cách chạy telegraf -usage plugin-name
trong cửa sổ terminal .
Thoát khỏi console InfluxDB:
- exit
Bây giờ ta biết Telegraf đang lưu trữ các phép đo, hãy cài đặt Kapacitor để xử lý dữ liệu.
Bước 4 - Cài đặt Kapacitor
Kapacitor là một công cụ xử lý dữ liệu. Nó cho phép bạn sử dụng logic tùy chỉnh của riêng mình để xử lý cảnh báo với các ngưỡng động, so khớp số liệu cho các mẫu hoặc xác định các bất thường thống kê. Ta sẽ sử dụng Kapacitor để đọc dữ liệu từ InfluxDB, tạo cảnh báo và gửi những cảnh báo đó đến một địa chỉ email được chỉ định.
Chạy lệnh sau để cài đặt Kapacitor:
- sudo apt-get install kapacitor
Mở file cấu hình Kapacitor trong editor :
- sudo nano /etc/kapacitor/kapacitor.conf
Xác định vị trí của phần [[influxdb]]
và cung cấp tên user và password để kết nối với database InfluxDB:
# Multiple InfluxDB configurations can be defined. # Exactly one must be marked as the default. # Each one will be given a name and can be referenced in batch queries and InfluxDBOut nodes. [[influxdb]] # Connect to an InfluxDB cluster # Kapacitor can subscribe, query and write to this cluster. # Using InfluxDB is not required and can be disabled. enabled = true default = true name = "localhost" urls = ["http://localhost:8086"] username = "sammy" password = "sammy_admin" ...
Lưu file , thoát khỏi editor và khởi động Kapacitor:
- sudo systemctl start kapacitor
Bây giờ hãy xác minh Kapacitor đang chạy. Kiểm tra danh sách nhiệm vụ của Kapacitor bằng lệnh sau:
- kapacitor list tasks
Nếu Kapacitor được cài đặt và chạy, bạn sẽ thấy một danh sách trống các nhiệm vụ, như sau:
Output ID Type Status Executing Databases and Retention Policies
Với Kapacitor được cài đặt và cấu hình , hãy cài đặt thành phần giao diện user của ngăn xếp TICK để ta có thể xem một số kết quả và cấu hình một số cảnh báo.
Bước 5 - Cài đặt và cấu hình Chronograf
Chronograf là một ứng dụng vẽ đồ thị và trực quan hóa cung cấp các công cụ để trực quan hóa dữ liệu giám sát và tạo các luật cảnh báo và tự động hóa. Nó bao gồm hỗ trợ cho các mẫu và có một thư viện các trang tổng quan thông minh, được cấu hình trước cho các tập dữ liệu chung. Ta sẽ cấu hình nó để kết nối với các thành phần khác mà ta đã cài đặt.
Download và cài đặt gói mới nhất:
- wget https://dl.influxdata.com/chronograf/releases/chronograf_1.2.0~beta5_amd64.deb
- sudo dpkg -i chronograf_1.2.0~beta5_amd64.deb
Sau đó bắt đầu dịch vụ Chronograf:
- sudo systemctl start chronograf
Lưu ý : Nếu bạn đang sử dụng Tường lửa không phức tạp, hãy cấu hình nó để cho phép kết nối đến cổng 8888
:
- sudo ufw allow 8888/tcp
Làm theo hướng dẫn Cách cài đặt Tường lửa với UFW trên Ubuntu 16.04 để tìm hiểu thêm về UFW.
Bây giờ, bạn có thể truy cập giao diện Chronograf bằng cách truy cập http:// your_server_ip :8888
trong trình duyệt web của bạn .
Bạn sẽ thấy một trang chào mừng như trong hình sau:
Nhập tên user và password cho database InfluxDB và nhấp vào Kết nối nguồn mới để tiếp tục.
Sau khi kết nối, bạn sẽ thấy danh sách các server . Nhấp vào tên server cho server của bạn để mở trang tổng quan với một loạt biểu đồ cấp hệ thống về server của bạn, như thể hiện trong hình ảnh sau:
Bây giờ hãy kết nối Chronograf với Kapacitor để cài đặt cảnh báo. Di chuột qua biểu tượng bánh răng trong menu chuyển bên trái và nhấp vào Kapacitor để mở trang cấu hình.
Sử dụng các chi tiết kết nối mặc định; ta đã không cấu hình tên user và password cho Kapacitor. Nhấp vào Kết nối Kapacitor . Khi Kapacitor kết nối thành công, bạn sẽ thấy phần Định cấu hình điểm cuối cảnh báo xuất hiện bên dưới biểu mẫu.
Kapacitor hỗ trợ nhiều điểm cuối cảnh báo:
- HipChat
- OpsGenie
- PagerDuty
- Sensu
- Slack
- SMTP
- Nói chuyện
- Telegram
- VictorOps
Phương thức giao tiếp đơn giản nhất là SMTP , được chọn theo mặc định. Điền vào trường Từ email với địa chỉ mà từ đó cảnh báo sẽ được gửi. Sau đó điền thông tin chi tiết cho server SMTP của bạn hoặc để chúng ở giá trị mặc định nếu bạn đã cài đặt sendmail
. Sau đó nhấp vào Lưu .
Với cấu hình tại chỗ, hãy tạo một số cảnh báo.
Bước 6 - Cấu hình cảnh báo
Hãy cài đặt một cảnh báo đơn giản để tìm mức sử dụng CPU cao.
Di chuột qua biểu tượng dấu chấm than trong menu chuyển bên trái và nhấp vào Luật Kapacitor . Sau đó nhấp vào Tạo luật mới .
Trong phần đầu tiên, chọn chuỗi thời gian bằng cách nhấp vào telegraf.autogen . Sau đó chọn hệ thống từ danh sách xuất hiện. Sau đó chọn load1 . Bạn sẽ thấy ngay một biểu đồ tương ứng trong phần bên dưới.
Phía trên biểu đồ, tìm trường có nội dung Gửi cảnh báo trong đó tải 1 lớn hơn và nhập 0.8
cho giá trị.
Sau đó, dán văn bản sau vào trường Thông báo cảnh báo để cấu hình văn bản của thông báo cảnh báo:
{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}
Bạn có thể di chuột qua các mục trong phần Mẫu để xem mô tả của từng trường.
Sau đó chọn tùy chọn Smtp từ danh sách thả xuống Gửi cảnh báo này đến và nhập địa chỉ email của bạn vào trường liên quan.
Theo mặc định, bạn sẽ nhận được tin nhắn ở định dạng JSON, như sau:
{ "Name":"system", "TaskName":"chronograf-v1-50c67090-d74d-42ba-a47e-45ba7268619f", "Group":"nil", "Tags":{ "host":"centos-tick" }, "ID":"TEST:nil", "Fields":{ "value":1.25 }, "Level":"CRITICAL", "Time":"2017-03-08T12:09:30Z", "Message":"TEST:nil is CRITICAL value: 1.25" }
Bạn có thể cài đặt nhiều thông báo mà con người có thể đọc được cho các cảnh báo qua thư. Để thực hiện việc này, hãy nhập thư của bạn vào hộp văn bản với phần giữ chỗ Đặt nội dung email ở đây .
Bạn có thể đổi tên luật này bằng cách nhấp vào tên của luật ở góc trên cùng bên trái của trang và nhập tên mới.
Cuối cùng, nhấp vào Lưu luật ở trên cùng bên phải để hoàn tất việc cấu hình luật này.
Để kiểm tra cảnh báo mới được tạo này, hãy tạo mức tăng đột biến CPU bằng cách sử dụng lệnh dd
để đọc dữ liệu từ /dev/zero
và gửi đến /dev/null
:
- dd if=/dev/zero of=/dev/null
Hãy để lệnh chạy trong vài phút, đủ để tạo ra một sự đột biến. Bạn có thể dừng lệnh bất kỳ lúc nào bằng cách nhấn CTRL+C
Sau một lúc, bạn sẽ nhận được một tin nhắn e-mail. Ngoài ra, bạn có thể xem tất cả các cảnh báo của bạn bằng cách nhấp vào Lịch sử cảnh báo trong menu chuyển bên trái của giao diện user Chronograf.
Lưu ý : Khi bạn đã xác minh bạn có thể nhận được cảnh báo, hãy nhớ dừng lệnh dd
mà bạn đã bắt đầu bằng CTRL+C
Ta có thông báo đang chạy, nhưng bất kỳ ai cũng có thể đăng nhập vào Chronograf. Hãy hạn chế acess.
Bước 7 - Bảo mật Chronograf bằng OAuth
Theo mặc định, bất kỳ ai biết địa chỉ của server chạy ứng dụng Chronograf đều có thể xem bất kỳ dữ liệu nào. Nó được chấp nhận cho môi trường thử nghiệm nhưng không cho production . Chronograf hỗ trợ xác thực OAuth cho Google, Heroku và GitHub. Ta sẽ cấu hình đăng nhập qua account GitHub , vì vậy bạn cần một account để tiếp tục.
Đầu tiên, đăng ký một ứng dụng mới với GitHub. Đăng nhập vào account GitHub của bạn và chuyển đến https://github.com/settings/application/new .
Sau đó điền vào biểu mẫu với các chi tiết sau:
- Điền vào Tên ứng dụng bằng Chronograf hoặc tên mô tả phù hợp.
- Đối với URL Trang chủ , hãy sử dụng
http:// your_server_ip :8888
. - Điền vào URL gọi lại Ủy quyền bằng
http:// your_server_ip :8888/oauth/github/callback
. - Bấm Đăng ký ứng dụng để lưu cài đặt.
- Sao chép các giá trị Client ID và Client Secret được cung cấp trên màn hình tiếp theo.
Tiếp theo, chỉnh sửa tập lệnh systemd của Chronograf để kích hoạt xác thực. Mở file /lib/systemd/system/chronograf.service
:
- sudo nano /lib/systemd/system/chronograf.service
Sau đó tìm phần [Service]
và chỉnh sửa dòng bắt đầu bằng ExecStart=
:
[Service] User=chronograf Group=chronograf ExecStart=/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t 'secret_token' -i 'your_github_client_id' -s 'your_github_client_secret' -o 'your_github_organization' KillMode=control-group Restart=on-failure
secret_token
được yêu cầu bởi tất cả các nhà cung cấp OAuth. Đặt nó thành một chuỗi ngẫu nhiên. Sử dụng ID ứng dụng Github, Bí mật ứng dụng Github và Tổ chức Github của bạn cho các giá trị khác.
Cảnh báo : Nếu bạn bỏ qua tùy chọn tổ chức Github khỏi lệnh, mọi user Github sẽ có thể đăng nhập vào version Chronograf của bạn. Tạo một tổ chức Github và thêm những user thích hợp vào tổ chức để hạn chế quyền truy cập.
Lưu file , thoát khỏi editor và khởi động lại dịch vụ Chronograf:
- sudo systemctl daemon-reload
- sudo systemctl restart chronograf
Mở http:// your_server_ip :8888
để truy cập giao diện Chronograf. Lần này bạn sẽ thấy nút Đăng nhập bằng Github . Nhấp vào nút để đăng nhập và bạn cần cho phép ứng dụng truy cập vào account Github của bạn. Khi bạn cho phép truy cập, bạn sẽ đăng nhập.
Kết luận
Trong hướng dẫn này, bạn đã thấy cách ngăn xếp TICK có thể là một công cụ mạnh mẽ để lưu trữ, phân tích và trực quan hóa dữ liệu chuỗi thời gian. Nó có nhiều tính năng và trường hợp sử dụng. Ví dụ: bạn có thể sử dụng Kapacitor để thực hiện phát hiện bất thường hoặc xây dựng bảng xếp hạng trực tiếp về điểm số của trò chơi . Bạn có thể tìm hiểu thêm về ngăn xếp TICK bằng cách đọc tài liệu chính thức .
Các tin liên quan
Cách cài đặt và cấu hình Postfix trên Ubuntu 16.042017-03-16
Cách cấu hình client FreeIPA trên Ubuntu 16.04
2017-03-08
Cách cài đặt Moodle trên Ubuntu 16.04
2017-03-02
Cách cài đặt và bảo mật MongoDB trên Ubuntu 16.04
2017-02-24
Cách cài đặt ionCube trên Ubuntu 16.04
2017-01-11
Cách thiết lập xác thực đa yếu tố cho SSH trên Ubuntu 16.04
2017-01-10
Cách chuyển cài đặt ownCloud sang Nextcloud trên Ubuntu 14.04
2017-01-06
Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 16.04
2017-01-05
Cách xây dựng Go từ Nguồn trên Ubuntu 16.04
2017-01-04
Cách thiết lập firewall với UFW trên Ubuntu 16.04
2016-12-22