Thứ năm, 16/03/2017 | 00:00 GMT+7

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ằng sudo 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 :

/etc/influxdb/influxdb.conf
...     [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 :

/etc/telegraf/telegraf.conf
    [[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:

/etc/kapacitor/kapacitor.conf
# 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:

Màn hình chào mừng Chronograf với các trường để kết nối với nguồn dữ liệu

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:

Trang tổng quan cho  server  của bạn

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.

Cấu hình Kapacitor

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:

Tin nhắn mẫu
{     "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:

  1. Điền vào Tên ứng dụng bằng Chronograf hoặc tên mô tả phù hợp.
  2. Đối với URL Trang chủ , hãy sử dụng http:// your_server_ip :8888 .
  3. Điền vào URL gọi lại Ủy quyền bằng http:// your_server_ip :8888/oauth/github/callback .
  4. Bấm Đăng ký ứng dụng để lưu cài đặt.
  5. Sao chép các giá trị Client IDClient 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= :

/lib/systemd/system/chronograf.service
[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 .


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Postfix trên Ubuntu 16.04
2017-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