Monitoring system

Monitoring system và triển khai Prometheus & Grafana giám sát Windows Server

Vào một ngày đẹp trời, mình nhận được một yêu cầu từ phía anh Sếp với một nội dung rất đơn giản “giúp anh setup một Monitoring system có khả năng theo dõi, giám sát hệ thống nhằm đánh giá độ ổn định, và cảnh báo sớm khi gặp sự cố”. Khi nhận được yêu cầu mình cũng liên tưởng một vài công cụ hiện nay như là kibana, nagios… Tuy nhiên trong quá trình xây dựng giải pháp, mình được người em đồng nghiệp gợi ý đến Grafana và trong quá trình tìm hiểu mình thấy Granfana phù hợp với yêu cầu của mình nên đã bắt đầu nghiên cứu và đưa ra một giải pháp áp dụng.

Trong bài này chúng ta sẽ tập trung vào các vấn đề:

  • Monitoring system là gì?
  • Tại sao cần Monitoring system?
  • Các đặc điểm Monitoring system
  • Grafana & Prometheus
  • Tạo một Dashboad đơn giản từ Grafana và Prometheus

Monitoring system

Monitoring system là một phần mềm hay phần cứng có khả năng theo dõi, ghi nhận các trạng thái, hoạt động của một hệ thống một cách liên tục.

Tại sao cần Monitoring system

Trong quá khứ, một trong những nhà quản trị/phát triển chỉ can thiệp khi hệ thống xảy ra lỗi, điều này đi kèm với rất nhiều rủi ro trong việc khắc phục các sự cố, hoặc chỉ sử dụng một vài công cụ nhỏ, không thể cung cấp một cái nhìn toàn diện, những điều này điều gây ra sự tốn kém thời gian và tiền bạc.

Monitoring system là một giải pháp phù hợp giúp người quản trị/phát triển dễ hàng theo dõi, đánh giá hệ thống một cách toàn diện (phân tích cpu, ram, disk…) từ đó xây đựng hệ thống một cách ổn định, cũng như phản ứng nhanh các sự cố xảy ra. Ngoài ra đặc điểm của Monitoring system là quản lý tập trung nên khi gặp sự cố, bạn sẽ nhận được thông báo ngay lập tức giúp chúng ta giải quyết nhanh chóng, tiết kiệm thời gian và tạo sự an tâm về hệ thống.

Tổng quan Prometheus & Grafana

Prometheus & Grafana là 2 phần mềm sử dụng rộng rãi trong giám sát (monitoring), giải quyết được các nhu cầu cần thiết của một Monitoring system như thu nhập dữ liệu, đánh giá độ ổn định và cảnh báo sớm khi một hoặc nhiều mục tiêu trong hệ thống gặp sự cố.

Prometheus

Prometheus là một open-source systems monitoring và alerting ban đầu được xây dựng tại SoundCloud. Vào năm 2012 nhiều công ty, tổ chức đã đứng ra bảo trợ cho Prometheus và project này rất phát triển và nhiều người dùng. Hiện tại nó không còn là một project độc lập mà được phát triển bởi rất nhiều công ty khác nhau. Nó sử dụng mã nguồn GoLang của Google. Hiện tại thì Prometheus 100% là open source và có Apache 2 License on GitHub.

Prometheus sử dụng ngôn ngữ truy vấn rất mạnh mẽ để pull các metrics từ các node, sau đó chuyển dữ liệu cho Grafana để hiển thị qua trình duyệt web.

Prometheus có một exporter được dựng sẵn (build-in), xuất các metric về service của Prometheus ra tại URL: http://localhost:9090/metrics. Tuy nhiên, để có thể lấy được các metric khác thì Prometheus phải nhờ đến các exporter của bên thứ ba hoặc do các cá nhân khác phát hành.

Khi bạn chỉ can thiệp khi hệ thống xảy ra lỗi bằng cách sử dụng vài công cụ nhỏ trong việc khắc phục sự cố sẽ đi kèm với nhiều rủi ro và không có cái gì toàn diện về hệ thống sẽ gây tốn kém thời gian và tiền bạc.

Prometheus là một open-source system monitoring và alerting ban đầu được xây dựng tại SoundCloud. Năm 2012, nhiều công ty, tổ chức đã bảo trợ cho Prometheus và dự án này cực kỳ phát triển với nhiều người dùng.

Hiện tại, Prometheus không còn là 1 dự án độc lập mà được phát triển bởi rất nhiều công ty khác nhau và sử dụng mã nguồn GoLnag của Google.

Hiện tại Prometheus 100% là open source và có Apache 2 License on GitHub.

Prometheus sử dụng ngôn ngữ truy vấn rất mạnh mẽ để pull các metrics từ các node, sau đó chuyển dữ liệu cho Grafana để hiện thị qua trình duyệt web đơn giản nhằm theo dõi thông tin hệ thống, HTTP API.

Prometheus có một exporter được dựng sẵn (build-in), xuất các metric về service của Prometheus ra tại URL: ….

Tuy nhiên, để lấy các metric khác thì Prometheus phải nhờ đến các exporter của bên thứ ba hoặc do các cá nhân khác phát hành.

Grafana

Grafana là giải pháp phần mềm Container Monitoring Software với chức năng và chi phí phù hợp cho các doanh nghiệp từ nhỏ và vừa (SMEs) tới các doanh nghiệp lớn. Phần mềm Grafana được đánh giá cao bởi cả người dùng lẫn chuyên gia trong lĩnh vực DevOps Software.

Grafana tập trung vào các số liệu dựa trên chuỗi thời gian. Bạn có thể trực quan hóa dữ liệu hoặc tạo một cảnh báo (alert) từ nguồn dữ liệu hiện có. Ngoài Prometheus, Grafana cũng có thể sử dụng nhiều cơ sở dữ liệu khác nhau bao gồm Elasticsearch, InfluxDb, OpenTSDB, Graphite…

Grafana được biết đến với hỗ trợ tích hợp cho xác thực và kiểm soát truy cập. Bạn cũng có thể kết nối phiên bản Grafana của mình với máy chủ Giao thức truy cập thư mục nhẹ (LDAP) bên ngoài hoặc máy chủ SQL để kiểm soát quyền truy cập tốt hơn trong cài đặt doanh nghiệp.

Một số tính nằng tiêu biểu của Grafana:

  • Visualize: table, chart, gauge…
  • Alert: email, msteam, slack, telegram…
  • Unify: Hỗ trợ nhiều loại database như Prometheus, InfluxDB, ElasticSearch, Graphite, …
  • Open: mã nguồn mở, có thể chạy trên nhiều hệ điều hành, có Docker image.
  • Extend: Cung cấp nhiều plugin, nhiều dashboard template, dễ dàng kết nối các nền tảng khác.
  • Collaborate: Hỗ trợ teamwork.

Tạo một Dashboard đơn giản từ Grafana và Prometheus

Trong phần này chúng ta sẽ tạo một Dashboard đơn giản để giám sát windows server thông qua Grafana và Prometheus.

Cài đặt Prometheus

Bạn có thể sử dụng Prometheus thông qua docker, hoặc file nhị phân được biên dịch sẵn.

Chúng sẽ sử dụng file nhị phân đã biên dịch sẵn trên windows, sau khi tải về và giải nén sẽ trông như sau: Để sử dụng Prometheus chúng ta mở file prometheus.exe ở thử mục gốc và truy cập đường dẫn http://localhost:9090/

Để sử dụng Prometheus chúng ta mở file prometheus.exe ở thử mục gốc và truy cập đường dẫn http://localhost:9090/

Cài đặt Grafana

Giống như Prometheus, chúng có thể cài đặt Grafana nhiều cách. Ở đây mình sẽ cài thông qua windows

https://grafana.com/grafana/download

Sau khi download file cài đặt, chúng ta cài đặt theo hướng dẫn

Sau khi cài đặt xong bạn có thể truy cập vào đường dẫn: http://localhost:3000/ (admin/admin)

Kết nối Grafana với Prometheus

Grafana sử dụng cơ sở dữ liệu nhiều nguồn, vì thế để sử dụng cơ sở dữ liệu từ Prometheus chúng ta cần Add Data Source. Để làm việc này chúng ta truy cập đường dẫn http://localhost:3000/datasources/new (Configuration/Data Source/Add data source)

Sau đó chọn Prometheus điền thông tin cấu hình (URL) và save lại:

Giám sát windows server

Để giám sát windows server, chúng ta cần sử dụng một công cụ bên thứ 3: windows_exporter (wmi_exporter) để Prometheus có thể thu nhập metric, chi tiết có thể xem tại đây:

https://github.com/prometheus-community/windows_exporter

Bước 1: Tải wmi_exporter bản mới nhất tại: https://github.com/prometheus-community/windows_exporter/releases

có 2 phiên bản wmi_exporter:

  • wmi_exporter.exe: Sử dụng để run và sử dụng các cấu hình mặc định
  • wmi_exporter.msi: Cài đặt thông qua cmd/psh và sử dụng các cấu hình nâng cao.

Chúng qua sẽ cài đặt thông qua CMD, sau khi download về mở CMD và chạy câu lệnh sau:

msiexec /i windows_exporter-0.16.0-amd64.msi ENABLED_COLLECTORS="ad,adfs,cache,cpu,cpu_info,cs,container,dfsr,dhcp,dns,fsrmquota,iis,logical_disk,logon,memory,msmq,mssql,netframework_clrexceptions,netframework_clrinterop,netframework_clrjit,netframework_clrloading,netframework_clrlocksandthreads,netframework_clrmemory,netframework_clrremoting,netframework_clrsecurity,net,os,process,remote_fx,service,tcp,time,vmware" TEXTFILE_DIR="C:\custom_metrics"

Kết quả sau khi cài đặt, chúng sẽ có 1 service windows_exporter nằm trong trình quản lý services

Bước 2: Kiểm tra metric

Truy cập đường dẫn http://localhost:9182

Bước 3: Tạo job trong prometheus để giám sát Windows Server

Chỉnh sửa file prometheus.yml, bổ sung nội dung như sau:

  - job_name: 'windows'

    static_configs:

    - targets: ['localhost:9182']

      labels:                          

       hostname: DC01

       type: windows

       company: XYZDG

Kết quả sẽ trông như hình dưới

Bước 4: Khởi động lại ứng dụng prometheus

Sau khi khởi dộng lại prometheus chúng ta truy cập lại đường dẫn http://localhost:9090/targets (Status/Targets), chúng sẽ thấy 2 job đang hoạt động:

Bước 5: Tạo Dashboard monitor Windows server trên Grafana

Sử dụng chức năng import để import một dashboard có sẵn. Bạn có thể tìm các dashboard tại đường  dẫn https://grafana.com/grafana/dashboards?dataSource=prometheus&search=windows_exporter

Ở đây chúng ta sẽ dùng Windows Exporter Dashboard

Load dashboard tương ứng và chọn data source phù hợp

Sau khi import thành công chúng ta sẽ có kết quả như sau:

Tổng kết

Trong bài viết lần này, chúng ta đã đi tổng quan qua một vài kiến thức quan trọng về Monitoring system, giới thiệu về Grafana kết hợp với Prometheus và hướng dẫn thiết lập giám sát cho windows server.

Trong các bài viết sắp tới chúng ta sẽ nói về cách thiết lập thông báo sự cố thông qua Microsoft Teams, Telegram … hay một số kết nối thu nhập dữ liệu từ nhiều nguồn khác, cũng như việc triển khai như một thành viên của quy trình DevOps.

Hy vọng bài viết trên đã mang đến cho các bạn những kiến thức bổ ích.

Đồng thời, nội dung bài viết mang tính chất chia sẻ nghiên cứu trong quá trình triển khai nên không tránh được nhiều sai sót, mong nhận được sự đóng góp ý kiến của các bạn qua comment bên dưới bài viết.

Cám ơn các bạn đã dành thời gian cho bài viết của mình.

Tác giả: Phong Pham_Senior Software Developer at New Ocean IS

Leave a comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *