-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Quang Mau
committed
Oct 28, 2023
1 parent
3ca4dd5
commit c714400
Showing
2 changed files
with
180 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
--- | ||
title: '#90DaysOfDevOps - Bức tranh toàn cảnh: Giám sát - Ngày 77' | ||
published: false | ||
description: 90DaysOfDevOps - Bức tranh toàn cảnh: Giám sát | ||
tags: 'devops, 90daysofdevops, learning' | ||
cover_image: null | ||
canonical_url: null | ||
id: 1048715 | ||
--- | ||
|
||
## Bức tranh toàn cảnh: Giám sát | ||
|
||
Trong tuần này chúng ta sẽ nói về giám sát, nó là gì và tại sao chúng ta cần nó? | ||
|
||
### Giám sát là gì? | ||
|
||
Giám sát là quá trình theo dõi chặt chẽ toàn bộ cơ sở hạ tầng | ||
|
||
### và tại sao chúng ta cần nó? | ||
|
||
Giả sử chúng ta đang quản lý một nghìn máy chủ, bao gồm nhiều loại máy chủ chuyên dụng như máy chủ ứng dụng, máy chủ cơ sở dữ liệu và máy chủ web. Chúng ta cũng có thể có các dịch vụ bổ sung và các nền tảng khác, bao gồm cả dịch vụ đám mây công cộng và Kubernetes. | ||
|
||
![](Images/Day77_Monitoring1.png) | ||
|
||
Chúng ta chịu trách nhiệm đảm bảo rằng tất cả các dịch vụ, ứng dụng và tài nguyên trên máy chủ đều hoạt động bình thường. | ||
|
||
![](Images/Day77_Monitoring2.png) | ||
|
||
Chúng ta làm điều đó như thế nào? có ba cách: | ||
|
||
- Đăng nhập thủ công vào tất cả các máy chủ và kiểm tra tất cả dữ liệu về processes và tài nguyên, dịch vụ. | ||
- Viết script đăng nhập vào máy chủ và kiểm tra dữ liệu. | ||
|
||
Cả hai lựa chọn này đều tạo ra một khối lượng công việc đáng cho chúng ta | ||
|
||
Tùy chọn thứ ba dễ dàng hơn, chúng ta có thể sử dụng giải pháp giám sát có sẵn trên thị trường. | ||
|
||
Nagios và Zabbix là những giải pháp sẵn có, chúng cho phép chúng ta nâng cấp cơ sở hạ tầng giám sát của mình để quản lý nhiều máy chủ như chúng ta muốn. | ||
|
||
### Nagios | ||
|
||
Nagios là một công cụ giám sát cơ sở hạ tầng được phát triển bởi một công ty cùng tên. Phiên bản mã nguồn mở của công cụ này được gọi là Nagios core trong khi phiên bản thương mại có tên là Nagios XI. [Trang web của Nagios](https://www.nagios.org/) | ||
|
||
Công cụ này cho phép chúng ta giám sát các máy chủ của mình và xem liệu chúng có đang được sử dụng hiệu quả hoặc có bất kỳ tasks lỗi nào cần giải quyết hay không. | ||
|
||
![](Images/Day77_Monitoring3.png) | ||
|
||
Về cơ bản, việc giám sát cho phép chúng ta đạt được hai mục tiêu này, kiểm tra trạng thái máy chủ và dịch vụ cũng như xác định tình trạng cơ sở hạ tầng. Nó cũng cung cấp cho chúng ta cái nhìn high-level về cơ sở hạ tầng hoàn chỉnh để xem liệu máy chủ có hoạt động hay không nếu các ứng dụng hoạt động hoạt động bình thường và các máy chủ web có thể truy cập được hay không. | ||
|
||
Nó sẽ cho chúng ta biết rằng ổ đĩa của chúng ta đã tăng 10 phần trăm trong 10 tuần qua trên một máy chủ cụ thể, rằng nó sẽ cạn kiệt hoàn toàn trong vòng bốn hoặc năm ngày tới và nếu chúng ta không phản hồi sớm, nó sẽ cảnh báo khi đĩa hoặc máy chủ đang ở trạng thái nguy hiểm để chúng ta có thể thực hiện các hành động thích hợp nhằm tránh những sự cố ngừng hoạt động có thể xảy ra. | ||
|
||
Trong trường hợp này, chúng ta có thể giải phóng một số dung lượng ổ đĩa và đảm bảo rằng máy chủ của chúng ta không bị lỗi và người dùng không bị ảnh hưởng. | ||
|
||
Một câu hỏi khó đối với hầu hết các kỹ sư giám sát là chúng ta sẽ giám sát những gì? và có thể là chúng ta không giám sát những gì? | ||
|
||
Mỗi hệ thống đều có một số tài nguyên, trong đó chúng ta nên theo dõi chặt chẽ tài nguyên nào và tài nguyên nào và chúng ta có thể nhắm mắt làm ngơ. Chẳng hạn như có cần thiết phải giám sát việc sử dụng CPU không, câu trả lời là rõ ràng là có, tuy nhiên đó vẫn là một quyết định cần phải được đưa ra. Có cần thiết phải theo dõi số lượng cổng mở trong hệ thống hay không, điều đó tùy thuộc vào tình huống. Nếu đó là một máy chủ đa năng thì chúng ta có thể sẽ không phải làm vậy, nhưng nếu đó là máy chủ web thì chúng ta nên làm điều đó. | ||
|
||
### Giám sát liên tục | ||
|
||
Giám sát không phải là một khái niệm mới và thậm chí giám sát liên tục đã được nhiều doanh nghiệp áp dụng trong nhiều năm qua. | ||
|
||
Có ba lĩnh vực trọng tâm chính khi nói đến giám sát. | ||
|
||
- Giám sát cơ sở hạ tầng | ||
- Giám sát ứng dụng | ||
- Giám sát mạng | ||
|
||
Điều cần lưu ý là có rất nhiều công cụ có sẵn, chúng ta đã đề cập đến hai hệ thống và công cụ chung trong phần này nhưng còn rất nhiều công cụ khác. Lợi ích thực sự của một giải pháp giám sát thể hiện bạn dành thời gian để trả lời câu hỏi chúng ta nên giám sát những gì và không nên giám sát những gì? | ||
|
||
Chúng ta có thể bật giải pháp giám sát trên bất kỳ nền tảng nào của chúng ta và nó sẽ bắt đầu lấy thông tin nhưng nếu thông tin đó quá nhiều thì bạn sẽ gặp khó khăn trong việc thấy các lợi ích từ giải pháp đó, bạn phải dành thời gian để định cấu hình nó. | ||
|
||
Trong phần tiếp theo, chúng ta sẽ thực hành với một công cụ giám sát và xem chúng ta có thể bắt đầu giám sát những gì. | ||
|
||
## Tài liệu tham khảo | ||
|
||
- [The Importance of Monitoring in DevOps](https://www.devopsonline.co.uk/the-importance-of-monitoring-in-devops/) | ||
- [Understanding Continuous Monitoring in DevOps?](https://medium.com/devopscurry/understanding-continuous-monitoring-in-devops-f6695b004e3b) | ||
- [DevOps Monitoring Tools](https://www.youtube.com/watch?v=Zu53QQuYqJ0) | ||
- [Top 5 - DevOps Monitoring Tools](https://www.youtube.com/watch?v=4t71iv_9t_4) | ||
- [How Prometheus Monitoring works](https://www.youtube.com/watch?v=h4Sl21AKiDg) | ||
- [Introduction to Prometheus monitoring](https://www.youtube.com/watch?v=5o37CGlNLr8) | ||
|
||
Hẹn gặp lại vào [ngày 78](day78.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
--- | ||
title: '#90DaysOfDevOps - Thực hành với công cụ giám sát - Ngày 78' | ||
published: false | ||
description: 90DaysOfDevOps - Thực hành với công cụ giám sát | ||
tags: 'devops, 90daysofdevops, learning' | ||
cover_image: null | ||
canonical_url: null | ||
id: 1049056 | ||
--- | ||
|
||
## Thực hành với công cụ giám sát | ||
|
||
Hôm nay tôi sẽ nói về Prometheus, tôi đã thấy ngày càng nhiều hệ thống sử dụng Prometheus cho Cloud-Native nhưng nó cũng có thể được sử dụng để quản lý các tài nguyên vật lý cũng như Kubernetes và những thứ tương tự. | ||
|
||
### Prometheus - Giám sát gần như mọi thứ | ||
|
||
Trước hết, Prometheus là Mã nguồn mở có thể giúp bạn giám sát các containers và hệ thống micro-services cũng như các máy chủ vật lý, ảo hoá và các dịch vụ khác. Có một cộng đồng lớn đằng sau Prometheus. | ||
|
||
Prometheus có rất nhiều [integrations and exporters](https://prometheus.io/docs/instrumenting/exporters/) Điều quan trọng là có thể export các metrics hiện có dưới dạng Prometheus metrics. Trên hết, nó còn hỗ trợ nhiều ngôn ngữ lập trình. | ||
|
||
Phương thức pull - Nếu bạn đang nói chuyện với hàng nghìn micro-services hoặc hệ thống và dịch vụ thì các bạn sẽ thấy dịch vụ đẩy tới hệ thống giám sát bằng phương thức push. Điều này mang đến một số thách thức xung quanh việc làm quá tải hệ thống mạng, CPU cao và cũng xuất hiện single point of failure. Trong khi đó, phương thức pull mang đến cho chúng ta trải nghiệm tốt hơn nhiều, khi đó Prometheus sẽ lấy dữ liệu từ metrics endpoint trên các dịch vụ. | ||
|
||
Một lần nữa chúng ta thấy YAML để cấu hình cho Prometheus. | ||
|
||
![](Images/Day78_Monitoring7.png) | ||
|
||
Sau này, bạn sẽ thấy điều này trông như thế nào khi được triển khai vào Kubernetes, cụ thể là chúng ta có **PushGateway** lấy metrics từ các jobs/và exporters. | ||
|
||
Chúng ta có **AlertManager** giúp đưa ra cảnh báo và đây là nơi chúng ta có thể tích hợp vào các dịch vụ bên ngoài như email, Slack và các công cụ khác. | ||
|
||
Sau đó, chúng ta có máy chủ Prometheus quản lý việc truy xuất các pull metrics đó từ PushGateway và gửi các push alerts đó đến AlertManager. Máy chủ Prometheus cũng lưu trữ dữ liệu trên đĩa cục bộ. Mặc dù có thể tận dụng các giải pháp lưu trữ từ xa. | ||
|
||
|
||
Chúng ta cũng có PromQL, ngôn ngữ được sử dụng để tương tác với các metrics, bạn có thể thấy điều này trong Giao diện người dùng web của Prometheus nhưng ở phần sau trong bài viết này, bạn cũng sẽ thấy cách nó cũng được sử dụng trong các công cụ trực quan hóa dữ liệu như Grafana. | ||
|
||
### Các cách triển khai Prometheus | ||
|
||
Có nhiều cách cài đặt Prometheus khác nhau, [Trong phần tải xuống](https://prometheus.io/download/) cũng có sẵn docker image. | ||
|
||
`docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus` | ||
|
||
Nhưng chúng ta sẽ tập trung vào việc triển khai trên Kubernetes. Bản thân việc này cũng có một vài lựa chọn. | ||
|
||
- Cấu hình bằng các tệp YAML | ||
- Sử dụng Operator (quản lý tất cả các thành phần của Kubernetes) | ||
- Sử dụng helm chart để triển khai operator | ||
|
||
### Triển khai trên Kubernetes | ||
|
||
Chúng ta sẽ sử dụng lại minikube cluster cục bộ của mình để cài đặt một cách nhanh chóng và đơn giản. Giống như các tương tác trước đây với minikube, chúng ta sẽ sử dụng heml để triển khai Prometheus heml chart. | ||
|
||
`helm repo add prometheus-community https://prometheus-community.github.io/helm-charts` | ||
|
||
![](Images/Day78_Monitoring1.png) | ||
|
||
Như bạn có thể thấy ở trên, chúng ta cũng đã chạy helm repo update, hiện tại chúng ta đã có thể triển khai Prometheus vào môi trường minikube của mình bằng cách sử dụng lệnh `helm install stable prometheus-community/prometheus`. | ||
|
||
![](Images/Day78_Monitoring2.png) | ||
|
||
Sau vài phút, bạn sẽ thấy một số pods mới xuất hiện, trong demo này, tôi đã triển khai vào namespace mặc định, nhưng thông thường tôi sẽ triển khai trong namespace của nó. | ||
|
||
![](Images/Day78_Monitoring3.png) | ||
|
||
Sau khi tất cả các pods đã chạy, chúng ta cũng có thể xem xét tất cả các thành phần đã được triển khai của Prometheus. | ||
|
||
![](Images/Day78_Monitoring4.png) | ||
|
||
Bây giờ để truy cập vào Giao diện người của dùng máy chủ Prometheus, chúng ta có thể sử dụng lệnh sau để chuyển tiếp cổng. | ||
|
||
```Shell | ||
export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}") | ||
kubectl --namespace default port-forward $POD_NAME 9090 | ||
``` | ||
|
||
Khi chúng ta lần đầu tiên mở trình duyệt của mình và truy cập `http://localhost:9090`, chúng ta thấy màn hình trống sau đây. | ||
|
||
![](Images/Day78_Monitoring5.png) | ||
|
||
Vì chúng ta đã triển khai trên Kubernetes cluster nên sẽ được tự động chọn các metrics từ Kubernetes API để sử dụng PromQL nhằm đảm bảo ít nhất thì chúng ta đang thu tập các metrics `container_cpu_usage_seconds_total` | ||
|
||
![](Images/Day78_Monitoring6.png) | ||
|
||
Nói ngắn gọn về việc học PromQL và áp dụng nó trong thực tế, điều này khá giống như tôi đã đề cập trước đây trong việc có được các metrics là rất tốt và việc giám sát cũng vậy, nhưng bạn phải biết bạn đang giám sát những gì và lý do cho việc đó, cũng như những gì bạn không theo dõi và lý do cho việc đó! | ||
|
||
Tôi muốn nhắc lại về Prometheus nhưng bây giờ, tôi nghĩ chúng ta cần xem xét tới việc Quản lý log và Trực quan hóa dữ liệu để có thể quay lại Prometheus ở các phần sau. | ||
|
||
## Tài liệu tham khảo | ||
|
||
- [The Importance of Monitoring in DevOps](https://www.devopsonline.co.uk/the-importance-of-monitoring-in-devops/) | ||
- [Understanding Continuous Monitoring in DevOps?](https://medium.com/devopscurry/understanding-continuous-monitoring-in-devops-f6695b004e3b) | ||
- [DevOps Monitoring Tools](https://www.youtube.com/watch?v=Zu53QQuYqJ0) | ||
- [Top 5 - DevOps Monitoring Tools](https://www.youtube.com/watch?v=4t71iv_9t_4) | ||
- [How Prometheus Monitoring works](https://www.youtube.com/watch?v=h4Sl21AKiDg) | ||
- [Introduction to Prometheus monitoring](https://www.youtube.com/watch?v=5o37CGlNLr8) | ||
- [Promql cheat sheet with examples](https://www.containiq.com/post/promql-cheat-sheet-with-examples) | ||
|
||
Hẹn gặp lại vào [ngày 79](day79.md) |