简介
Prometheus是Golang写的,编译后就是一个二进制文件,不依赖于第三方运行库。这样子就可以让我们很方便的部署。
下载安装
Golang的交叉编译,可以很容易实现跨平台。
如果是测试实验可以在下载windows版本的就可以了。
我这边都是Linux环境,直接下载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
运行
解压后,就可以执行二进制文件prometheus
- ./prometheus
默认配置文件是当前目录下的prometheus.yml
默认配置文件里面只有拉取prometheus自己的指标。
帮助
- ./prometheus --help
prometheus 提供了很多参数可以进行配置,根据实际情况进行设置即可。
- 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]
注册成服务
目前linux大部分的发行版本都是使用systemd管理系统服务了,我们可以直接编辑一个systemd的service文件,来部署prometheus服务。
- vim /etc/systemd/system/prometheus.service
如果没有设置--storage.tsdb.path,记得设置好工作目录WorkingDirectory,不然所有数据都会保存到家目录里面。
- [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加载文件、控制服务
- systemctl daemon-reload
- systemctl enable prometheus
- systemctl start prometheus
WebUI
启动之后,默认监听是9090端口,浏览器直接访问即可
- http://[ip]:9090
【编辑推荐】