DEV Community

loading...

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

iporsut profile image Weerasak Chongnguluam ・2 min read

วันนี้ลองทำตาม 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

Discussion (0)

pic
Editor guide