SIEM/Log Management Tìm hiểu tổng quan về Telegraf

I. Telegraf
1. Giới thiệu

Là một máy chủ agent hướng theo cơ chế plugin, dùng cho thu thập, xử lí và viết chỉ số và sự kiện. Viết bằng ngôn ngữ Go, biên dịch thành một tệp nhị phân duy nhất không cần cài thêm các phụ thuộc bên ngoài.

2. Loại Plugin
2.1. Plugin thường

Tất cả chỉ số sẽ được thu thập qua một pipeline sau: [1]
1791478028576.png


2.1.1. Plugin đầu vào
Thành phần thu thập chỉ số, Telegraf sẽ gọi các plugin đầu vào thăm dò thực hiện thu thập chỉ số trên mỗi khoảng thời gian thu thập.
Riêng các plugin đầu vào dạng dịch vụ hoạt động bằng cách lắng nghe thay vì thăm dò, sẽ phát ra chỉ số khi dữ liệu từ nguồn như hàng đợi thông điệp (Kafka, MQTT, AMQP), trình lắng nghe socket và webhook… đến mà không cần chờ đến khoảng thời gian.
Các plugin này đọc dữ liệu thô sẽ sử dụng trình phân tích cú pháp thành chỉ số Telegraf với một định dạng dữ liệu được xác định bởi trường "data_format".

2.1.2. Plugin bộ xử lý
Tác động lên các chỉ số khi chúng đi qua và ngay lập tức xuất ra kết quả. Các ứng dụng phổ biến bao gồm đổi tên chỉ số, chuyển đổi đơn vị, bổ sung thẻ, cho chỉ số và thực hiện các phép tính.
Những chỉ số khớp với bộ lọc của bộ xử lý sẽ được chuyển đến bộ xử lý đó, còn những chỉ số không khớp sẽ bỏ qua bộ xử lý và tiếp tục đi đến các bước tiếp theo mà không bị thay đổi.
Lưu ý: plugin này sẽ chạy hai lần nhưng lần hai chỉ tác động đến kết quả của plugin tổng hợp.

2.1.3. Plugin tổng hợp
Tạo ra các chỉ số tổng hợp mới, chẳng hạn như giá trị trung bình, giá trị tối thiểu, giá trị tối đa và độ lệch chuẩn. Mỗi bộ tổng hợp sẽ thu thập các chỉ số phù hợp trong một khoảng thời gian xác định bởi thành phần "period" trong cấu hình và xuất ra các giá trị tổng hợp khi kết thúc mỗi chu kỳ đó. Có đặc điểm sau:
- Các plugin này chỉ tổng hợp các chỉ số có dấu thời gian nằm trong chu kỳ hiện tại; các chỉ số cũ hơn chu kỳ này sẽ không được đưa vào.
- Các kết quả tổng hợp được tạo ra cho từng tổ hợp duy nhất bao gồm: phép đo, trường và tập hợp thẻ.
- Mặc định, plugin sẽ tạo kết quả tổng hợp và đồng thời chuyển chỉ số gốc đến bước tiếp theo.

2.1.4. Plugin đầu ra
Ghi các chỉ số vào đích đến của chúng, ghi kết quả theo batch, tối đa sẽ dựa trên metric_batch_size, ghi mỗi khi đến chu kỳ flush_interval hoặc khi batch đầy. Hỗ trợ tuần tự hóa chuyển đổi dạng chỉ số Telegraf thành dạng đầu ra xác định bởi trường "data_format". [2]
Plugin này có buffer giữ chỉ số, nếu không gửi được đến đích thì buffer sẽ giữ đến khi đầy và sẽ gửi lại khi đến chu kỳ tiếp theo.

2.2. Plugin đặc biệt
Gồm 2 loại:
- Các plugin lưu trữ bí mật giúp tách biệt thông tin xác thực khỏi các tệp cấu hình dạng văn bản thuần và giải quyết chúng tại thời điểm thực thi.
- Các plugin bên ngoài chạy tách biệt với tệp thực thi Telegraf, có thể được viết bằng bất kỳ ngôn ngữ nào, thông qua nhóm plugin execd.

3. Metric
3.1. Định nghĩa

Là dạng biểu diễn nội bộ được sử dụng để mô hình hóa dữ liệu trong quá trình xử lý, dựa sát vào mô hình dữ liệu InfluxDB và bao gồm bốn thành phần chính [3]:
- Tên phép đo là mô tả và không gian tên cho chỉ số. Ví dụ "cpu", "mem".
- Thẻ là các cặp khóa-giá trị chuỗi, thường được dùng để xác định nguồn gốc của chỉ số. Ví dụ như tên máy chủ hoặc khu vực.
- Trường là các cặp khóa-giá trị có kiểu dữ liệu xác định, chứa dữ liệu của chỉ số. Ví dụ giá trị số biểu thị mức sử dụng.
- Dấu thời gian là ngày và giờ gắn liền với các trường dữ liệu.
Ví dụ, chỉ số dưới đây có tên phép đo là "cpu", hai thẻ, hai trường và dấu thời gian với độ phân giải nano giây:
cpu,host=web01,cpu=cpu0 usage_idle=92.5,usage_user=4.2 1717000000000000000

3.2. Tuần tự hóa chỉ số
Telegraf lưu trữ các chỉ số trong bộ nhớ khi chúng di chuyển qua quy trình xử lý dữ liệu. Để ghi, truyền tải hoặc hiển thị các chỉ số, Telegraf chuyển đổi từng chỉ số sang một dạng biểu diễn cụ thể bằng cách sử dụng định dạng dữ liệu đầu.

3.3. Các chỉ số theo dõi
Các chỉ số theo dõi đảm bảo rằng dữ liệu được chuyển từ đầu vào sang đầu ra trước khi Telegraf gửi xác nhận về thông điệp cho đầu vào đó.
Sử dụng với với các nguồn dữ liệu dựa trên hàng đợi để đảm bảo thông điệp đến được đích trước khi nguồn xóa chúng.

II. Tích hợp Prometheus
1. Prometheus đầu vào

Telegraf sẽ đóng vai trò là là bộ phận thu thập dữ liệu từ các ứng dụng và exporter có cung cấp điểm cuối "/metrics" chuẩn Prometheus, sau đó ghi dữ liệu đó về cơ sở dữ liệu khác như InfluxDB 3. [4] [5]
Telegraf có cung cấp Prometheus Input Plugin, cung cấp một số cấu hình sau:
- Khám phá dịch vụ Kubernetes: Các URL được liệt kê trong tham số `kubernetes_services` sẽ được mở rộng bằng cách tra cứu tất cả các bản ghi A được gán cho tên máy chủ theo cơ chế khám phá dịch vụ DNS của Kubernetes.
- Thu thập dữ liệu Kubernetes: bật tùy chọn này cho phép plugin thu thập các chú thích Prometheus trên các pod Kubernetes. Ví dụ như "prometheus.io/scrape" bật thu thập, "prometheus.io/path" thay đổi đường dẫn mặc định.
- Khám phá dịch vụ HTTP: Việc kích hoạt tùy chọn này và cấu hình URL sẽ cho phép plugin truy vấn một điểm cuối khám phá dịch vụ HTTP cụ thể để tìm các máy chủ khả dụng.

2. Prometheus đầu ra
Telegraf sẽ đóng vai trò là là bộ phận thu thập dữ liệu từ nhiều nguồn khác nhau như bộ nhớ hệ thống, CPU hoặc cơ sở dữ liệu SQL, lưu trữ trong lưu trữ tạm thời trong RAM và khởi chạy HTTP endpoint của riêng nó, để Prometheus kéo về. [6] [7]
Telegraf cũng cung cấp một plugin Prometheus Output Plugin, cung cấp cấu hình sau:
- "listen" là nơi cấu hình cổng lắng nghe cho Prometheus yêu cầu đến.
- "path" là cấu hình đường dẫn truy cập chỉ số, mặc địng là "/metric".
- "expiration_interval" là thời gian giữ dữ liệu.

3. So sánh
Prometheus là đầu vào sẽ thích hợp nếu các ứng dụng đã được tích hợp sẵn các thư viện client của Prometheus, nhưng lưu trữ dài hạn và hệ thống dashboard tập trung lại được xây dựng trên InfluxDB hoặc một cơ sở dữ liệu chuỗi thời gian.
Prometheus là đầu ra sẽ thích hợp nếu toàn bộ hệ thống giám sát được xây dựng dựa trên Prometheus và Grafana, nhưng cần khả năng thu thập dữ liệu hệ điều hành và cơ sở hạ tầng chuyên sâu, dễ dàng triển khai của Telegraf, những tính năng mà các Prometheus exporter tiêu chuẩn khó có thể đáp ứng toàn diện.

III. vSphere plugin
1. Giới thiệu

Đối với vSphere, Telegraf cung cấp một plugin VMware vSphere Input Plugin, mục đích là thu thập chỉ số từ các object như cluster, máy chủ, nhóm tài nguyên, máy ảo, Datastore và thông tin vSAN. [8]
2. Thông số kết nối
Để kết nối Telegraf với một hoặc nhiều máy chủ vCenter, cần cung cấp vCenter SDK URL, thông tin đăng nhập và chứng chỉ SSL, ví dụ cụ thể:
[[inputs.vsphere]]
vcenters = [ "https://vcenter.local/sdk" ]
username = "user@corp.local"
password = "secret"
insecure_skip_verify = true

2. Khoảng thời gian
Về khoảng thời gian thì tùy thuộc vào hai loại chỉ số:
- Chỉ số thời gian thực: Dữ liệu có sẵn với độ chi tiết theo chu kỳ 20 giây. Các chỉ số này được lưu trữ trong bộ nhớ, cho phép truy vấn rất nhanh và ít tốn kém tài nguyên.
- Chỉ số lịch sử: Có sẵn ở các mức tổng hợp (rollup) mặc định là 5 phút, 30 phút, 2 giờ và 24 giờ. Plugin vSphere Telegraf chỉ sử dụng mức tổng hợp chi tiết nhất với mặc định là 5 phút.
Do một phiên bản plugin chỉ sử dụng chung một chu kỳ thu thập dữ liệu, phương pháp tối ưu là chạy hai phiên bản plugin [[inputs.vsphere]] riêng biệt: một phiên bản dành cho dữ liệu thời gian thực tốc độ cao và phiên bản còn lại dành cho dữ liệu lịch sử với tần suất thấp hơn. Ví dụ cụ thể:
## Realtime instance
[[inputs.vsphere]]
interval = "60s"
vcenters = [ "https://someaddress/sdk" ]
username = "someuser@vsphere.local"
password = "secret"

insecure_skip_verify = true

# Exclude all historical metrics
datastore_metric_exclude = ["*"]
cluster_metric_exclude = ["*"]
datacenter_metric_exclude = ["*"]
resource_pool_metric_exclude = ["*"]
vsan_metric_exclude = ["*"]

collect_concurrency = 5
discover_concurrency = 5

# Historical instance
[[inputs.vsphere]]

interval = "300s"

vcenters = [ "https://someaddress/sdk" ]
username = "someuser@vsphere.local"
password = "secret"

insecure_skip_verify = true
host_metric_exclude = ["*"] # Exclude realtime metrics
vm_metric_exclude = ["*"] # Exclude realtime metrics

max_query_metrics = 256
collect_concurrency = 3

3. Các object thu thập
Trong plugin này thu thập thông tin từ 6 loại đối tượng đã nói ở phần giới thiệu. Trong tệp cấu hình bằng cách sử dụng cú pháp "include" và "exclude" để lựa chọn các chỉ số cần theo dõi. Ví dụ sau theo dõi trung bình sử dụng cpu và bộ nhớ của 5 loại đầu:
[[inputs.vsphere]]
vcenters = [ "https://someaddress/sdk" ]
username = "someuser@vsphere.local"
password = "secret"
insecure_skip_verify = true

vm_metric_include = [
"cpu.usage.average",
"mem.usage.average"
]

host_metric_include = [
"cpu.usage.average",
"mem.usage.average"
]

cluster_metric_include = [
"cpu.usage.average",
"mem.usage.average"
]

datastore_metric_include = [
"disk.capacity.latest",
"disk.used.latest"
]

respool_metric_include = [
"cpu.usage.average",
"mem.usage.average"
]
object_discovery_interval = "300s"

Tài liệu tham khảo
[1] https://docs.influxdata.com/telegraf/v1/concepts/data-pipeline/
[2] https://community.influxdata.com/t/...n-we-use-the-prometheus-output-plugin/57827/4
[3] https://docs.influxdata.com/telegraf/v1/concepts/metrics/
[4] https://docs.influxdata.com/telegraf/v1/examples/scrape-prometheus/
[5] https://docs.influxdata.com/telegraf/v1/input-plugins/prometheus/
[6] https://docs.influxdata.com/telegraf/v1/output-plugins/prometheus_client/
[7] https://community.influxdata.com/t/...n-we-use-the-prometheus-output-plugin/57827/4
[8] https://docs.influxdata.com/telegraf/v1/input-plugins/vsphere/
 
Back
Top