運(yùn)維監(jiān)控系統(tǒng)之Prometheus Server安裝
簡(jiǎn)介
Prometheus是Golang寫(xiě)的,編譯后就是一個(gè)二進(jìn)制文件,不依賴于第三方運(yùn)行庫(kù)。這樣子就可以讓我們很方便的部署。
下載安裝
Golang的交叉編譯,可以很容易實(shí)現(xiàn)跨平臺(tái)。
如果是測(cè)試實(shí)驗(yàn)可以在下載windows版本的就可以了。
我這邊都是Linux環(huán)境,直接下載Linux版本
- wget -c https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz
- tar zxvf prometheus-2.23.0.linux-amd64.tar.gz
運(yùn)行
解壓后,就可以執(zhí)行二進(jìn)制文件prometheus
- ./prometheus
默認(rèn)配置文件是當(dāng)前目錄下的prometheus.yml
默認(rèn)配置文件里面只有拉取prometheus自己的指標(biāo)。
幫助
- ./prometheus --help
prometheus 提供了很多參數(shù)可以進(jìn)行配置,根據(jù)實(shí)際情況進(jìn)行設(shè)置即可。
- usage: prometheus [<flags>]
- The Prometheus monitoring server
- Flags:
- -h, --help Show context-sensitive help (also try --help-long and --help-man).
- --version Show application version.
- --config.file="prometheus.yml"
- Prometheus configuration file path.
- --web.listen-address="0.0.0.0:9090"
- Address to listen on for UI, API, and telemetry.
- --web.read-timeout=5m Maximum duration before timing out read of the request, and closing idle connections.
- --web.max-connections=512 Maximum number of simultaneous connections.
- --web.external-url=<URL> The URL under which Prometheus is externally reachable (for example, if Prometheus is served via a reverse proxy). Used for generating relative and absolute links back to
- Prometheus itself. If the URL has a path portion, it will be used to prefix all HTTP endpoints served by Prometheus. If omitted, relevant URL components will be derived
- automatically.
- --web.route-prefix=<path> Prefix for the internal routes of web endpoints. Defaults to path of --web.external-url.
- --web.user-assets=<path> Path to static asset directory, available at /user.
- --web.enable-lifecycle Enable shutdown and reload via HTTP request.
- --web.enable-admin-api Enable API endpoints for admin control actions.
- --web.console.templates="consoles"
- Path to the console template directory, available at /consoles.
- --web.console.libraries="console_libraries"
- Path to the console library directory.
- --web.page-title="Prometheus Time Series Collection and Processing Server"
- Document title of Prometheus instance.
- --web.cors.origin=".*" Regex for CORS origin. It is fully anchored. Example: 'https?://(domain1|domain2)\.com'
- --storage.tsdb.path="data/"
- Base path for metrics storage.
- --storage.tsdb.retention=STORAGE.TSDB.RETENTION
- [DEPRECATED] How long to retain samples in storage. This flag has been deprecated, use "storage.tsdb.retention.time" instead.
- --storage.tsdb.retention.time=STORAGE.TSDB.RETENTION.TIME
- How long to retain samples in storage. When this flag is set it overrides "storage.tsdb.retention". If neither this flag nor "storage.tsdb.retention" nor
- "storage.tsdb.retention.size" is set, the retention time defaults to 15d. Units Supported: y, w, d, h, m, s, ms.
- --storage.tsdb.retention.size=STORAGE.TSDB.RETENTION.SIZE
- [EXPERIMENTAL] Maximum number of bytes that can be stored for blocks. A unit is required, supported units: B, KB, MB, GB, TB, PB, EB. Ex: "512MB". This flag is experimental and
- can be changed in future releases.
- --storage.tsdb.no-lockfile
- Do not create lockfile in data directory.
- --storage.tsdb.allow-overlapping-blocks
- [EXPERIMENTAL] Allow overlapping blocks, which in turn enables vertical compaction and vertical query merge.
- --storage.tsdb.wal-compression
- Compress the tsdb WAL.
- --storage.remote.flush-deadline=<duration>
- How long to wait flushing sample on shutdown or config reload.
- --storage.remote.read-sample-limit=5e7
- Maximum overall number of samples to return via the remote read interface, in a single query. 0 means no limit. This limit is ignored for streamed response types.
- --storage.remote.read-concurrent-limit=10
- Maximum number of concurrent remote read calls. 0 means no limit.
- --storage.remote.read-max-bytes-in-frame=1048576
- Maximum number of bytes in a single frame for streaming remote read response types before marshalling. Note that client might have limit on frame size as well. 1MB as
- recommended by protobuf by default.
- --rules.alert.for-outage-tolerance=1h
- Max time to tolerate prometheus outage for restoring "for" state of alert.
- --rules.alert.for-grace-period=10m
- Minimum duration between alert and restored "for" state. This is maintained only for alerts with configured "for" time greater than grace period.
- --rules.alert.resend-delay=1m
- Minimum amount of time to wait before resending an alert to Alertmanager.
- --alertmanager.notification-queue-capacity=10000
- The capacity of the queue for pending Alertmanager notifications.
- --alertmanager.timeout=10s
- Timeout for sending alerts to Alertmanager.
- --query.lookback-delta=5m The maximum lookback duration for retrieving metrics during expression evaluations and federation.
- --query.timeout=2m Maximum time a query may take before being aborted.
- --query.max-concurrency=20
- Maximum number of queries executed concurrently.
- --query.max-samples=50000000
- Maximum number of samples a single query can load into memory. Note that queries will fail if they try to load more samples than this into memory, so this also limits the
- number of samples a query can return.
- --log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error]
- --log.format=logfmt Output format of log messages. One of: [logfmt, json]
注冊(cè)成服務(wù)
目前l(fā)inux大部分的發(fā)行版本都是使用systemd管理系統(tǒng)服務(wù)了,我們可以直接編輯一個(gè)systemd的service文件,來(lái)部署prometheus服務(wù)。
- vim /etc/systemd/system/prometheus.service
如果沒(méi)有設(shè)置--storage.tsdb.path,記得設(shè)置好工作目錄WorkingDirectory,不然所有數(shù)據(jù)都會(huì)保存到家目錄里面。
- [Unit]
- Description=prometheus
- After=network.target
- [Service]
- Type=simple
- WorkingDirectory=/opt/prometheus/prometheus
- ExecStart=/opt/prometheus/prometheus/prometheus --config.file="/opt/prometheus/prometheus/prometheus.yml"
- LimitNOFILE=65536
- PrivateTmp=true
- RestartSec=2
- StartLimitInterval=0
- Restart=always
- [Install]
- WantedBy=multi-user.target
使用systemctl加載文件、控制服務(wù)
- systemctl daemon-reload
- systemctl enable prometheus
- systemctl start prometheus
WebUI
啟動(dòng)之后,默認(rèn)監(jiān)聽(tīng)是9090端口,瀏覽器直接訪問(wèn)即可
- http://[ip]:9090
【編輯推薦】