จะติดตั้งและกำหนดค่า Prometheus บน Linux ได้อย่างไร (อูบุนตูและ CentOS)
เผยแพร่แล้ว: 2019-08-26โพรมีธีอุสคืออะไร?
Prometheus เป็นระบบ Monitoring ระดับโลกที่มาพร้อมกับ Time Series Database เป็นค่าเริ่มต้น เป็นระบบโอเพ่นซอร์สที่สร้างขึ้นในปี 2555
บริษัท 500 อันดับแรกของโลกใช้ Prometheus ในการรวบรวมเมตริกสำหรับโครงสร้างพื้นฐานและแอปพลิเคชัน Prometheus รองรับโมเดลข้อมูลหลายมิติด้วยข้อมูลอนุกรมเวลา ซึ่งส่วนใหญ่ระบุเป็นเมตริก
ไม่มีข้อกำหนดในการจัดเก็บข้อมูลพิเศษ เนื่องจาก Prometheus ใช้ Time Series DB
(TSDB) ส่วนหนึ่งของการติดตั้งของตัวเอง
ในบทช่วยสอนนี้ เราจะติดตั้ง Prometheus บน Linux Ubuntu และ CentOS ด้วยขั้นตอนง่ายๆ
มาเริ่มกันเลย:
ขั้นตอนที่ 1 ตรวจสอบเวอร์ชัน Linux OS
คำสั่ง: cat /etc/os-release
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root @ localhost : ~ # cat /etc/os-release NAME = "Ubuntu" VERSION = "19.04 (Disco Dingo)" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu 19.04" VERSION_ID = "19.04" HOME_URL = "https://www.ubuntu.com/" SUPPORT_URL = "https://help.ubuntu.com/" BUG_REPORT_URL = "https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL = "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME = disco UBUNTU_CODENAME = disco |
ขั้นตอนด้านล่างใช้กับ Ubuntu Linux OS
ขั้นตอนที่ 2 สร้าง Prometheus Data และ Config Folder
คำสั่ง :
1 2 3 |
root @ localhost : ~ # sudo mkdir /crunchify/prometheus/conf root @ localhost : ~ # sudo mkdir /crunchify/prometheus/data |
มาตรวจสอบทั้งสองโฟลเดอร์กัน:
1 2 3 4 5 6 7 8 9 |
root @ localhost : / crunchify / prometheus # pwd / crunchify / prometheus root @ localhost : / crunchify / prometheus # ls -ltra total 16 drwxr - xr - x 2 root root 4096 Aug 25 23 : 37 conf drwxr - xr - x 3 root root 4096 Aug 25 23 : 37 . . drwxr - xr - x 2 root root 4096 Aug 25 23 : 37 data drwxr - xr - x 4 root root 4096 Aug 25 23 : 37 . |
ขั้นตอนที่ 3 เปลี่ยนความเป็นเจ้าของโฟลเดอร์ Data
สิ่งนี้จำเป็นเพื่อหลีกเลี่ยงปัญหาการอนุญาตในขั้นตอนต่อไป
1 |
root @ localhost : / crunchify / prometheus # sudo chown 65534:65534 /crunchify/prometheus/data/ |
ขั้นตอนที่ 4 สร้างไฟล์ prometheus.yml
ไปที่โฟลเดอร์ /crunchify/prometheus/conf
และสร้างไฟล์ prometheus.yml
1 2 3 |
root @ localhost : / # cd /crunchify/prometheus/conf root @ localhost : / crunchify / prometheus / conf # vi prometheus.yml |
เนื้อหาไฟล์ prometheus.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 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 time series scraped from this config. - job_name : 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs : - targets : [ '65.19.71.11:9090' ] |
Note:
ในไฟล์ด้านบน – แทนที่ IP ด้วยโฮสต์/VM IP ของคุณ
นี่คือ Directory structure
สำหรับบทช่วยสอนนี้:
ขั้นตอนที่ 5 ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Docker บน VM ของคุณ
จะตรวจสอบได้อย่างไรว่าติดตั้ง Docker หรือไม่?
1 2 3 |
root @ localhost : ~ # docker Command 'docker' not found |
นั่นหมายความว่าไม่ได้ติดตั้งนักเทียบท่าบนโฮสต์/VM ของคุณ โปรดปฏิบัติตามบทช่วยสอนการติดตั้ง Docker อย่างสมบูรณ์เพื่อติดตั้ง Docker บนโฮสต์/VM ของคุณ
ขั้นตอนที่ 6 ติดตั้ง Docker Compose
Pre-requisite
คือการติดตั้ง Docker ก่อนที่จะดำเนินการตามขั้นตอนด้านล่าง (ขั้นตอนที่-5)
ดำเนินการด้านล่างสามคำสั่ง:
1 2 3 4 5 6 7 8 9 |
root @ localhost : ~ # sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 617 0 617 0 0 2448 0 -- : -- : -- -- : -- : -- -- : -- : -- 2448 100 15.4M 100 15.4M 0 0 11.2M 0 0 : 00 : 01 0 : 00 : 01 -- : -- : -- 15.7M root @ localhost : ~ # sudo chmod +x /usr/local/bin/docker-compose root @ localhost : ~ # sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
ขั้นตอนที่ 7 ตรวจสอบ Docker Compose Version
1 2 3 |
root @ localhost : ~ # docker-compose --version docker - compose version 1.24.1 , build 4667896b |
ยินดีด้วย – ติดตั้ง docker compose บน VM ของคุณเรียบร้อยแล้ว
ขั้นตอนที่ 8 สร้างไฟล์ docker-compose.yml
ไปที่โฟลเดอร์ /crunchify/prometheus.
1 2 3 |
root @ localhost : / crunchify # cd /crunchify/prometheus/ root @ localhost : / crunchify / prometheus # vi docker-compose.yml |
เนื้อหาไฟล์ docker-compose.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version : "3" services : prometheus : image : prom / prometheus : latest container_name : prometheus volumes : - / crunchify / prometheus / conf : / etc / prometheus - / crunchify / prometheus / data : / prometheus command : - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' ports : - "9090:9090" |
ขั้นตอนที่ 9 ติดตั้ง Prometheus Start/Stop เป็นส่วนหนึ่งของการควบคุมระบบ
สร้างไฟล์ vi /etc/systemd/system/prometheus.service
เนื้อหาไฟล์ prometheus.service:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[ Unit ] Description = Prometheus monitoring docker container After = docker . service BindsTo = docker . service [ Service ] Restart = always WorkingDirectory =/ crunchify / prometheus / # Ubuntu ExecStart =/ usr / bin / docker - compose up ExecStop =/ usr / bin / docker - compose down # CentOS #ExecStart=/usr/bin/docker-compose up #ExecStop=/usr/bin/docker-compose down [ Install ] WantedBy = multi - user . target |

ขั้นตอนที่ 10 เริ่มบริการ Prometheus
1 2 3 4 5 6 |
root @ localhost : / crunchify / prometheus / config # sudo systemctl daemon-reload root @ localhost : / crunchify / prometheus / config # sudo systemctl enable prometheus Created symlink / etc / systemd / system / multi - user . target . wants / prometheus . service → / etc / systemd / system / prometheus . service . root @ localhost : / crunchify / prometheus / config # sudo systemctl start prometheus |
เซิร์ฟเวอร์ Prometheus เริ่มทำงานบน Linux:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
root @ localhost : / crunchify / prometheus # sudo systemctl start prometheus Creating network "prometheus_default" with the default driver Pulling prometheus ( prom / prometheus : latest ) . . . latest : Pulling from prom / prometheus 8e674ad76dce : Pull complete e77d2419d1c2 : Pull complete d7c0a2a2ca7e : Pull complete bd46de67c79d : Pull complete 35f6078df7e9 : Pull complete 8b3f04e26151 : Pull complete 9d234d9c8a77 : Pull complete 1a8a2a4f314d : Pull complete 62e28fd716ec : Pull complete Digest : sha256 : cd93b8711bb92eb9c437d74217311519e0a93bc55779aa664325dc83cd13cb32 Status : Downloaded newer image for prom / prometheus : latest Creating prometheus . . . done Attaching to prometheus prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.796Z caller = main . go : 293 msg = "no time or size retention was set so using the default time retention" duration = 15d prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.797Z caller = main . go : 329 msg = "Starting Prometheus" version = "(version=2.12.0, branch=HEAD, revision=43acd0e2e93f9f70c49b2267efa0124f1e759e86)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.798Z caller = main . go : 330 build_context = "(go=go1.12.8, user=root@7a9dbdbe0cc7, date=20190818-13:53:16)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.798Z caller = main . go : 331 host_details = "(Linux 5.0.0-13-generic #14-Ubuntu SMP Mon Apr 15 14:59:14 UTC 2019 x86_64 d870070a8ec7 (none))" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.799Z caller = main . go : 332 fd_limits = "(soft=1048576, hard=1048576)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.799Z caller = main . go : 333 vm_limits = "(soft=unlimited, hard=unlimited)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.803Z caller = main . go : 654 msg = "Starting TSDB ..." prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.813Z caller = head . go : 509 component = tsdb msg = "replaying WAL, this may take awhile" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.815Z caller = head . go : 557 component = tsdb msg = "WAL segment loaded" segment = 0 maxSegment = 0 prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.818Z caller = main . go : 669 fs_type = EXT4_SUPER_MAGIC prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.819Z caller = main . go : 670 msg = "TSDB started" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.819Z caller = main . go : 740 msg = "Loading configuration file" filename =/ etc / prometheus / prometheus . yml prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.823Z caller = main . go : 768 msg = "Completed loading of configuration file" filename =/ etc / prometheus / prometheus . yml prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.823Z caller = main . go : 623 msg = "Server is ready to receive web requests." prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.824Z caller = web . go : 448 component = web msg = "Start listening for connections" address = 0.0.0.0 : 9090 |
ยินดีด้วย!! คุณเริ่ม Prometheus บนโฮสต์ของคุณสำเร็จแล้ว
มาเล่นกับ Prometheus Dashboard และ UI . กันเถอะ
จะตรวจสอบได้อย่างไรว่า Prometheus ทำงานถูกต้องหรือไม่?
1 |
URL : http : //65.19.71.11:9090/metrics |
จะตรวจสอบสถานะ UP ของโฮสต์หรือ VM โดยใช้ Prometheus ได้อย่างไร
1 |
URL : http : //65.19.71.11:9090/targets |
จะตรวจสอบ Prometheus Configuration บนเบราว์เซอร์ได้อย่างไร?
ข้อมูลรันไทม์ Prometheus
1 |
URL : http : //65.19.71.11:9090/status |
เวลาทำงาน | 2019-08-26 03:07:24.244852166 +0000 UTC |
---|---|
ไดเรกทอรีการทำงาน | /prometheus |
โหลดการกำหนดค่าใหม่ | ประสบความสำเร็จ |
โหลดการกำหนดค่าสำเร็จครั้งล่าสุด | 2019-08-26 03:07:24 +0000 UTC |
หัวโขน | 533 |
อนุกรมเวลาหลัก | 533 |
การทุจริตของ WAL | 0 |
โรคกระดูกพรุน | 36 |
GOMAXPROCS | 1 |
GOGC | |
GODEBUG | |
การเก็บรักษา | 15 วัน |
ข้อมูล Prometheus สร้าง
เวอร์ชั่น | 2.12.0 |
---|---|
การแก้ไข | 43acd0e2e93f9f70c49b2267efa0124f1e759e86 |
สาขา | ศีรษะ |
BuildUser | root@7a9dbdbe0cc7 |
BuildDate | 20190818-13:53:16 |
GoVersion | go1.12.8 |
แฟล็กบรรทัดคำสั่งโพรมีธีอุส:
1 |
URL : http : //65.19.71.11:9090/flags |
alertmanager.notification-queue-capacity | 10000 |
---|---|
alertmanager.timeout | 10s |
config.file | /etc/prometheus/prometheus.yml |
log.format | logfmt |
log.ระดับ | ข้อมูล |
query.lookback-delta | 5m |
query.max-concurrency | 20 |
query.max-samples | 50000000 |
query.timeout | 2m |
rule.alert.for-grace-period | 10m |
rules.alert.for-outage-tolerance | 1 ชม |
rules.alert.resend-delay | 1m |
storage.remote.flush-deadline | 1m |
storage.remote.read-concurrent-limit | 10 |
storage.remote.read-sample-limit | 50000000 |
storage.tsdb.allow-overlapping-blocks | เท็จ |
storage.tsdb.max-block-duration | 36 ชม |
storage.tsdb.min-block-duration | 2 ชม |
storage.tsdb.no-lockfile | เท็จ |
storage.tsdb.path | /prometheus |
storage.tsdb.retention | 0s |
storage.tsdb.retention.size | 0B |
storage.tsdb.retention.time | 0s |
storage.tsdb.wal-compression | เท็จ |
storage.tsdb.wal-segment-size | 0B |
web.console.libraries | console_libraries |
web.console.templates | คอนโซล |
web.cors.origin | .* |
web.enable-admin-api | เท็จ |
web.enable-lifecycle | เท็จ |
web.external-url | |
web.listen-ที่อยู่ | 0.0.0.0:9090 |
web.max-การเชื่อมต่อ | 512 |
web.page-title | เซิร์ฟเวอร์การรวบรวมและประมวลผล Prometheus Time Series |
web.read-timeout | 5m |
web.route-prefix | / |
และคุณพร้อมแล้ว คุณ successfully installed Prometheus
และตรวจสอบคุณสมบัติทั้งหมดแล้ว