DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

3

ติดตั้งและลอง start Prometheus server

วันนี้ลองทำตาม document ของ Prometheus กันต่อ ที่หัวข้อ First steps with Prometheus

ผมก็เลือกติดตั้งแบบที่ใน document บอกเลยคือโหลด tar.gz ของผมใช้บน macOS ก็เป็นไฟล์ prometheus-2.24.1.darwin-amd64.tar.gz พอแตกออกมาในนั้นเราก็จะเห็นไฟล์เหล่านี้

$ ls -l
-rw-r--r--@ 1 john  staff     11357 Jan 20 09:08 LICENSE
-rw-r--r--@ 1 john  staff      3420 Jan 20 09:08 NOTICE
drwxr-xr-x@ 4 john  staff       128 Jan 20 09:08 console_libraries
drwxr-xr-x@ 9 john  staff       288 Jan 20 09:08 consoles
drwxr-xr-x  6 john  staff       192 Jan 28 07:21 data
-rwxr-xr-x@ 1 john  staff  89422064 Jan 20 07:20 prometheus
-rw-r--r--@ 1 john  staff       926 Jan 20 09:08 prometheus.yml
-rwxr-xr-x@ 1 john  staff  79455632 Jan 20 07:22 promtool
Enter fullscreen mode Exit fullscreen mode

ตัวที่เป็นโปรแกรมที่ให้มาก็คือ prometheus กับ promtool

การจะรัน server ขึ้นมาต้องกำหนดไฟล์ config ให้ด้วยซึ่งก็จะเห็นไฟล์ config มีมาให้แล้วคือ prometheus.yml สิ่งที่อยู่ในไฟล์ config ที่ให้มาเป็นแบบนี้

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
Enter fullscreen mode Exit fullscreen mode

ที่เข้าใจจากที่อ่านมาคือ scrape_interval ไว้กำหนดความถี่ว่าให้ prometheus เรียกไปอ่าน metrics จาก target ถี่แค่ไหน ซึ่งตอนนี้กำหนดไว้ทุกๆ 15 วินาที

ส่วนตรง scrape_configs ให้เรากำหนด target ที่จะไปดึงค่า metrics ตอนนี้คือกำหนดให้ไปเรียกที่ตัว prometheus server เองนั่นแหละ (คือตัว server มันเองก็พ่น metrics ออกเหมือนกัน) ที่ endpoint localhost:9090 default path คือ /metrics

ลองสั่ง start server ด้วยวิธีนี้

$ ./prometheus --config.file=prometheus.yml
...
level=info ts=2021-01-28T00:35:44.150Z caller=main.go:710 msg="Server is ready to receive web requests."
Enter fullscreen mode Exit fullscreen mode

สุดท้ายเมื่อเห็น log ว่า server พร้อมแล้วก็ลองเปิด browser เข้าไปที่ http://localhost:9090 จะเจอหน้าเว็บแบบนี้

Alt Text

สำหรับตอนนี้ target คือตัวมันเอง ดังนั้นถ้าเราเข้าที่ http://localhost:9090/metrics จะเห็น text ที่เป็น metrics ของตัวมันเองที่จะถูกมาอ่านทุกๆ 15 วินาทีแบบนี้

Alt Text

จากนั้นสิ่งที่เราทำได้คือใส่ Expression คือดึงข้อมูล metrics มาโชว์นั่นเอง ผมยังไม่เข้าใจเรื่อง Expression ที่ใช้ แต่ก็ลองใส่ตาม document First Step ดู 4 แบบจะแสดงข้อมูลและกราฟแบบนี้

Alt Text

Alt Text

ตอนต่อๆไปค่อยมาดูเรื่องวิธีการรวบรวม metrics กับการใช้ PromQL ในการ query ข้อมูลกันอีกที

Buy Me A Coffee

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay