DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

ติดตั้งและลอง 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

Top comments (0)