Chẵng có có thể nói cho bạn hiểu rõ Prometheus là gì bằng chính trang chủ của Prometheus. Nên trong giới hạn bài viết này, mình chỉ hướng dẫn cách cài đặt và kết nối với Grafana thôi.
Nói thêm một chút nữa là trên trang chủ Prometheus nó có rất nhiều exporter (netdata không phải chính của nó) nhưng mà mình vẫn có thể dùng. Rất nhiều metrics exporter trên mạng hay trên Prometheus thì đều dùng được. Thậm chí bạn tự viết luôn cũng dùng được.
Chỗ mình thì cũng có một cái gọi là Wifi Exporter, đại loại như cài agent trên thiết bị wifi DD-WRT Tomato các thứ để nó export ra có bao nhiêu người đang kết nối trên interface (Card Wifi 2.4GHz, 5GHz) đó. Như bài giới thiệu của mình. Xem nhân viên và cả trouble shoot network khi có vấn đề xảy ra.
![]() |
| Current Static Screen |
![]() |
| Chỉnh 12 giờ để xem thời gian bật máy của nhân viên. Bên cạnh đó cũng có thể Trouble Shoot. Đứng đoạn có nghĩa là không kết nối được. Mình đang gặp vấn đề. |
OK không vòng vo nữa, vào chủ đề chính thôi
CÀI ĐẶT PROMETHEUS
mình sẽ hướng dẫn các bạn cài Prometheus 2.5 (phiên bản mới nhất hiện tại), bạn cũng có thể xem trên trang chủ tại đây (phiên bản Docker). Mình thì mình không thích cài Docker nên mình sẽ không follow hoàn toàn trên trang chủ ở bài viết này.
wget https://github.com/prometheus/prometheus/releases/download/v2.5.0/prometheus-2.5.0.linux-amd64.tar.gzMình xài Linux nên mình sẽ chọn bản Linux để download về dùng. Bạn có thể link tại đây nha
Download xong rồi thì giải nén thôi tar -vxzf prometheus-2.5.0.linux-amd64.tar.gz
Cơ bản là tạo folder rồi chuyển nó về folder /opt/monitoring cho tương lai dễ maintaince thôi.safedata@vn01:~$ sudo mkdir /opt/monitoring/ && sudo mv prometheus-2.5.0.linux-amd64 /opt/monitoring/
rồi cd vào folder đó thôi /opt/monitoring/prometheus-2.5.0.linux-amd64 chạy thử coi có lỗi phải gì không. Nếu mà download nhầm bản là chạy nó báo lỗi combine ấy nhé.
./prometheus hoặc /opt/monitoring/prometheus-2.5.0.linux-amd64/prometheusKết quả sẽ kiểu đại loại như thế này và mở luôn cả port 9090 - bạn có thể mở thêm 1 cái SSH để check.
safedata@vn01:/opt/monitoring/prometheus-2.5.0.linux-amd64$ /opt/monitoring/prometheus-2.5.0.linux-amd64/prometheuslevel=info ts=2018-11-21T13:59:04.351491166Z caller=main.go:244 msg="Starting Prometheus" version="(version=2.5.0, branch=HEAD, revision=67dc912ac8b24f94a1fc478f352d25179c94ab9b)"level=info ts=2018-11-21T13:59:04.35199965Z caller=main.go:245 build_context="(go=go1.11.1, user=root@578ab108d0b9, date=20181106-11:40:44)"level=info ts=2018-11-21T13:59:04.352268094Z caller=main.go:246 host_details="(Linux 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 vn01 (none))"level=info ts=2018-11-21T13:59:04.352535563Z caller=main.go:247 fd_limits="(soft=1024, hard=1048576)"level=info ts=2018-11-21T13:59:04.352796693Z caller=main.go:248 vm_limits="(soft=unlimited, hard=unlimited)"level=info ts=2018-11-21T13:59:04.353722662Z caller=main.go:562 msg="Starting TSDB ..."level=info ts=2018-11-21T13:59:04.367378147Z caller=web.go:399 component=web msg="Start listening for connections" address=0.0.0.0:9090level=info ts=2018-11-21T13:59:04.379697293Z caller=main.go:572 msg="TSDB started"level=info ts=2018-11-21T13:59:04.382538121Z caller=main.go:632 msg="Loading configuration file" filename=prometheus.ymllevel=info ts=2018-11-21T13:59:04.384045858Z caller=main.go:658 msg="Completed loading of configuration file" filename=prometheus.ymllevel=info ts=2018-11-21T13:59:04.38439384Z caller=main.go:531 msg="Server is ready to receive web requests."
KHỞI ĐỘNG MỖI KHI REBOOT NGAY
Nhưng nếu bạn cancel thì cũng như SSH Tunnel ở Part 2 thì nó sẽ mất.
Nên vậy ta sẽ làm một cái startup như bài SSH Tunnel phía trên như sau:
sudo touch /etc/systemd/system/prometheus-server.service với nội dung :
[Unit]
Description=Prometheus Server
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/monitoring/prometheus-2.5.0.linux-amd64/prometheus --config.file=/opt/monitoring/prometheus-2.5.0.linux-amd64/prometheus.yml
WorkingDirectory=/opt/monitoring/prometheus-2.5.0.linux-amd64
Restart=always
RestartSec=60
TimeoutStopSec=5
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Có một người người thích quản lý cấu hình thì vào folder /etc/ nên họ cũng hay move file prometheus.yml vào /etc/prometheus/prometheus.yml. Tuy nhiên trong bài học cơ bản này thì mình không có làm. Không phải không làm luôn mà là các bài sau sẽ đụng đến BlackBox Alert.rules thì mình sẽ move chúng nó hết vào folder /etc/ để dễ quản lý, bảo trì (maintance) ở các tập sau.
Nhìn lại lên trên một chút User=prometheus nếu bạn restart bằng sudo hay root mà không switch qua user prometheus thì nó sẽ không lên đâu đó.
TẠO USER RIÊNG CHO PROMETHEUS
Tại sao chúng ta không cho nó chạy bằng user root hay user có quyền sudo? Thật ra thì chạy cũng vẫn được đó thôi. Tuy nhiên việc này nó chẵng cần dùng đến quyền làm gì cả. Nhưng bạn lại gán quyền cho nó. Việc này tuy đơn giản nhưng vô cùng nguy hiểm. Chỉ cần hacker tấn công vào service này thì họ sẽ có toàn quyền của user root hoặc sudo thì server của bạn sẽ tan nát.
Còn lần này thì tạo hẵn một user tên prometheus, OK. Nếu bạn có cách hack được thì bạn cũng chỉ là một user thường thôi. Bạn không thể làm gì ngoài việc phá cái prometheus cả. Nên sẽ tạo usersystem như thế này.
safedata@vn01:~$ sudo useradd prometheus --system --no-create-home
safedata@vn01:~$ sudo systemctl restart prometheus-server
Đôi lúc nó sẽ đòi reload-daemon thì reload cái cho nó vui lòng
Warning: The unit file, source configuration file or drop-ins of prometheus-server.service changed on disk. Run 'systemctl daemon-reload' to reload units.
À quên nữa. Nhớ systemctl coi dịch vụ (service) có chạy chưa. Nếu systemctl config sai là nó hok chạy nó báo lỗi ý nha. Ví dụ như sai đường dẫn (path). Viết Blog này thôi cũng bị sai path mấy lần rồi đó. Start dịch vụ có được đâu.
chown -R prometheus:prometheus monitoring
systemctl status prometheus-servernetstat -nltp | grep 9090
tcp6 0 0 :::9090 :::* LISTEN -Xong! Truy cập thôi: yourip:9090.
| Prometheus Screen |
Hiện tại chúng ta đã setup xong 2 thứ là Prometheus và Grafana với cấu hình mặc định. Mình cũng chẵng thể làm gì nhiều cả. Nên mình cũng không có gì để nói nhiều. Metrics của Prometheus mặc định hơi bèo tí. Nên chúng ta sẽ cài đặt Node Exporter ở tập tiếp theo để có được những metrics ngon lành như: CPU, RAM, DISK, UPTIME dưới dạng biểu đồ. Bên cạnh đó mình cũng làm NETDATA luôn để so sánh NODE_EXPORTER và NETDATA nha.
Theo bạn thì NODE_EXPORTER và NETDATA cái nào ghê hơn ^_^ NETDATA thì không phải là một project chính thống của Prometheus. Tuy nhiên Netdata được cộng đồng phát triển rất mạnh mẽ và cố số má trên trending trên github nha.


No comments:
Post a Comment