多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] `thanos query` 命令(也称为“Querier”)实现 Prometheus HTTP v1 API 以通过 PromQL 查询 Thanos 集群中的数据。简而言之,它从底层 StoreAPI 收集评估查询所需的数据,评估查询并返回结果。 Querier 是完全无状态的和水平可扩展的,本质上允许在单个 Prometheus Query 端点下聚合和可选地去重多个指标后端。 因为对于 Querier,“后端”是任何实现 gRPC StoreAPI 的东西,我们可以从任意数量的不同存储中聚合数据,例如: - Prometheus(sidecar) - Store Gateway - Ruler - Receiver - other querier - 非Prometheus系统,例如OpenTSDB ## 下载thanos ```shell wget https://github.com/thanos-io/thanos/releases/download/v0.28.0/thanos-0.28.0.linux-amd64.tar.gz tar xf thanos-0.28.0.linux-amd64.tar.gz -C /opt/ cp /opt/thanos-0.28.0.linux-amd64/thanos /usr/local/bin ``` ## 创建tls证书 ```shell mkdir /data/thanos/certs && cd /data/thanos/certs openssl req -x509 -newkey rsa:4096 -nodes -subj "/C=CN/ST=ShangDong/O=Personal/CN=*" -keyout server.key -out server.crt cat <<-EOF | sudo tee /data/thanos/query-web-config.yml > /dev/null tls_server_config: cert_file: /data/thanos/certs/server.crt key_file: /data/thanos/certs/server.key EOF ``` > CN是 `*` 匹配所有访问的方式。不局限于域名,还可以使用IP进行访问 ## 添加 basic_auth 认证 ```shell $ htpasswd -nBC 10 '' | tr -d ":" New password: # 输入密码 Re-type new password: # 再次输入密码确认 $2y$10$NMj2j1J.O2e964B0Dd7oauN3c/hWF6MmuEvCb7RGuYWZpa7SU8Iui cat <<-EOF | sudo tee -a /data/thanos/query-web-config.yml > /dev/null basic_auth_users: admin: $2y$10$NMj2j1J.O2e964B0Dd7oauN3c/hWF6MmuEvCb7RGuYWZpa7SU8Iui EOF ``` > `htpasswd` 命令依赖 `httpd-tools` 安装包 ## 创建systemd服务 ```shell cat <<-EOF | sudo tee /usr/lib/systemd/system/thanos-query.service > /dev/null [Unit] Description=thanos-query Documentation=https://thanos.io/ After=network.target [Service] Type=simple User=ops Group=ops ExecStart=/usr/local/bin/thanos query \\ --grpc-address=0.0.0.0:10905 --http-address=0.0.0.0:10906 \\ --store=192.168.31.103:10901 --store=192.168.31.79:10901 \\ --store=192.168.31.103:10903 --store=192.168.31.79:10903 \\ --web.external-prefix=/prometheus --query.timeout=10m \\ --query.max-concurrent=200 --query.max-concurrent-select=40 \\ --http.config=/data/thanos/query-web-config.yml \\ --query.replica-label=replica --log.format=json ExecReload=/usr/bin/kill -HUP TimeoutStartSec=20s Restart=always LimitNOFILE=20480000 [Install] WantedBy=multi-user.target EOF ``` > 注意:`--store` 定义两台主机的 `sidecar` 和 `store` 服务,共上面定义的四个 ## 验证 ```shell $ curl --cacert /data/thanos/certs/ecloud.com.crt https://www.ecloud.com:10906/-/healthy && echo OK ``` ## 参考文档 query官方文档:https://thanos.io/tip/components/query.md/ basic-auth使用方法:https://prometheus.io/docs/guides/basic-auth/ tls使用方法:https://prometheus.io/docs/guides/tls-encryption/