Contents
Cài đặt InfluxDB trên Ubuntu
Bài viết này sẽ hướng dẫn cách cài đặt InfluxDB trên Ubuntu.
Influxdb là một database time series mã nguồn mở, được viết bằng ngôn ngữ Golang bởi Influxdata – được tối ưu hóa để lưu trữ và truy suất dữ liệu dạng time series như là metrics monitor, analytics một cách nhanh chóng có tính khả dụng cao.
Cài đặt InfluxDB trên Ubuntu
Với bài hướng dẫn này InfluxDB sẽ được tiến hành cài đặt trên VPS OS Ubuntu 20 LTS hoặc Server OS Ubuntu 20 LTS.
Cập nhật hệ thống
Để đảm bảo rằng tất cả các phụ thuộc của InfluxDB đều được cập nhật, hãy thực thi lệnh bên dưới:
apt-get update && apt-get upgrade
Trong quá trình cập nhật hệ thống chúng ta chờ từ 5 phút đến 15 phút.
Tải và cài đặt InfluxDB Package
Trong bước này, chúng ta sẽ cài đặt InfluxDB bằng cách kéo các file cài đặt từ kho lưu trữ chính thức được duy trì tại Influxdata.com. Chúng ta sẽ thực thi lệnh bên dưới:
Đầu tiên, chúng ta cần thêm repository của influxdata vào sourcelist hệ thống:
echo "deb https://repos.influxdata.com/ubuntu bionic stable" | tee /etc/apt/sources.list.d/influxdb.list
Sau đó, import key:
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
Chúng ta sẽ thu về được kết quả như sau:
OK
Sau khi thực hiện các bước trên, tiến hành cập nhật lại hệ thống và cài đặt influxdb từ công cụ quản lý package apt:
apt update
apt install influxdb
Sau khi cài đặt xong influxdb, chúng ta dùng lệnh sau để cho phép influxdb được khởi chạy tự động ngay khi hệ thống được khởi động:
systemctl start influxdb
systemctl enable influxdb
Định cấu hình InfluxDB
Trong bước này, chúng ta sẽ định cấu hình user “admin” mới có đặc quyền root cho máy chủ InfluxDB của mình. Nếu chúng ta làm điều này trước khi bật xác thực trên tệp cấu hình. Chúng ta có thể thực hiện lệnh sau:
influx
Tiếp theo, chúng ta sẽ nhận được phản hồi sau cho biết kết nối, cổng và số phiên bản hiện tại của bạn. Lời nhắc > cho thấy máy chủ InfluxDB của chúng ta đã sẵn sàng chấp nhận các lệnh.
Connected to http://localhost:8086 version 1.8.9
InfluxDB shell version: 1.8.9
>
Thực thi lệnh sau tạo tài khoản admin, và thay thế EXAMPLE_PASSWORD bằng một giá trị mạnh. Tên người dùng admin cũng linh hoạt và chúng ta có thể thay thế nó bằng một tên thích hợp (Ví dụ: root hoặc super_user):
CREATE USER admin WITH PASSWORD 'EXAMPLE_PASSWORD' WITH ALL PRIVILEGES
Tiếp theo, thoát khỏi InfluxDB bằng cách thực hiện lệnh thoát:
exit
Bước tiếp theo là kích hoạt xác thực bằng cách sửa đổi tệp cấu hình InfluxDB chính. Sử dụng trình soạn thảo quen thuộc để mở tệp “/etc/influxdb/influxdb.conf”.
Tìm đến dòng sau và thực hiện thay đổi từ
#auth-enabled = false
sang
auth-enabled = true
Sau khi đã hoàn tất quá trình thay đổi cấu hình influxdb, bạn cần phải khởi động lại influxdb để áp dụng các thay đổi.
systemctl restart influxdb
Bây giờ chúng ta có thể đăng nhập vào máy chủ InfluxDB bằng user admin và mật khẩu mà chúng đã tạo ở trên bằng cách thực hiện lệnh sau.
influx -username 'admin' -password 'EXAMPLE_PASSWORD'
Chúng ta có thể thực hiện show database như sau:
SHOW DATABASES
name: databases
name
----
_internal
Tạo InfluxDB Database
InfluxDB hỗ trợ hầu hết các câu lệnh SQL dưới dạng Ngôn ngữ truy vấn ảnh hưởng (InfluxQL). Trong bước này, chúng ta sẽ thiết lập một cơ sở dữ liệu có tên “water_db” bằng cách thực thi lệnh sau:
CREATE DATABASE water_db
Sau khi tạo database thành công chúng ta thực hiện lệnh sau để kiểm tra database được tạo:
SHOW DATABASES
name: databases
name
----
_internal
water_db
Write and Explore InfluxDB Data
Chúng ta sẽ thực thi các câu lệnh InfluxQL bổ sung dựa trên cơ sở dữ liệu water_db mới của mình. Do đó, trước khi chúng ta thực hiện thêm bất kỳ câu lệnh nào, hãy chạy lệnh USE để chuyển sang cơ sở dữ liệu water_db:
USE water_db
Using database water_db
Chúng ta có cơ sở dữ liệu có thể ghi và truy vấn. Không giống như trong các cơ sở dữ liệu SQL khác, dữ liệu trong InfluxDB được tổ chức theo định dạng “time series” yêu cầu ít nhất 4 thuộc tính chi tiết bên dưới:
- time: Đây là time_stamp duy nhất được ghi tự động khi chúng ta chèn một điểm vào cơ sở dữ liệu InfluxDB.
- measurement: Tên của số liệu mà chúng ta đang đo lường. Ví dụ: cpu_load, water_level, heart_rate hoặc pin_capacity.
- tags: Đây là các thẻ key-value trị chứa dữ liệu meta duy nhất về phép đo. Ví dụ: tank_location=MIAMI hoặc user=POASAX.
- fields: Đây là kho lưu trữ key-value chứa các giá trị dữ liệu thực tế. Ví dụ: value_in_ft=7.8 hoặc heart_rate_bpm=72.
Thực hiện các lệnh sau để chèn một số ví dụ vào database water_level để thực hiện chức năng truy vấn InfluxDB.
INSERT water_level,tank_location=MIAMI value_in_ft=10.00
INSERT water_level,tank_location=SEATTLE value_in_ft=5.4
INSERT water_level,tank_location=ATLANTA value_in_ft=0.5
INSERT water_level,tank_location=DALLAS value_in_ft=3.2
INSERT water_level,tank_location=LOS-ANGELES value_in_ft=1.3
Thực thi một số lệnh SELECT cơ bản đối với database water_level.
Ví dụ 1:
SELECT "tank_location", "value_in_ft" FROM "water_level"
name: water_level
time tank_location value_in_ft
---- ------------- -----------
1633582175789794330 MIAMI 10
1633582182254880137 SEATTLE 5.4
1633582187768015879 ATLANTA 0.5
1633582195429723924 DALLAS 3.2
1633582202418133579 LOS-ANGELES 1.3
Ví dụ 2:
SELECT "tank_location", "value_in_ft" FROM "water_level" WHERE tank_location='MIAMI'
name: water_level
time tank_location value_in_ft
---- ------------- -----------
1633582175789794330 MIAMI 10
Chúng ta có thể thực hiện thêm các ví dụ như ảnh sau:
Thoát khỏi InfluxDB server:
quit
Thực hành với InfluxDB HTTP API
Vì InfluxDB được xây dựng cho các nhà phát triển, nó có một API rất hữu ích cho phép bạn truy vấn các chỉ số bằng các công cụ phổ biến mà không cần viết thêm. Để truy vấn dữ liệu từ cơ sở dữ liệu “water_db”, hãy sử dụng lệnh curl của Linux. Thay thế EXAMPLE_PASSWORD bằng giá trị mật khẩu chính xác.
curl -G 'http://localhost:8086/query?pretty=true' -u admin:EXAMPLE_PASSWORD --data-urlencode "db=water_db" --data-urlencode "q=SELECT \"tank_location\", \"value_in_ft\" FROM \"water_level\""
Bây giờ chúng ta sẽ thấy kết quả sau với tất cả các dữ liệu được đặt ở định dạng JSON.
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "water_level",
"columns": [
"time",
"tank_location",
"value_in_ft"
],
"values": [
[
"2021-09-03T09:07:04.738274574Z",
"MIAMI",
10
],
[
"2021-09-03T09:07:13.290269685Z",
"SEATTLE",
5.4
],
[
"2021-09-03T09:07:29.030041003Z",
"DALLAS",
3.2
],
[
"2021-09-03T09:08:16.340252215Z",
"LOS-ANGELES",
1.3
]
]
}
]
}
]
}
Vậy là đã hoàn thành quá trình cài đặt và sử dụng một số câu hình cơ bản của InfluxDB trên VPS OS Ubuntu 20 LTS hoặc Server OS Ubuntu 20 LTS.
Chúc các bạn thành công!